nabijaczleweli / cargo-update

A cargo subcommand for checking and applying updates to installed executables
MIT License
1.22k stars 42 forks source link

Tests fail on 32-bit #235

Closed folliehiyuki closed 1 year ago

folliehiyuki commented 1 year ago

The failed log is (cargo-update version 13.0.2):

     Running unittests src/lib.rs (target/debug/deps/cargo_update-30cfb8af01624350)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
     Running tests/lib.rs (target/debug/deps/lib-d09981ad18fdb048)
running 25 tests
test ops::assert_index_path::sparse ... ok
test ops::installed_registry_packages::non_existent ... ok
test ops::package_filter_element::parse::err::no_separator ... ok
test ops::get_index_url::default_vs_sparse ... ok
test ops::package_filter_element::parse::err::unrecognised ... ok
test ops::package_filter_element::parse::ok::toolchain ... ok
test ops::get_index_url::nonexistent ... ok
test ops::assert_index_path::single ... FAILED
test ops::assert_index_path::nonexistent ... FAILED
test ops::assert_index_path::double ... FAILED
test ops::assert_index_path::is_file ... FAILED
test ops::assert_index_path::two ... FAILED
test ops::get_index_url::from_name ... ok
test ops::get_index_url::from_alt_url ... ok
test ops::get_index_url::dead_end ... ok
test ops::get_index_url::default ... ok
test ops::get_index_url::unknown ... ok
test ops::get_index_url::sus ... ok
test ops::registry_package::parse::invalid ... ok
test ops::registry_package::parse::git ... ok
test ops::registry_package::parse::alt_registry ... ok
test ops::crate_versions ... ok
test ops::registry_package::parse::main_registry ... ok
test ops::intersect_packages ... ok
test ops::installed_registry_packages::existent ... ok
failures:
---- ops::assert_index_path::single stdout ----
thread 'ops::assert_index_path::single' panicked at 'assertion failed: `(left == right)`
  left: `Ok("/tmp/cargo_update-test/assert_index_path-single/registry/index/github.com-1285ae84e5963aae")`,
 right: `Ok("/tmp/cargo_update-test/assert_index_path-single/registry/index/github.com-1ecc6299db9ec823")`', tests/ops/assert_index_path.rs:43:5
---- ops::assert_index_path::nonexistent stdout ----
thread 'ops::assert_index_path::nonexistent' panicked at 'assertion failed: `(left == right)`
  left: `Ok("/tmp/cargo_update-test/assert_index_path-nonexistent/registry/index/github.com-1285ae84e5963aae")`,
 right: `Ok("/tmp/cargo_update-test/assert_index_path-nonexistent/registry/index/github.com-1ecc6299db9ec823")`', tests/ops/assert_index_path.rs:18:5
---- ops::assert_index_path::double stdout ----
thread 'ops::assert_index_path::double' panicked at 'assertion failed: `(left == right)`
  left: `Ok("/tmp/cargo_update-test/assert_index_path-double/registry/index/github.com-1285ae84e5963aae")`,
 right: `Ok("/tmp/cargo_update-test/assert_index_path-double/registry/index/github.com-1ecc6299db9ec823")`', tests/ops/assert_index_path.rs:53:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- ops::assert_index_path::is_file stdout ----
thread 'ops::assert_index_path::is_file' panicked at 'assertion failed: `(left == right)`
  left: `Ok("/tmp/cargo_update-test/assert_index_path-is_file/registry/index/github.com-1285ae84e5963aae")`,
 right: `Err("/tmp/cargo_update-test/assert_index_path-is_file/registry/index/github.com-1ecc6299db9ec823 (index directory for https://github.com/rust-lang/crates.io-index) not a directory")`', tests/ops/assert_index_path.rs:31:5
---- ops::assert_index_path::two stdout ----
thread 'ops::assert_index_path::two' panicked at 'assertion failed: `(left == right)`
  left: `Ok("/tmp/cargo_update-test/assert_index_path-two/registry/index/github.com-1285ae84e5963aae")`,
 right: `Ok("/tmp/cargo_update-test/assert_index_path-two/registry/index/github.com-1ecc6299db9ec823")`', tests/ops/assert_index_path.rs:64:5
