@@ -12,7 +12,7 @@ use tokio_stream::*;
1212
1313use config:: Towerfile ;
1414use tokio_tar:: Archive ;
15- use tower_package:: { Manifest , Package , PackageSpec } ;
15+ use tower_package:: { Manifest , Package , PackageSpec , Parameter } ;
1616use tower_telemetry:: debug;
1717
1818macro_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.
390438async fn read_package_files ( package : Package ) -> HashMap < String , String > {
0 commit comments