Skip to content

Commit 40ea310

Browse files
authored
Pump hidden through to manifest (#216)
* Pump hidden through to manifest * Add a quick test for this change
1 parent 3c58d47 commit 40ea310

2 files changed

Lines changed: 53 additions & 1 deletion

File tree

crates/tower-package/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ pub struct Parameter {
4343

4444
#[serde(default)]
4545
pub default: String,
46+
47+
#[serde(default)]
48+
pub hidden: bool,
4649
}
4750

4851
#[derive(Clone, Serialize, Deserialize)]
@@ -122,6 +125,7 @@ fn get_parameters(towerfile: &Towerfile) -> Vec<Parameter> {
122125
name: p.name.clone(),
123126
description: Some(p.description.clone()),
124127
default: p.default.clone(),
128+
hidden: p.hidden,
125129
});
126130
}
127131
parameters

crates/tower-package/tests/package_test.rs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use tokio_stream::*;
1212

1313
use config::Towerfile;
1414
use tokio_tar::Archive;
15-
use tower_package::{Manifest, Package, PackageSpec};
15+
use tower_package::{Manifest, Package, PackageSpec, Parameter};
1616
use tower_telemetry::debug;
1717

1818
macro_rules! make_path {
@@ -385,6 +385,54 @@ async fn building_package_spec_from_towerfile() {
385385
assert_eq!(spec.schedule, Some("0 0 * * *".to_string()));
386386
}
387387

388+
#[tokio::test]
389+
async fn it_includes_hidden_parameters_in_manifest() {
390+
let tmp_dir = TmpDir::new("hidden-params")
391+
.await
392+
.expect("Failed to create temp dir");
393+
create_test_file(tmp_dir.to_path_buf(), "Towerfile", "").await;
394+
create_test_file(tmp_dir.to_path_buf(), "main.py", "print('Hello, world!')").await;
395+
396+
let spec = PackageSpec {
397+
invoke: "main.py".to_string(),
398+
base_dir: tmp_dir.to_path_buf(),
399+
towerfile_path: tmp_dir.to_path_buf().join("Towerfile").to_path_buf(),
400+
file_globs: vec!["*.py".to_string()],
401+
parameters: vec![
402+
Parameter {
403+
name: "visible_param".to_string(),
404+
description: Some("A visible parameter".to_string()),
405+
default: "".to_string(),
406+
hidden: false,
407+
},
408+
Parameter {
409+
name: "hidden_param".to_string(),
410+
description: Some("A hidden parameter".to_string()),
411+
default: "secret".to_string(),
412+
hidden: true,
413+
},
414+
],
415+
schedule: None,
416+
import_paths: vec![],
417+
};
418+
419+
let package = Package::build(spec).await.expect("Failed to build package");
420+
let files = read_package_files(package).await;
421+
422+
let manifest = Manifest::from_json(files.get("MANIFEST").unwrap())
423+
.await
424+
.expect("Manifest was not valid JSON");
425+
426+
assert_eq!(manifest.parameters.len(), 2);
427+
428+
let visible = manifest.parameters.iter().find(|p| p.name == "visible_param").unwrap();
429+
assert!(!visible.hidden, "visible_param should not be hidden");
430+
431+
let hidden = manifest.parameters.iter().find(|p| p.name == "hidden_param").unwrap();
432+
assert!(hidden.hidden, "hidden_param should be hidden");
433+
assert_eq!(hidden.default, "secret");
434+
}
435+
388436
// read_package_files reads the contents of a given package and returns a map of the file paths to
389437
// their contents as a collection of strings. Not useful for anything except for testing purposes.
390438
async fn read_package_files(package: Package) -> HashMap<String, String> {

0 commit comments

Comments
 (0)