failures:
    ops::assert_index_path::double
    ops::assert_index_path::is_file
    ops::assert_index_path::nonexistent
    ops::assert_index_path::single
    ops::assert_index_path::two
test result: FAILED. 20 passed; 5 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
error: test failed, to rerun pass `--test lib`

This only happens on 32-bit CI pipelines (and also s390x) on AlpineLinux, as can be seen here: https://gitlab.alpinelinux.org/FollieHiyuki/aports/-/pipelines/164933.

nabijaczleweli commented 1 year ago

It looks like cargo/s390x clones into the same path as the test suite did in https://gitlab.alpinelinux.org/FollieHiyuki/aports/-/jobs/1034356#L403:

nab@buster-s390x:~$ ls -la .cargo/registry/index/
# ...
drwxr-xr-x 3 nab nab 4096 May 18 20:59 github.com-eae4ba8cbf2ce1c7

and cargo/i386 also agrees:

(sid-i386 cu)root@tarta:/# ls -la ~/.cargo/registry/index/
# ...
drwxr-xr-x 3 root root 60 May 18 21:03 github.com-1285ae84e5963aae

so this is just a test bug.

nabijaczleweli commented 1 year ago

Disabled in v13.0.3

folliehiyuki commented 1 year ago

Thanks! I retried the CI/CD pipeline with the new version (https://gitlab.alpinelinux.org/FollieHiyuki/aports/-/pipelines/165164). There is still 1 failed test, probably for the same reason:

    Finished test [unoptimized + debuginfo] target(s) in 15.15s
     Running unittests src/lib.rs (target/debug/deps/cargo_update-21bc6bcbe74f808c)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
     Running tests/lib.rs (target/debug/deps/lib-a613be630fd3842f)
running 19 tests
test ops::package_filter_element::parse::err::no_separator ... ok
test ops::package_filter_element::parse::err::unrecognised ... ok
test ops::package_filter_element::parse::ok::toolchain ... ok
test ops::installed_registry_packages::non_existent ... ok
test ops::get_index_url::nonexistent ... ok
test ops::get_index_url::default_vs_sparse ... ok
test ops::get_index_url::default ... ok
test ops::get_index_url::from_alt_url ... ok
test ops::get_index_url::sus ... ok
test ops::get_index_url::unknown ... ok
test ops::get_index_url::dead_end ... ok
test ops::get_index_url::from_name ... ok
test ops::registry_package::parse::invalid ... ok
test ops::registry_package::parse::git ... ok
test ops::crate_versions ... ok
test ops::registry_package::parse::alt_registry ... ok
test ops::registry_package::parse::main_registry ... ok
test ops::intersect_packages ... ok
test ops::installed_registry_packages::existent ... ok
test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
   Doc-tests cargo-update
running 25 tests
test src/ops/config.rs - ops::config::PackageConfig::cargo_args (line 129) - compile ... ok
test src/options.rs - options (line 8) - compile ... ok
test src/ops/config.rs - ops::config::PackageConfig::from (line 85) ... ok
test src/ops/mod.rs - ops::PackageFilterElement::parse (line 665) ... ok
test src/ops/mod.rs - ops::PackageFilterElement::matches (line 687) ... ok
test src/ops/mod.rs - ops::GitRepoPackage::needs_update (line 622) ... ok
test src/ops/config.rs - ops::config::PackageConfig (line 47) ... ok
test src/ops/mod.rs - ops::crates_file_in (line 780) ... ok
test src/ops/config.rs - ops::config::PackageConfig::write (line 309) ... ok
test src/ops/mod.rs - ops::RegistryPackage::update_to_version (line 380) ... ok
test src/ops/mod.rs - ops::find_proxy (line 1541) ... ok
test src/ops/mod.rs - ops::crate_versions (line 954) ... ok
test src/ops/config.rs - ops::config::PackageConfig::execute_operations (line 188) ... ok
test src/ops/mod.rs - ops::RegistryPackage::needs_update (line 254) ... ok
test src/ops/config.rs - ops::config::PackageConfig::read (line 265) ... ok
test src/ops/mod.rs - ops::assert_index_path (line 990) ... FAILED
test src/ops/mod.rs - ops::RegistryPackage::parse (line 199) ... ok
test src/ops/mod.rs - ops::GitRepoPackage::parse (line 462) ... ok
test src/ops/mod.rs - ops::RegistryPackage (line 49) ... ok
test src/ops/mod.rs - ops::GitRepoPackage::parse (line 429) ... ok
test src/ops/mod.rs - ops::RegistryPackage::parse (line 165) ... ok
test src/ops/mod.rs - ops::installed_registry_packages (line 818) ... ok
test src/ops/mod.rs - ops::installed_git_repo_packages (line 863) ... ok
test src/ops/mod.rs - ops::intersect_packages (line 904) ... ok
test src/ops/mod.rs - ops::GitRepoPackage (line 109) ... ok
failures:
---- src/ops/mod.rs - ops::assert_index_path (line 990) stdout ----
Test executable failed (exit status: 101).
stderr:
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `"/tmp/cargo_update-doctest/assert_index_path-0/registry/index/github.com-1285ae84e5963aae"`,
 right: `"/tmp/cargo_update-doctest/assert_index_path-0/registry/index/github.com-1ecc6299db9ec823"`', src/ops/mod.rs:12:1
stack backtrace:
   0: 0x5665a881 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h50df87d806e4bd9b
   1: 0x566743ac - core::fmt::write::h088f0e857a41f859
   2: 0x566588bb - std::io::Write::write_fmt::h5a9b421b7bf1f7e9
   3: 0x5665a686 - std::sys_common::backtrace::print::hd239411a04c1182f
   4: 0x5665bb15 - std::panicking::default_hook::{{closure}}::h1815260a69a6aa13
   5: 0x5665b8d8 - std::panicking::default_hook::ha101de454ee4542d
   6: 0x5665c0b6 - std::panicking::rust_panic_with_hook::h5d64144be45c9621
   7: 0x5665bfbc - std::panicking::begin_panic_handler::{{closure}}::h5bcb8eff8ac947a7
   8: 0x5665acd6 - std::sys_common::backtrace::__rust_end_short_backtrace::h9acee5ae2d0c1153
   9: 0x5665bce3 - rust_begin_unwind
  10: 0x565f4490 - core::panicking::panic_fmt::h08043c3fc74e2af6
  11: 0x565f479b - core::panicking::assert_failed_inner::hcf5f8e09ec41a311
  12: 0x565f57fd - core::panicking::assert_failed::heefe47487520dd57
  13: 0x565f6610 - rust_out::main::_doctest_main_src_ops_mod_rs_990_0::ha20b92589509d2b8
  14: 0x565f6116 - rust_out::main::hcd65100f817fd42f
  15: 0x565f4e86 - core::ops::function::FnOnce::call_once::hd9658cf19d4b0670
  16: 0x565f4bce - std::sys_common::backtrace::__rust_begin_short_backtrace::hb49ed65622fc9ee5
  17: 0x565f4c63 - std::rt::lang_start::{{closure}}::ha0a7bac600adac1e
  18: 0x5665646b - std::rt::lang_start_internal::h8777f3c2394ec95f
  19: 0x565f4c25 - std::rt::lang_start::h9a48179a9e1235ed
  20: 0x565f67fa - main
  21: 0xf7ee1454 - <unknown>
failures:
    src/ops/mod.rs - ops::assert_index_path (line 990)
test result: FAILED. 24 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.74s
error: doctest failed, to rerun pass `--doc`
nabijaczleweli commented 1 year ago

yeah :v

disabled that in v13.0.4

folliehiyuki commented 1 year ago

Thanks! I think all the CI jobs passed now. I just retried again in https://gitlab.alpinelinux.org/FollieHiyuki/aports/-/pipelines/165283.