Commit 39c96419 authored by Wohlgemuth, Jason's avatar Wohlgemuth, Jason
Browse files

fix: Enable ModuleUri hash support for URLs with no path

parent d0b4196c
Loading
Loading
Loading
Loading
Loading
+300 −286
Original line number Diff line number Diff line
@@ -138,81 +138,79 @@ DA:55,0
DA:56,0
DA:58,0
DA:59,0
DA:62,0
DA:64,0
DA:66,0
DA:68,0
DA:69,0
DA:72,0
DA:73,0
DA:70,0
DA:71,0
DA:74,0
DA:77,0
DA:75,0
DA:76,0
DA:79,0
DA:80,0
DA:81,0
DA:82,0
DA:83,0
DA:86,0
DA:87,0
DA:85,0
DA:88,0
DA:89,0
DA:90,0
DA:91,0
DA:92,0
DA:93,0
DA:94,0
DA:95,0
DA:96,0
DA:97,0
DA:98,0
DA:99,0
DA:103,0
DA:104,0
DA:101,0
DA:105,0
DA:106,0
DA:107,0
DA:108,0
DA:112,0
DA:110,0
DA:114,0
DA:116,0
DA:117,0
DA:118,0
DA:119,0
DA:120,0
DA:121,0
DA:122,0
DA:123,0
DA:124,0
DA:129,0
DA:130,0
DA:126,0
DA:131,0
DA:134,0
DA:132,0
DA:133,0
DA:136,0
DA:138,0
DA:141,0
DA:140,0
DA:143,0
DA:145,0
DA:146,0
DA:147,0
DA:148,0
DA:149,0
DA:151,0
DA:153,0
DA:154,0
DA:155,0
DA:156,0
DA:157,0
DA:158,0
DA:159,0
DA:160,0
DA:163,0
DA:164,0
DA:167,0
DA:168,0
DA:161,0
DA:162,0
DA:165,0
DA:166,0
DA:169,0
DA:172,0
DA:170,0
DA:171,0
DA:174,0
DA:175,0
DA:178,0
DA:179,0
DA:183,0
DA:184,0
DA:176,0
DA:177,0
DA:180,0
DA:181,0
DA:185,0
DA:186,0
DA:187,0
DA:190,0
DA:191,0
DA:188,0
DA:189,0
DA:192,0
DA:193,0
DA:194,0
@@ -222,13 +220,15 @@ DA:197,0
DA:198,0
DA:199,0
DA:200,0
DA:201,0
DA:202,0
DA:205,0
DA:208,0
DA:211,0
DA:204,0
DA:207,0
DA:210,0
DA:213,0
DA:216,0
DA:215,0
DA:218,0
DA:220,0
LF:118
LH:0
end_of_record
@@ -374,39 +374,41 @@ FN:556,Label::run
FN:560,Label::using
FN:566,ModuleUri<'_>::from
FN:576,ModuleUri<'_>::hash
FN:590,ModuleUri<'_>::test
FN:591,ModuleUri<'_>::test::check
FN:610,ModuleUri<'_>::working_directory
FN:622,SemanticVersion::from_string
FN:643,Script::expand_arguments
FN:673,Script::expand_arguments_from
FN:706,Script::from_template
FN:735,Script::from_path
FN:747,Script::get_command
FN:753,Script::get_arguments
FN:764,Script::maybe_create_conda_environment
FN:797,Script::maybe_git_clone
FN:804,Script::python_default
FN:817,Script::run
FN:884,Script::with_current_dir
FN:910,Script::with_environment
FN:915,Script::with_envs
FN:924,StringTemplate::new
FN:933,StringTemplate::expand
FN:940,StringTemplate::get_variable
FN:970,StringTemplate::is_handlebars
FN:994,StringTemplate::remove_spaces
FN:1004,add_forward_slash
FN:1012,get_conda_environment_list
FN:1048,get_conda_environment_name
FN:1080,get_extension
FN:1084,get_parent
FN:1097,has_extension
FN:1107,is_stdin_piped
FN:1121,is_stdout_piped
FN:1139,read_file
FN:1153,to_string
FNF:59
FN:600,ModuleUri<'_>::get_whitelist
FN:603,ModuleUri<'_>::is_allowed
FN:606,ModuleUri<'_>::test
FN:607,ModuleUri<'_>::test::check
FN:627,ModuleUri<'_>::working_directory
FN:639,SemanticVersion::from_string
FN:660,Script::expand_arguments
FN:690,Script::expand_arguments_from
FN:723,Script::from_template
FN:752,Script::from_path
FN:764,Script::get_command
FN:770,Script::get_arguments
FN:781,Script::maybe_create_conda_environment
FN:814,Script::maybe_git_clone
FN:821,Script::python_default
FN:834,Script::run
FN:901,Script::with_current_dir
FN:927,Script::with_environment
FN:932,Script::with_envs
FN:941,StringTemplate::new
FN:950,StringTemplate::expand
FN:957,StringTemplate::get_variable
FN:987,StringTemplate::is_handlebars
FN:1011,StringTemplate::remove_spaces
FN:1021,add_forward_slash
FN:1029,get_conda_environment_list
FN:1065,get_conda_environment_name
FN:1097,get_extension
FN:1101,get_parent
FN:1114,has_extension
FN:1124,is_stdin_piped
FN:1138,is_stdout_piped
FN:1156,read_file
FN:1170,to_string
FNF:61
FNDA:1,Command::test
FNDA:1,Config::read
FNDA:1,Config::read_json
@@ -432,8 +434,10 @@ FNDA:0,Label::read
FNDA:0,Label::rejected
FNDA:0,Label::run
FNDA:0,Label::using
FNDA:1,ModuleUri<'_>::from
FNDA:2,ModuleUri<'_>::from
FNDA:1,ModuleUri<'_>::hash
FNDA:0,ModuleUri<'_>::get_whitelist
FNDA:0,ModuleUri<'_>::is_allowed
FNDA:0,ModuleUri<'_>::test
FNDA:0,ModuleUri<'_>::test::check
FNDA:0,ModuleUri<'_>::working_directory
@@ -443,7 +447,7 @@ FNDA:1,Script::expand_arguments_from
FNDA:1,Script::from_template
FNDA:1,Script::from_path
FNDA:1,Script::get_command
FNDA:2,Script::get_arguments
FNDA:1,Script::get_arguments
FNDA:0,Script::maybe_create_conda_environment
FNDA:1,Script::maybe_git_clone
FNDA:0,Script::python_default
@@ -451,7 +455,7 @@ FNDA:1,Script::run
FNDA:1,Script::with_current_dir
FNDA:1,Script::with_environment
FNDA:0,Script::with_envs
FNDA:1,StringTemplate::new
FNDA:2,StringTemplate::new
FNDA:1,StringTemplate::expand
FNDA:1,StringTemplate::get_variable
FNDA:1,StringTemplate::is_handlebars
@@ -493,15 +497,15 @@ DA:383,0
DA:384,0
DA:395,1
DA:396,2
DA:397,2
DA:397,3
DA:399,0
DA:400,0
DA:403,2
DA:404,1
DA:405,2
DA:403,4
DA:404,2
DA:405,4
DA:406,0
DA:408,6
DA:409,1
DA:408,12
DA:409,2
DA:416,1
DA:417,2
DA:418,1
@@ -548,9 +552,9 @@ DA:483,0
DA:485,0
DA:487,1
DA:488,1
DA:489,3
DA:490,3
DA:491,3
DA:489,2
DA:490,2
DA:491,2
DA:492,2
DA:493,1
DA:497,0
@@ -584,8 +588,8 @@ DA:540,0
DA:541,0
DA:542,0
DA:544,1
DA:545,1
DA:546,1
DA:545,3
DA:546,3
DA:548,0
DA:549,0
DA:550,0
@@ -598,9 +602,9 @@ DA:558,0
DA:560,0
DA:561,0
DA:562,0
DA:566,1
DA:567,1
DA:568,2
DA:566,2
DA:567,2
DA:568,3
DA:569,1
DA:570,2
DA:571,0
@@ -611,235 +615,245 @@ DA:578,1
DA:579,1
DA:580,1
DA:581,0
DA:583,4
DA:584,1
DA:586,0
DA:590,0
DA:591,0
DA:592,0
DA:593,0
DA:594,0
DA:583,2
DA:587,2
DA:588,2
DA:590,2
DA:591,2
DA:593,1
DA:596,0
DA:597,0
DA:598,0
DA:600,0
DA:601,0
DA:602,0
DA:603,0
DA:604,0
DA:606,0
DA:607,0
DA:608,0
DA:609,0
DA:610,0
DA:611,0
DA:612,0
DA:613,0
DA:614,0
DA:615,0
DA:616,0
DA:617,0
DA:622,1
DA:623,1
DA:624,3
DA:625,3
DA:626,3
DA:643,1
DA:644,2
DA:647,2
DA:648,1
DA:649,2
DA:650,1
DA:651,1
DA:653,2
DA:657,1
DA:658,1
DA:673,1
DA:674,3
DA:677,2
DA:678,2
DA:679,2
DA:680,2
DA:683,2
DA:685,1
DA:687,2
DA:691,1
DA:692,1
DA:706,1
DA:707,1
DA:708,3
DA:712,2
DA:714,2
DA:716,2
DA:719,1
DA:720,2
DA:721,2
DA:735,1
DA:736,2
DA:737,1
DA:739,0
DA:740,0
DA:743,2
DA:744,1
DA:745,1
DA:747,1
DA:748,1
DA:749,1
DA:750,2
DA:618,0
DA:619,0
DA:621,0
DA:623,0
DA:627,0
DA:628,0
DA:629,0
DA:630,0
DA:631,0
DA:633,0
DA:634,0
DA:639,1
DA:640,1
DA:641,3
DA:642,3
DA:643,3
DA:660,1
DA:661,2
DA:664,2
DA:665,1
DA:666,2
DA:667,1
DA:668,1
DA:670,2
DA:674,1
DA:675,1
DA:690,1
DA:691,2
DA:694,2
DA:695,1
DA:696,2
DA:697,2
DA:700,2
DA:702,1
DA:704,2
DA:708,1
DA:709,1
DA:723,1
DA:724,1
DA:725,3
DA:729,2
DA:731,2
DA:733,2
DA:736,1
DA:737,2
DA:738,2
DA:752,1
DA:753,2
DA:754,1
DA:755,1
DA:756,1
DA:757,2
DA:758,1
DA:756,0
DA:757,0
DA:760,2
DA:764,0
DA:765,0
DA:766,0
DA:767,0
DA:769,0
DA:770,0
DA:771,0
DA:772,0
DA:773,0
DA:774,0
DA:776,0
DA:777,0
DA:778,0
DA:779,0
DA:780,0
DA:761,1
DA:762,1
DA:764,1
DA:765,1
DA:766,1
DA:767,1
DA:770,1
DA:771,1
DA:772,1
DA:773,1
DA:774,2
DA:775,1
DA:777,1
DA:781,0
DA:782,0
DA:783,0
DA:784,0
DA:785,0
DA:786,0
DA:787,0
DA:788,0
DA:792,0
DA:789,0
DA:790,0
DA:791,0
DA:793,0
DA:797,1
DA:798,2
DA:799,2
DA:800,2
DA:801,1
DA:802,1
DA:804,0
DA:794,0
DA:795,0
DA:796,0
DA:797,0
DA:798,0
DA:799,0
DA:801,0
DA:802,0
DA:805,0
DA:806,0
DA:814,0
DA:817,1
DA:809,0
DA:810,0
DA:814,1
DA:815,2
DA:816,2
DA:817,2
DA:818,1
DA:819,1
DA:820,3
DA:821,3
DA:822,7
DA:823,2
DA:824,11
DA:825,3
DA:826,1
DA:827,1
DA:828,1
DA:829,1
DA:821,0
DA:822,0
DA:823,0
DA:831,0
DA:834,1
DA:835,2
DA:837,0
DA:838,0
DA:841,1
DA:835,1
DA:836,1
DA:837,2
DA:838,2
DA:839,5
DA:840,1
DA:841,6
DA:842,2
DA:843,4
DA:844,10
DA:845,4
DA:848,4
DA:849,2
DA:851,0
DA:852,0
DA:855,3
DA:856,3
DA:857,6
DA:858,0
DA:859,0
DA:862,6
DA:863,3
DA:864,9
DA:865,3
DA:866,15
DA:867,15
DA:868,3
DA:870,5
DA:871,5
DA:872,2
DA:843,1
DA:844,1
DA:845,1
DA:846,1
DA:851,1
DA:852,1
DA:854,0
DA:855,0
DA:858,1
DA:859,1
DA:860,2
DA:861,5
DA:862,2
DA:865,2
DA:866,1
DA:868,0
DA:869,0
DA:872,1
DA:873,1
DA:874,2
DA:875,0
DA:876,0
DA:877,0
DA:884,1
DA:885,2
DA:886,1
DA:910,1
DA:911,1
DA:912,1
DA:915,0
DA:916,0
DA:917,0
DA:924,1
DA:926,1
DA:933,1
DA:934,4
DA:935,3
DA:940,1
DA:879,2
DA:880,1
DA:881,3
DA:882,1
DA:883,5
DA:884,5
DA:885,1
DA:887,5
DA:888,5
DA:889,2
DA:892,0
DA:893,0
DA:894,0
DA:901,1
DA:902,2
DA:903,1
DA:927,1
DA:928,1
DA:929,1
DA:932,0
DA:933,0
DA:934,0
DA:941,2
DA:942,2
DA:943,1
DA:944,2
DA:946,0
DA:970,1
DA:971,2
DA:972,2
DA:973,1
DA:974,0
DA:976,0
DA:994,1
DA:995,2
DA:996,1
DA:997,0
DA:999,3
DA:1000,1
DA:1004,1
DA:1005,2
DA:1006,0
DA:1008,2
DA:1012,1
DA:950,1
DA:951,4
DA:952,3
DA:957,1
DA:958,2
DA:959,2
DA:960,1
DA:961,2
DA:963,0
DA:987,1
DA:988,2
DA:989,2
DA:990,1
DA:991,0
DA:993,0
DA:1011,1
DA:1012,2
DA:1013,1
DA:1014,2
DA:1015,2
DA:1016,5
DA:1019,1
DA:1021,2
DA:1023,4
DA:1048,1
DA:1049,1
DA:1050,1
DA:1051,6
DA:1063,1
DA:1065,0
DA:1014,0
DA:1016,4
DA:1017,2
DA:1021,1
DA:1022,2
DA:1023,0
DA:1025,2
DA:1029,1
DA:1030,1
DA:1031,2
DA:1032,2
DA:1033,5
DA:1036,1
DA:1038,2
DA:1040,4
DA:1065,1
DA:1066,1
DA:1067,1
DA:1068,6
DA:1080,1
DA:1081,1
DA:1084,1
DA:1085,3
DA:1082,0
DA:1097,1
DA:1098,1
DA:1107,0
DA:1108,0
DA:1109,0
DA:1111,0
DA:1121,0
DA:1122,0
DA:1123,0
DA:1101,1
DA:1102,3
DA:1114,1
DA:1115,1
DA:1124,0
DA:1125,0
DA:1139,1
DA:1140,1
DA:1141,3
DA:1142,2
DA:1143,9
DA:1144,3
DA:1146,1
DA:1147,5
DA:1148,1
DA:1151,1
DA:1153,1
DA:1154,9
LF:374
LH:220
DA:1126,0
DA:1128,0
DA:1138,0
DA:1139,0
DA:1140,0
DA:1142,0
DA:1156,1
DA:1157,1
DA:1158,3
DA:1159,1
DA:1160,9
DA:1161,3
DA:1163,1
DA:1164,5
DA:1165,1
DA:1168,2
DA:1170,1
DA:1171,4
LF:384
LH:224
end_of_record
+13 −3
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ pub enum ModuleUri<'a> {
    ///   "uri": "ssh://git@code.ornl.gov/GSHS/GDS/Common/PIPE/module-a"
    /// }
    /// ```
    //TODO: Need to implement Serialize/Deserialize for URI - https://serde.rs/impl-serialize.html
    //TODO: Implement Serialize/Deserialize for URI - https://serde.rs/impl-serialize.html
    Url(URI<'a>),
    Unknown(String),
}
@@ -580,9 +580,19 @@ impl ModuleUri<'_> {
                    | Some(value) => value.clone().to_string().replace('.', "_"),
                    | None => "".to_string(),
                };
                let segments = uri.path().segments().iter().map(|s| s.to_string()).collect::<Vec<_>>();
                let segments = uri
                    .path()
                    .segments()
                    .iter()
                    .map(|s| s.to_string())
                    .filter(|s| !s.is_empty())
                    .collect::<Vec<_>>();
                if segments.is_empty() {
                    host.to_string()
                } else {
                    format!("{}_{}", host, segments[segments.len() - 2..].join("_").to_lowercase())
                }
            }
            | ModuleUri::File(value) => value.clone().into_os_string().into_string().unwrap(),
            | ModuleUri::Unknown(_) => unimplemented!(),
        }
+8 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ fn test_config_read_json() {
    let path = "tests/fixtures/config.json";
    let config = Config::read_json(PathBuf::from(path)).expect("=> [ERROR] Cannot import config in tests");
    assert_eq!(config.variables.clone().unwrap().get("ANSWER").unwrap(), 42);
    assert_eq!(config.modules.len(), 4);
    assert_eq!(config.modules.len(), 3);
}

#[test]
@@ -170,11 +170,18 @@ fn test_module_uri() {
        }
        | _ => panic!(),
    }
}

#[test]
fn test_module_uri_hash() {
    let expected = "code_ornl_gov_pipe_module-a";
    let url = ModuleUri::from("http://code.ornl.gov/PIPE/module-a");
    assert_eq!(expected, url.hash());
    let url = ModuleUri::from("https://code.ornl.gov/GSHS/GDS/Common/PIPE/module-a");
    assert_eq!(expected, url.hash());
    let expected = "example_com";
    let url = ModuleUri::from("http://example.com");
    assert_eq!(expected, url.hash());
}

#[test]