Skip to content

Commit

Permalink
Test the channel selection from manifest file
Browse files Browse the repository at this point in the history
  • Loading branch information
davidanthoff authored and tecosaur committed Oct 27, 2024
1 parent 2efd1fd commit 103e5c1
Showing 1 changed file with 201 additions and 0 deletions.
201 changes: 201 additions & 0 deletions tests/channel_selection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,204 @@ fn channel_selection() {
.failure()
.stderr("ERROR: `pr1` is not installed. Please run `juliaup add pr1` to install pull request channel if available.\n");
}

#[test]
fn manifest_version_selection() {
let depot_dir = assert_fs::TempDir::new().unwrap();

Command::cargo_bin("juliaup")
.unwrap()
.arg("add")
.arg("1.6.2")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.assert()
.success()
.stdout("");

Command::cargo_bin("juliaup")
.unwrap()
.arg("add")
.arg("1.10.1")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.assert()
.success()
.stdout("");

Command::cargo_bin("juliaup")
.unwrap()
.arg("add")
.arg("1.11.1")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.assert()
.success()
.stdout("");

Command::cargo_bin("juliaup")
.unwrap()
.arg("default")
.arg("1.11.1")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.assert()
.success()
.stdout("");

Command::cargo_bin("julia")
.unwrap()
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.assert()
.success()
.stdout("1.11.1");

let proj1_dir = assert_fs::TempDir::new().unwrap();

// We are adding and then removing a package here to force generation of an actual Project.toml
Command::cargo_bin("julia")
.unwrap()
.arg("+1.10.1")
.arg("-e")
.arg("using Pkg; Pkg.activate(\".\"); Pkg.add(\"StringBuilders\"); Pkg.rm(\"StringBuilders\"); print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&proj1_dir)
.assert()
.success()
.stdout("1.10.1");

// First we try this with the feature disabled
Command::cargo_bin("julia")
.unwrap()
.arg("--project=.")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&proj1_dir)
.assert()
.success()
.stdout("1.11.1");

// Now we enable the feature
Command::cargo_bin("juliaup")
.unwrap()
.arg("config")
.arg("featuremanifestsupport")
.arg("true")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.assert()
.success()
.stdout("");

Command::cargo_bin("julia")
.unwrap()
.arg("--project=.")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&proj1_dir)
.assert()
.success()
.stdout("1.10.1");

// TODO This currently fails, but it shouldn't
Command::cargo_bin("julia")
.unwrap()
.arg("--project")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&proj1_dir)
.assert()
.success()
.stdout("1.10.1");

Command::cargo_bin("julia")
.unwrap()
.arg("--project=@.")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&proj1_dir)
.assert()
.success()
.stdout("1.10.1");

let sub_dir1 = &proj1_dir.path().join("subdir1");
std::fs::create_dir(&sub_dir1).unwrap();

Command::cargo_bin("julia")
.unwrap()
.arg("--project=.")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&sub_dir1)
.assert()
.success()
.stdout("1.11.1");

// TODO This currently fails, but it shouldn't
Command::cargo_bin("julia")
.unwrap()
.arg("--project")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&sub_dir1)
.assert()
.success()
.stdout("1.10.1");

Command::cargo_bin("julia")
.unwrap()
.arg("--project=@.")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&sub_dir1)
.assert()
.success()
.stdout("1.10.1");

// Now we try with a Julia version that generates schema v1 manifests
let proj2_dir = assert_fs::TempDir::new().unwrap();

// We are adding and then removing a package here to force generation of an actual Project.toml
Command::cargo_bin("julia")
.unwrap()
.arg("+1.6.2")
.arg("-e")
.arg("using Pkg; Pkg.activate(\".\"); Pkg.add(\"StringBuilders\"); Pkg.rm(\"StringBuilders\"); print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&proj2_dir)
.assert()
.success()
.stdout("1.6.2");

// It shouldn't pick up the version from the manifest, as it isn't stored in the manifest
Command::cargo_bin("julia")
.unwrap()
.arg("--project=.")
.arg("-e")
.arg("print(VERSION)")
.env("JULIA_DEPOT_PATH", depot_dir.path())
.env("JULIAUP_DEPOT_PATH", depot_dir.path())
.current_dir(&proj2_dir)
.assert()
.success()
.stdout("1.11.1");
}

0 comments on commit 103e5c1

Please sign in to comment.