diff --git a/docs/book/src/installing.md b/docs/book/src/installing.md index a6aa2a2..b231bb5 100644 --- a/docs/book/src/installing.md +++ b/docs/book/src/installing.md @@ -476,7 +476,7 @@ prints the exact source-build command where no reviewed release exists. **Commands on PATH.** `curl`, `tar`, `git`, `bash`, `python3`, and `sha256sum` (`brew install coreutils` supplies `sha256sum` on macOS). Yupana verifies its -three pinned v0.12.7 archives in-process and needs only `curl` and `tar` for installation. The `everything` +three pinned v0.16.2 archives in-process and needs only `curl` and `tar` for installation. The `everything` profile also needs Go 1.22+. Rust is only needed for the source builds above. **Accounts and servers.** The default local single-user install needs neither diff --git a/docs/book/src/reference.md b/docs/book/src/reference.md index 9d6fb67..057f407 100644 --- a/docs/book/src/reference.md +++ b/docs/book/src/reference.md @@ -89,8 +89,8 @@ with an absent control, reader-path retrieval, and an idempotent replay. Use `--skip-install` when package installation belongs to another system; the version and functional checks still run. -Yupana installs from its checksum-pinned v0.12.7 release and proves `callers` on -an isolated fixture repository. Tambo builds Desire Path from the revision its `v0.3.2` tag names (`1f457ec`), stamps +Yupana installs from its checksum-pinned v0.16.2 release and proves `callers` on +an isolated fixture repository. Tambo builds Desire Path from the revision its `v0.10.0` tag names (`0681233`), stamps that identity into `dp version`, and proves an isolated ingest/list round trip. Neither verification can write into the user's normal Yupana state or Desire Path DB. diff --git a/docs/book/src/using.md b/docs/book/src/using.md index 25bbb83..4721969 100644 --- a/docs/book/src/using.md +++ b/docs/book/src/using.md @@ -40,7 +40,7 @@ version and functional checks still run. `code-intel` adds checksum-pinned Yupana and proves a caller edge in a temporary repository with isolated HOME/state. `everything` additionally installs Desire -Path by building the revision its `v0.3.2` tag names, reads it back from `dp version`, and +Path by building the revision its `v0.10.0` tag names, reads it back from `dp version`, and proves ingest/list against a temporary database. These checks never use the user's normal evidence stores. `caboodle-intent.toml` names the intended use, zero or more themed crew members, diff --git a/docs/knowledge/repository-knowledge.json b/docs/knowledge/repository-knowledge.json index 0276da0..5d41e68 100644 --- a/docs/knowledge/repository-knowledge.json +++ b/docs/knowledge/repository-knowledge.json @@ -46,7 +46,7 @@ "source": "src/adapter.rs", "subject": "http://aegis.gastown.local/ontology/code/tambo/src%2Fadapter.rs", "summary": "The Adapter trait separates desired version, installation, version read-back and functional verification. Built-in adapters integrate the selected stack tools; package adapters may bind verification to PATH executables.", - "source_sha256": "ae8f7906c950a5b7f51a9373034323b501b7694c5c6b953d02c39962f76966e7", + "source_sha256": "5d4ac5edb6e61afa747afa1e341ebfb383816cc392c95e20283ec2d1350f2465", "properties": { "interfaceKind": "library", "publicName": "caboodle::adapter::Adapter" diff --git a/members/shuttle.toml b/members/shuttle.toml index ac471db..8acda1d 100644 --- a/members/shuttle.toml +++ b/members/shuttle.toml @@ -7,8 +7,8 @@ # ed25519) is resolved by pip from the package index at install time. name = "shuttle" kind = "python-wheel" -repo = "scbrown/shuttle" -version = "0.5.0" +repo = "intigraph/shuttle" +version = "0.6.1" tag = "v{version}" asset = "shuttle-{version}-py3-none-any.whl" version_argv = ["version"] @@ -17,7 +17,7 @@ prerequisites = ["python3"] profiles = ["crew", "everything"] [sha256] -any = "537630cd798cbce99c82dcf209529c8408076e8b812dbcdd941b9c78bfba6dee" +any = "a25ecb134aa2c5238ec533297dde0445952bca99c34abb9bba95247d8df55b86" # Every released shuttle (0.2.0 onward) prints this line in --help. [[programs]] diff --git a/src/adapter.rs b/src/adapter.rs index e0d3fae..1836d5b 100644 --- a/src/adapter.rs +++ b/src/adapter.rs @@ -766,7 +766,7 @@ struct Yupana; struct DesirePath; struct Camayoc; -const BOBBIN_VERSION: &str = "0.27.3"; +const BOBBIN_VERSION: &str = "0.30.0"; impl Adapter for Camayoc { fn name(&self) -> ToolName { @@ -938,7 +938,7 @@ impl Adapter for Bobbin { } } -const YUPANA_VERSION: &str = "0.12.7"; +const YUPANA_VERSION: &str = "0.16.2"; impl Adapter for Yupana { fn name(&self) -> ToolName { @@ -1012,15 +1012,15 @@ fn yupana_release_for(arch: &str, os: &str) -> Result<(&'static str, &'static st match (arch, os) { ("x86_64", "linux") => Ok(( "x86_64-linux-gnu", - "44bfefb529a5977cd6ced67e662ca1cab87ec53e62a4cdf173ebbb367b5f8667", + "565507459d3d67b2cc73b6ebd91f784f0522689c5b62257a8fde82793580dc5d", )), ("aarch64", "macos") => Ok(( "aarch64-apple-darwin", - "7f02e1c96b97a21abbc5478341d5ee44d10ea860b803e45d721b1c5a66647770", + "9f3682c6f4dffd7365248ae2d686e9fcdca26ba08ebd915f8ce692e8111179a2", )), ("x86_64", "macos") => Ok(( "x86_64-apple-darwin", - "94b872a6cd3ea9de4bf4271b1d16fa569f1979b4d216e0fd307d88e1b66364a2", + "7763d171c7f6e2df395bdf9961a79991b66b4876c3394ce970d1f3e2cddcb4ed", )), _ => bail!("Yupana v{YUPANA_VERSION} has no checksummed Tambo release for {arch}-{os}"), } @@ -1104,8 +1104,8 @@ fn desire_path_program() -> Result { Ok(PathBuf::from(home).join(".local/bin/dp")) } -const DESIRE_PATH_REVISION: &str = "1f457ec2f30c4a0d47b6f4d1b4cc0f3078f39662"; -const DESIRE_PATH_VERSION: &str = "v0.3.2"; +const DESIRE_PATH_REVISION: &str = "06812336fda6a6fd3fe4cbcae2d50a303e95a024"; +const DESIRE_PATH_VERSION: &str = "v0.10.0"; impl Adapter for DesirePath { fn name(&self) -> ToolName { diff --git a/tests/cli.rs b/tests/cli.rs index 33c2798..212ac82 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -164,7 +164,7 @@ exit 2 bin, "bobbin", r#" -if [ "${1:-}" = "--version" ]; then echo 'bobbin 0.27.3'; exit 0; fi +if [ "${1:-}" = "--version" ]; then echo 'bobbin 0.30.0'; exit 0; fi if [ "${1:-}" = "init" ]; then mkdir -p .bobbin; exit 0; fi if [ "${1:-}" = "index" ]; then if [ -f fixture.rs ]; then cp fixture.rs .bobbin/indexed; else : > .bobbin/indexed; fi @@ -222,7 +222,7 @@ exit 2 bin, "yupana", r#" -if [ "${1:-}" = "--version" ]; then echo 'yupana 0.12.7'; exit 0; fi +if [ "${1:-}" = "--version" ]; then echo 'yupana 0.16.2'; exit 0; fi if [ "${1:-}" = "analyze" ]; then exit 0; fi if [ "${1:-}" = "callers" ]; then if [ -f fixture.rs ]; then echo 'fixture.rs:2 caboodle_yupana_caller'; @@ -236,7 +236,7 @@ exit 2 bin, "dp", r#" -if [ "${1:-}" = "version" ]; then echo 'dp v0.3.2 (1f457ec)'; exit 0; fi +if [ "${1:-}" = "version" ]; then echo 'dp v0.10.0 (0681233)'; exit 0; fi db='' while [ "$#" -gt 0 ]; do if [ "$1" = "--db" ]; then shift; db=$1; fi @@ -710,7 +710,7 @@ fn check_updates_is_green_when_reviewed_versions_run_and_red_on_drift() { .arg("check-updates") .assert() .success() - .stdout(predicate::str::contains("bobbin: current (bobbin 0.27.3)")); + .stdout(predicate::str::contains("bobbin: current (bobbin 0.30.0)")); fake_tool( &bin, @@ -754,7 +754,7 @@ fn package_owned_tools_are_judged_by_receipt_and_never_installed_by_caboodle() { // aegis-6f1 option A: dpkg owns bobbin, so caboodle reads the package // receipt (Debian revision stripped) and leaves delivery to the package lane. for (deb_version, verdict) in [ - ("0.28.0", "bobbin: ahead of reviewed pin; downgrade refused (package-owned: apt bobbin 0.28.0;"), + ("0.31.0", "bobbin: ahead of reviewed pin; downgrade refused (package-owned: apt bobbin 0.31.0;"), ("0.1.0-2", "bobbin: behind reviewed pin; delivered by the package lane, not installed by caboodle (package-owned: apt bobbin 0.1.0;"), ] { let root = tempfile::tempdir().unwrap(); @@ -874,12 +874,12 @@ esac exit 1"#; // (installed by brew, tap stable, bobbin on PATH, expected stdout, brew verb expected) for (installed, stable, path_bobbin, expect, verb) in [ - (None, "0.27.3", None, "bobbin: delivered by brew (scbrown/tap 0.27.3) and verified", Some("install")), - (Some("0.28.0"), "0.28.0", None, "bobbin: current stable channel (package-owned: brew scbrown/tap 0.28.0;", None), - (Some("0.28.0"), "0.29.0", None, "bobbin: delivered by brew (scbrown/tap 0.29.0) and verified", Some("upgrade")), - (Some("0.20.0"), "0.27.3", None, "bobbin: delivered by brew (scbrown/tap 0.27.3) and verified", Some("upgrade")), + (None, "0.30.0", None, "bobbin: delivered by brew (scbrown/tap 0.30.0) and verified", Some("install")), + (Some("0.31.0"), "0.31.0", None, "bobbin: current stable channel (package-owned: brew scbrown/tap 0.31.0;", None), + (Some("0.31.0"), "0.32.0", None, "bobbin: delivered by brew (scbrown/tap 0.32.0) and verified", Some("upgrade")), + (Some("0.20.0"), "0.30.0", None, "bobbin: delivered by brew (scbrown/tap 0.30.0) and verified", Some("upgrade")), (None, "0.20.0", None, "bobbin: current", None), - (None, "0.27.3", Some("0.99.0"), "bobbin: installed bobbin 0.99.0 is newer than scbrown/tap 0.27.3; not installed by brew", None), + (None, "0.30.0", Some("0.99.0"), "bobbin: installed bobbin 0.99.0 is newer than scbrown/tap 0.30.0; not installed by brew", None), ] { let root = tempfile::tempdir().unwrap(); let bin = root.path().join("bin"); @@ -890,10 +890,10 @@ exit 1"#; .assert() .success(); let fake = fs::read_to_string(bin.join("bobbin")).unwrap(); - fs::write(bin.join("bobbin"), fake.replace("echo 'bobbin 0.27.3';", "if [ -f \"$HOME/brew-installed\" ]; then printf 'bobbin %s\\n' \"$(cat \"$HOME/brew-installed\")\"; else echo 'bobbin 0.27.3'; fi;")).unwrap(); + fs::write(bin.join("bobbin"), fake.replace("echo 'bobbin 0.30.0';", "if [ -f \"$HOME/brew-installed\" ]; then printf 'bobbin %s\\n' \"$(cat \"$HOME/brew-installed\")\"; else echo 'bobbin 0.30.0'; fi;")).unwrap(); if let Some(version) = path_bobbin { let fake = fs::read_to_string(bin.join("bobbin")).unwrap(); - fs::write(bin.join("bobbin"), fake.replace("bobbin 0.27.3", &format!("bobbin {version}"))).unwrap(); + fs::write(bin.join("bobbin"), fake.replace("bobbin 0.30.0", &format!("bobbin {version}"))).unwrap(); } fs::write(root.path().join("brew-stable"), stable).unwrap(); if let Some(version) = installed { @@ -978,7 +978,7 @@ fn check_updates_rejects_stale_path_despite_current_cargo_copy() { fake_tool( &cargo_bin, "dp", - "if [ \"${1:-}\" = version ]; then echo 'dp v0.3.2 (1f457ec)'; exit 0; fi\nexit 2", + "if [ \"${1:-}\" = version ]; then echo 'dp v0.10.0 (0681233)'; exit 0; fi\nexit 2", ); command(root.path(), &bin) @@ -992,7 +992,7 @@ fn check_updates_rejects_stale_path_despite_current_cargo_copy() { .assert() .failure() .stdout(predicate::str::contains( - "desire-path: version drift; review required (installed: dp c964ea2 (c964ea2); reviewed: dp v0.3.2 (1f457ec))", + "desire-path: version drift; review required (installed: dp c964ea2 (c964ea2); reviewed: dp v0.10.0 (0681233))", )); } @@ -1007,7 +1007,7 @@ fn check_updates_accepts_current_path_despite_stale_cargo_copy() { fake_tool( &bin, "dp", - "if [ \"${1:-}\" = version ]; then echo 'dp 0.3.2 (1f457ec)'; exit 0; fi\nexit 2", + "if [ \"${1:-}\" = version ]; then echo 'dp 0.10.0 (0681233)'; exit 0; fi\nexit 2", ); fake_tool( &cargo_bin, @@ -1026,7 +1026,7 @@ fn check_updates_accepts_current_path_despite_stale_cargo_copy() { .assert() .success() .stdout(predicate::str::contains( - "desire-path: current (dp 0.3.2 (1f457ec))", + "desire-path: current (dp 0.10.0 (0681233))", )); } @@ -1059,7 +1059,7 @@ fn expanded_adapter_negative_controls_turn_verification_red() { fake_tool( &yupana_bin, "yupana", - "if [ \"${1:-}\" = --version ]; then echo 'yupana 0.12.7'; exit 0; fi\nif [ \"${1:-}\" = analyze ]; then exit 0; fi\nif [ \"${1:-}\" = callers ]; then echo 'fixture.rs:2 caboodle_yupana_caller'; exit 0; fi\nexit 2", + "if [ \"${1:-}\" = --version ]; then echo 'yupana 0.16.2'; exit 0; fi\nif [ \"${1:-}\" = analyze ]; then exit 0; fi\nif [ \"${1:-}\" = callers ]; then echo 'fixture.rs:2 caboodle_yupana_caller'; exit 0; fi\nexit 2", ); command(yupana_root.path(), &yupana_bin) .args(["plan", "--profile", "code-intel"]) @@ -1080,7 +1080,7 @@ fn expanded_adapter_negative_controls_turn_verification_red() { fake_tool( &dp_bin, "dp", - "if [ \"${1:-}\" = version ]; then echo 'dp v0.3.2 (1f457ec)'; exit 0; fi\necho '[{\"tool_name\":\"caboodle_desire_path_marker\"}]'", + "if [ \"${1:-}\" = version ]; then echo 'dp v0.10.0 (0681233)'; exit 0; fi\necho '[{\"tool_name\":\"caboodle_desire_path_marker\"}]'", ); command(dp_root.path(), &dp_bin) .args(["plan", "--profile", "everything"]) @@ -1143,7 +1143,7 @@ fn retrieval_plan_with_bobbin( let bin = root.path().join("bin"); fs::create_dir(&bin).unwrap(); install_fakes(root.path(), &bin); - if !functional || version != "0.27.3" { + if !functional || version != "0.30.0" { // Any subcommand but --version fails like a clap argument error, which is // what an old bobbin says to the reviewed release's verification contract. fake_tool( @@ -1170,14 +1170,14 @@ fn apply_skip_install_refuses_a_stale_tool_naming_both_versions() { .assert() .failure() .stderr(predicate::str::contains("0.1.0")) - .stderr(predicate::str::contains("0.27.3")); + .stderr(predicate::str::contains("0.30.0")); } #[test] fn apply_skip_install_accepts_the_reviewed_release() { // Control for the test above: without it, "fails on a skew" is // indistinguishable from "apply --skip-install always fails". - let (root, bin) = retrieval_plan_with_bobbin("0.27.3", true); + let (root, bin) = retrieval_plan_with_bobbin("0.30.0", true); command(root.path(), &bin) .args(["apply", "--skip-install"]) .assert() @@ -1213,7 +1213,7 @@ fn verify_names_a_version_skew_before_the_tools_own_error() { #[test] fn verify_does_not_claim_a_skew_when_the_reviewed_release_fails() { // Control: the skew message must not fire on every verification failure. - let (root, bin) = retrieval_plan_with_bobbin("0.27.3", false); + let (root, bin) = retrieval_plan_with_bobbin("0.30.0", false); command(root.path(), &bin) .arg("verify") .assert() @@ -2095,16 +2095,16 @@ fn release_fixture(root: &Path, bin: &Path, broken: bool, bad_checksum: bool) { let stage = root.join("release-stage"); fs::create_dir(&stage).unwrap(); let body = if broken { - "#!/bin/sh\nif [ \"$1\" = --version ]; then echo 'bobbin 0.27.4'; exit 0; fi\nexit 9\n" + "#!/bin/sh\nif [ \"$1\" = --version ]; then echo 'bobbin 0.30.1'; exit 0; fi\nexit 9\n" .to_owned() } else { fs::read_to_string(bin.join("bobbin")) .unwrap() - .replace("0.27.3", "0.27.4") + .replace("0.30.0", "0.30.1") }; fs::write(stage.join("bobbin"), body).unwrap(); fs::set_permissions(stage.join("bobbin"), fs::Permissions::from_mode(0o755)).unwrap(); - let archive = root.join("bobbin-v0.27.4-x86_64-unknown-linux-gnu.tar.gz"); + let archive = root.join("bobbin-v0.30.1-x86_64-unknown-linux-gnu.tar.gz"); assert!(std::process::Command::new("tar") .args(["-czf"]) .arg(&archive) @@ -2122,10 +2122,10 @@ fn release_fixture(root: &Path, bin: &Path, broken: bool, bad_checksum: bool) { }; fs::write( root.join("SHA256SUMS.txt"), - format!("{digest} bobbin-v0.27.4-x86_64-unknown-linux-gnu.tar.gz\n"), + format!("{digest} bobbin-v0.30.1-x86_64-unknown-linux-gnu.tar.gz\n"), ) .unwrap(); - fs::write(root.join("latest.json"), r#"{"tag_name":"v0.27.4","draft":false,"prerelease":false,"assets":[{"name":"bobbin-v0.27.4-x86_64-unknown-linux-gnu.tar.gz"},{"name":"SHA256SUMS.txt"}]}"#).unwrap(); + fs::write(root.join("latest.json"), r#"{"tag_name":"v0.30.1","draft":false,"prerelease":false,"assets":[{"name":"bobbin-v0.30.1-x86_64-unknown-linux-gnu.tar.gz"},{"name":"SHA256SUMS.txt"}]}"#).unwrap(); fake_tool( bin, "curl", @@ -2141,7 +2141,7 @@ done case "$url" in */releases/latest) cat "$HOME/latest.json" ;; */SHA256SUMS.txt) cp "$HOME/SHA256SUMS.txt" "$output" ;; - */bobbin-v0.27.4-x86_64-unknown-linux-gnu.tar.gz) cp "$HOME/bobbin-v0.27.4-x86_64-unknown-linux-gnu.tar.gz" "$output" ;; + */bobbin-v0.30.1-x86_64-unknown-linux-gnu.tar.gz) cp "$HOME/bobbin-v0.30.1-x86_64-unknown-linux-gnu.tar.gz" "$output" ;; *) echo "unexpected URL" >&2; exit 99 ;; esac "#, @@ -2164,9 +2164,9 @@ fn published_release_update_ignores_stale_pin_and_keeps_backup() { .args(["update-release", "--tool", "bobbin"]) .assert() .success() - .stdout(predicate::str::contains("installed and verified v0.27.4")); + .stdout(predicate::str::contains("installed and verified v0.30.1")); let state = fs::read_to_string(root.path().join(".caboodle/state.json")).unwrap(); - assert!(state.contains("0.27.4")); + assert!(state.contains("0.30.1")); let backups: Vec<_> = fs::read_dir(root.path().join(".caboodle/release-backups/bobbin")) .unwrap() .collect(); @@ -2265,7 +2265,7 @@ fn reviewed_pin_update_cannot_undo_newer_published_binary() { let bin = root.path().join("bin"); fs::create_dir(&bin).unwrap(); release_fixture(root.path(), &bin, false, false); - fake_tool(&bin, "bobbin", "echo 'bobbin 0.27.4'"); + fake_tool(&bin, "bobbin", "echo 'bobbin 0.30.1'"); let before = fs::read(bin.join("bobbin")).unwrap(); command(root.path(), &bin) .arg("update") @@ -2286,11 +2286,11 @@ fn published_release_missing_assets_and_ambiguous_identity_never_install() { if mode == "missing" { fs::write( root.path().join("latest.json"), - r#"{"tag_name":"v0.27.4","draft":false,"prerelease":false,"assets":[]}"#, + r#"{"tag_name":"v0.30.1","draft":false,"prerelease":false,"assets":[]}"#, ) .unwrap(); } else if mode == "equal" { - fake_tool(&bin, "bobbin", "echo 'bobbin 0.27.4'"); + fake_tool(&bin, "bobbin", "echo 'bobbin 0.30.1'"); } else if mode == "unreadable" { fake_tool(&bin, "bobbin", "echo 'bobbin unknown'"); } @@ -2311,10 +2311,10 @@ fn published_release_missing_assets_and_ambiguous_identity_never_install() { #[cfg(all(target_os = "linux", target_arch = "x86_64"))] fn local_source_builds_refuse_equal_releases_but_accept_newer_ones() { for (base, suffix, check) in [ - ("0.27.4", "abcdef012345", false), - ("0.27.4", "abcdef012345.dirty", true), - ("0.27.3", "abcdef012345", false), - ("0.27.3", "abcdef012345.dirty", false), + ("0.30.1", "abcdef012345", false), + ("0.30.1", "abcdef012345.dirty", true), + ("0.30.0", "abcdef012345", false), + ("0.30.0", "abcdef012345.dirty", false), ] { let root = tempfile::tempdir().unwrap(); let bin = root.path().join("bin"); @@ -2323,7 +2323,7 @@ fn local_source_builds_refuse_equal_releases_but_accept_newer_ones() { let script = fs::read_to_string(bin.join("bobbin")).unwrap(); fs::write( bin.join("bobbin"), - script.replace("0.27.3", &format!("{base}+local.{suffix}")), + script.replace("0.30.0", &format!("{base}+local.{suffix}")), ) .unwrap(); let before = fs::read(bin.join("bobbin")).unwrap(); @@ -2332,7 +2332,7 @@ fn local_source_builds_refuse_equal_releases_but_accept_newer_ones() { if check { cmd.arg("--check"); } - if base == "0.27.4" { + if base == "0.30.1" { cmd.assert() .failure() .stderr(predicate::str::contains("local source build installed")); @@ -2835,7 +2835,7 @@ fn project_settings_rejects_empty_or_invalid_success_receipts() { #[test] fn install_continues_after_failure_invalidates_old_proof_and_resumes() { - let (root, bin) = retrieval_plan_with_bobbin("0.27.3", true); + let (root, bin) = retrieval_plan_with_bobbin("0.30.0", true); command(root.path(), &bin) .args(["install", "--skip-install"]) .assert() @@ -2873,7 +2873,7 @@ fn install_continues_after_failure_invalidates_old_proof_and_resumes() { #[test] fn apply_reports_all_version_failures_and_still_applies_later_tools() { - let (root, bin) = retrieval_plan_with_bobbin("0.27.3", true); + let (root, bin) = retrieval_plan_with_bobbin("0.30.0", true); fake_tool(&bin, "quipu", "echo 'broken quipu' >&2; exit 1"); fs::write(root.path().join("camayoc/REVISION"), "").unwrap(); command(root.path(), &bin) @@ -2951,7 +2951,7 @@ fn release_download_recovers_visibly_from_server_and_transport_errors() { .and(predicate::str::contains("retrying in 1s")) .and(predicate::str::contains("succeeded on attempt 2/3")), ) - .stdout(predicate::str::contains("installed and verified v0.27.4")); + .stdout(predicate::str::contains("installed and verified v0.30.1")); assert_eq!( fs::read_to_string(root.path().join("attempts")).unwrap(), "2" @@ -3557,7 +3557,7 @@ fn apply_registers_exactly_the_hook_bundles_of_the_plans_tools() { // script, where quipu must NOT be registered, and a Gas Town host that has it. use std::os::unix::fs::PermissionsExt; for gas_town in [false, true] { - let (root, bin) = retrieval_plan_with_bobbin("0.27.3", true); + let (root, bin) = retrieval_plan_with_bobbin("0.30.0", true); if gas_town { let hooks = root.path().join(".gt/hooks"); fs::create_dir_all(&hooks).unwrap(); @@ -3622,7 +3622,7 @@ fn verify_asserts_the_hook_bundles_without_a_crew_plan_and_before_the_tools() { // assert them only inside crew verification, which a plan without a crew // section never reaches, and only after every tool had verified, so on the // measured Mac a bobbin skew failed first and the bundles went unasserted. - let (root, bin) = retrieval_plan_with_bobbin("0.27.3", true); + let (root, bin) = retrieval_plan_with_bobbin("0.30.0", true); let plan = fs::read_to_string(root.path().join("caboodle-plan.toml")).unwrap(); assert!(!plan.contains("[crew]"), "control: no crew section\n{plan}"); fs::remove_file(bin.join("st-versions.log")).unwrap(); @@ -4121,11 +4121,11 @@ case "$*" in esac exit 2"#; for (scenario, installed, pinned, success, upgrade, message) in [ - ("stable", "0.28.0", false, true, true, "delivered by brew"), - ("stable", "0.27.3", false, true, true, "delivered by brew"), + ("stable", "0.31.0", false, true, true, "delivered by brew"), + ("stable", "0.30.0", false, true, true, "delivered by brew"), ( "stable", - "0.30.0", + "0.33.0", false, true, false, @@ -4133,7 +4133,7 @@ exit 2"#; ), ( "stable", - "0.29.0", + "0.32.0", false, true, false, @@ -4141,7 +4141,7 @@ exit 2"#; ), ( "stable", - "0.28.0", + "0.31.0", true, true, false, @@ -4149,7 +4149,7 @@ exit 2"#; ), ( "refresh-fails", - "0.28.0", + "0.31.0", false, false, false, @@ -4157,7 +4157,7 @@ exit 2"#; ), ( "metadata-fails", - "0.28.0", + "0.31.0", false, false, false, @@ -4165,7 +4165,7 @@ exit 2"#; ), ( "upgrade-fails", - "0.28.0", + "0.31.0", false, false, true, @@ -4173,7 +4173,7 @@ exit 2"#; ), ( "unchanged-upgrade", - "0.28.0", + "0.31.0", false, false, true, @@ -4192,7 +4192,7 @@ exit 2"#; fs::write( bin.join("bobbin"), fake.replace( - "echo 'bobbin 0.27.3';", + "echo 'bobbin 0.30.0';", "printf 'bobbin %s\\n' \"$(cat \"$HOME/brew-installed\")\";", ), ) @@ -4201,8 +4201,8 @@ exit 2"#; ("scenario", scenario), ("brew-installed", installed), ("pinned", if pinned { "true" } else { "false" }), - ("local-stable", "0.28.0"), - ("remote-stable", "0.29.0"), + ("local-stable", "0.31.0"), + ("remote-stable", "0.32.0"), ] { fs::write(root.path().join(name), value).unwrap(); } @@ -4248,7 +4248,7 @@ exit 2"#; assert_eq!( actual, if success && upgrade { - "0.29.0" + "0.32.0" } else { installed }