Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests integration-tests::integration fail with error for setup of scripts/my-script.sh #1205

Closed
lcheylus opened this issue Jan 4, 2024 · 3 comments

Comments

@lcheylus
Copy link

lcheylus commented Jan 4, 2024

Build for cargo-nextest current version on OpenBSD-current/amd64, using my patch for libc crate (add missing waitid function, see rust-lang/libc#3490) => build debug OK

When I try to run auto-tests for nextest, I have 3 tests KO for integration-tests::integration:

$ cargo local-nt run
(...)
Finished test [unoptimized + debuginfo] target(s) in 1m 47s
    Starting 215 tests across 13 binaries
        PASS [   0.052s] cargo-nextest dispatch::tests::test_test_binary_argument_parsing
        PASS [   0.345s] cargo-nextest dispatch::tests::test_argument_parsing
        PASS [  13.281s] integration-tests::integration test_list_binaries_only
        PASS [  15.179s] integration-tests::integration test_list_default
        PASS [  15.076s] integration-tests::integration test_list_full
        PASS [  14.711s] integration-tests::integration test_list_full_after_build
        PASS [  11.591s] integration-tests::integration test_list_host_after_build
        PASS [  16.763s] integration-tests::integration test_list_target_after_build
        FAIL [  12.685s] integration-tests::integration test_relocated_run

--- STDOUT:              integration-tests::integration test_relocated_run ---

running 1 test
test test_relocated_run ... FAILED

failures:

failures:
    test_relocated_run

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 14 filtered out; finished in 12.66s
--- STDERR:              integration-tests::integration test_relocated_run ---
thread 'test_relocated_run' panicked at integration-tests/tests/integration/main.rs:332:5:
assertion `left == right` failed: correct exit code for command
command: "/home/fox/dev/cargo-nextest.git/target/debug/cargo-nextest-dup" "nextest" "--manifest-path" "/tmp/nextest-fixtureTMysng/src/Cargo.toml" "run" "--binaries-metadata" "/tmp/nextest-fixtureTMysng/src/test-subdir/binaries_metadata.json" "--cargo-metadata" "/tmp/nextest
-fixtureTMysng/src/test-subdir/cargo_metadata.json" "--workspace-remap" "../../../../../tmp/nextest-fixtureTMysng/src" "--target-dir-remap" "../../../../../tmp/nextest-fixtureTMysng/src/test-subdir"
exit code: Some(105)
--- stdout ---


--- stderr ---
info: experimental features enabled: setup-scripts
    Starting 27 tests across 14 binaries (5 skipped)
       SETUP [      1/1] my-script-unix: ./scripts/my-script.sh
error: [double-spawn] failed to exec `"./scripts/my-script.sh"`

Caused by:
  No such file or directory (os error 2)
  SETUP FAIL [      1/1] my-script-unix: ./scripts/my-script.sh

   Canceling due to setup script failure
------------
     Summary [   0.077s] 0/27 tests run: 0 passed, 0 skipped
error: setup script failed



  left: Some(105)
 right: Some(100)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

   Canceling due to test failure: 1 test still running
(...)
     Summary [  66.409s] 11/215 tests run: 8 passed, 3 failed, 0 skipped
        FAIL [  12.685s] integration-tests::integration test_relocated_run
        FAIL [  14.149s] integration-tests::integration test_run
        FAIL [  13.702s] integration-tests::integration test_run_after_build
error: test run failed

For the 3 failed tests, same error with setup fail of script ./scripts/my-script.sh => error code 105 / SETUP_SCRIPT_FAILED (according to nextest-metadata/src/exit_codes.rs).

After some debug, this script my-script.sh comes from fixtures/nextest-tests/scripts/my-script.sh.

I don't find the root cause explaining why the setup of this script failed.

Have you any clue to help me with these errors and to debug it ?

@sunshowers
Copy link
Member

My best guess is that your OpenBSD install doesn't have /bin/bash in it. That script is pretty simple so in 4a0de0b I've made it depend only on /bin/sh. Let me know if this doesn't work.

@lcheylus
Copy link
Author

lcheylus commented Jan 8, 2024

OK, after rebuild with the current version, all tests are OK on OpenBSD-current/amd64 :)

$ cargo local-nt run
(...)
   Compiling cargo-nextest v0.9.66 (/home/fox/dev/cargo-nextest.git/cargo-nextest)
   Compiling nextest-metadata v0.10.0 (/home/fox/dev/cargo-nextest.git/nextest-metadata)
   Compiling nextest-workspace-hack v0.1.0 (/home/fox/dev/cargo-nextest.git/workspace-hack)
    Finished test [unoptimized + debuginfo] target(s) in 2m 05s
    Starting 215 tests across 13 binaries
(...)
        PASS [   0.050s] quick-junit::fixture_tests fixtures
        PASS [   3.943s] nextest-runner::integration basic::test_termination
------------
     Summary [ 137.724s] 215 tests run: 215 passed, 0 skipped

For info, in script shells, it's better to use #!/usr/bin/env bash instead of #!/bin/bash => Bash is not always installed as /bin/bash. Here it was the root cause of this issue : on OpenBSD, bash is installed in /usr/local/bin (after install of the package bash).

Thanks for this fix.

@sunshowers
Copy link
Member

Got it, thanks for the info! I'd never come across a Unix where bash hadn't been installed to /bin/bash so this was a new one, haha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants