mod utils;
use utils::TestEnv;
#[test]
fn api_getconfig1_basic() {
let env = TestEnv::new();
env.juliaup().arg("add").arg("1.10.10").assert().success();
let output = env
.juliaup()
.arg("api")
.arg("getconfig1")
.assert()
.success()
.get_output()
.stdout
.clone();
let json_str = std::str::from_utf8(&output).unwrap();
let json: serde_json::Value = serde_json::from_str(json_str).unwrap();
assert!(json.get("DefaultChannel").is_some());
assert!(json.get("OtherChannels").is_some());
}
#[test]
fn api_getconfig1_alias_returns_valid_file_path() {
let env = TestEnv::new();
env.juliaup().arg("add").arg("1.10.10").assert().success();
env.juliaup()
.arg("link")
.arg("myalias")
.arg("+1.10.10")
.assert()
.success();
let output = env
.juliaup()
.arg("api")
.arg("getconfig1")
.assert()
.success()
.get_output()
.stdout
.clone();
let json_str = std::str::from_utf8(&output).unwrap();
let json: serde_json::Value = serde_json::from_str(json_str).unwrap();
let channels = json["OtherChannels"].as_array().unwrap();
let alias_channel = channels
.iter()
.find(|c| c["Name"].as_str() == Some("myalias"))
.expect("Could not find alias channel in API output");
let file_path = alias_channel["File"].as_str().unwrap();
assert!(
!file_path.starts_with("alias-to-"),
"File path should not be 'alias-to-...' but was: {}",
file_path
);
assert!(
file_path.contains("julia"),
"File path should contain 'julia' but was: {}",
file_path
);
let version = alias_channel["Version"].as_str().unwrap();
assert!(
!version.starts_with("alias to"),
"Version should not be 'alias to ...' but was: {}",
version
);
assert_eq!(version, "1.10.10");
}
#[test]
fn api_getconfig1_alias_with_args() {
let env = TestEnv::new();
env.juliaup().arg("add").arg("1.10.10").assert().success();
env.juliaup()
.arg("link")
.arg("myalias")
.arg("+1.10.10")
.arg("--")
.arg("--project=@.")
.assert()
.success();
let output = env
.juliaup()
.arg("api")
.arg("getconfig1")
.assert()
.success()
.get_output()
.stdout
.clone();
let json_str = std::str::from_utf8(&output).unwrap();
let json: serde_json::Value = serde_json::from_str(json_str).unwrap();
let channels = json["OtherChannels"].as_array().unwrap();
let alias_channel = channels
.iter()
.find(|c| c["Name"].as_str() == Some("myalias"))
.expect("Could not find alias channel in API output");
let file_path = alias_channel["File"].as_str().unwrap();
assert!(!file_path.starts_with("alias-to-"));
let args = alias_channel["Args"].as_array().unwrap();
assert_eq!(args.len(), 1);
assert_eq!(args[0].as_str().unwrap(), "--project=@.");
}
#[test]
fn api_getconfig1_alias_to_system_channel() {
let env = TestEnv::new();
env.juliaup().arg("add").arg("release").assert().success();
env.juliaup()
.arg("link")
.arg("myrelease")
.arg("+release")
.assert()
.success();
let output = env
.juliaup()
.arg("api")
.arg("getconfig1")
.assert()
.success()
.get_output()
.stdout
.clone();
let json_str = std::str::from_utf8(&output).unwrap();
let json: serde_json::Value = serde_json::from_str(json_str).unwrap();
let channels = json["OtherChannels"].as_array().unwrap();
let alias_channel = channels
.iter()
.find(|c| c["Name"].as_str() == Some("myrelease"))
.expect("Could not find alias channel in API output");
let file_path = alias_channel["File"].as_str().unwrap();
assert!(
!file_path.starts_with("alias-to-"),
"File path should not be 'alias-to-...' but was: {}",
file_path
);
assert!(file_path.contains("julia"));
}