🐇 There is no xvc completions command anymore. Let’s remove the test.
🐢 Instead, we can make it test with environment variables for each of these shells.
🐇 It looks like the test fails with wait_status.
cargo test -p xvc --test test_completions
...
failures:
---- test_completions stdout ----
...
ExitStatus(unix_wait_status(512))
thread 'test_completions' panicked at lib/tests/common/mod.rs:46:5:
Command failed: Command { cmd: "/Users/iex/github.com/iesahin/xvc/target/debug/xvc", stdin: None, timeout: None }
...
🐢 The failure is in the line:
let mut cmd = Command::cargo_bin("xvc").unwrap();
So it probably waits for user input to complete, but it doesn’t have any and cannot complete it, so it returns an error.
🦊 Let’s comment the earlier test out and check if other tests work.
🐢 Yes, they fail the same. When there are no commands to run, xvc returns an error. Maybe we can change this behavior or handle the error in the Command::cargo_bin line above.
🐇 I checked the code and we don’t handle the “no arguments” case anywhere. It looks like the behavior to return an error code is inherited from clap.
🐢 Updated the error handling code to report a more descriptive message from the source.
cargo test -p xvc --test test_completions
...
failures:
---- test_completions stdout ----
Output { status: ExitStatus(unix_wait_status(25856)), stdout: "", stderr: "\nthread 'main' panicked at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_builder-4.5.20/src/builder/debug_asserts.rs:341:13:\nCommand pipeline: command `export` alias `l` is duplicated\nstack backtrace:\n 0: rust_begin_unwind\n at /rustc/b1a7dfb91106018f47ed9dc9b27aee1977682868/library/std/src/panicking.rs:692:5\n 1: core::panicking::panic_fmt\n at /rustc/b1a7dfb91106018f47ed9dc9b27aee1977682868/library/core/src/panicking.rs:75:14\n 2: clap_builder::builder::debug_asserts::assert_app\n at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_builder-4.5.20/src/builder/debug_asserts.rs:341:13\n 3: clap_builder::builder::command::Command::_build_self\n at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_builder-4.5.20/src/builder/command.rs:4173:13\n 4: clap_builder::builder::command::Command::_build_recursive\n at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_builder-4.5.20/src/builder/command.rs:4076:9\n 5: clap_builder::builder::command::Command::_build_recursive\n at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_builder-4.5.20/src/builder/command.rs:4078:13\n 6: clap_builder::builder::command::Command::build\n at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_builder-4.5.20/src/builder/command.rs:4071:9\n 7: clap_complete::env::CompleteEnv<F>::try_complete_\n at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_complete-4.5.40/src/env/mod.rs:229:9\n 8: clap_complete::env::CompleteEnv<F>::try_complete\n at /Users/iex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clap_complete-4.5.40/src/env/mod.rs:210:9\n 9: xvc::main\n at ./src/main.rs:18:30\n 10: core::ops::function::FnOnce::call_once\n at... [truncated]
ExitStatus(unix_wait_status(25856))
...
error: test failed, to rerun pass `-p xvc --test test_completions`
🐢 The real issue is when we assert the successful run, at this line:
assert!(output.status.success(), "Command failed: {:?}", prepared);
🐇 If you look at the error message carefully, you’ll see that this is a different error. We added an alias to xvc pipeline export with l, which is a duplicate.
🐢 Oops, yeah.
cargo test -p xvc --test test_completions
...
test test_completions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.81s
🐇 There are some warnings in compilation. Let’s fix these.
cargo build
Compiling xvc-storage v0.6.14-alpha.8 (/Users/iex/github.com/iesahin/xvc/storage)
Compiling xvc-file v0.6.14-alpha.8 (/Users/iex/github.com/iesahin/xvc/file)
Compiling xvc-pipeline v0.6.14-alpha.8 (/Users/iex/github.com/iesahin/xvc/pipeline)
Compiling xvc v0.6.14-alpha.8 (/Users/iex/github.com/iesahin/xvc/lib)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.28s
🐢 Finished the build without warnings. Now we can run the whole test suite again.
🐇 Tests are running fine. Updated some error messages and types, and doc tests also pass. There is an issue with the Rsync storage ref.
🐢 It looks like we try to elide output with [...], while the proper format is [..].
🐇 Replaced them with ... that will elide multiple lines.
🐢 Pushed changes to the server.