[INFO] cloning repository https://github.com/jepomeroy/codecrafters-shell-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jepomeroy/codecrafters-shell-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjepomeroy%2Fcodecrafters-shell-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjepomeroy%2Fcodecrafters-shell-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3f9e53fdcde4815150a5f19b432b3b1b8ebea35a [INFO] testing jepomeroy/codecrafters-shell-rust against 1.99.0-beta.1+cargoflags=--release for beta-release-1.99-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjepomeroy%2Fcodecrafters-shell-rust" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jepomeroy/codecrafters-shell-rust [INFO] finished tweaking git repo https://github.com/jepomeroy/codecrafters-shell-rust [INFO] tweaked toml for git repo https://github.com/jepomeroy/codecrafters-shell-rust written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jepomeroy/codecrafters-shell-rust on toolchain 1.99.0-beta.1 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/jepomeroy/codecrafters-shell-rust already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389 [INFO] running `Command { std: "docker" "start" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling libc v0.2.186 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling nix v0.31.3 [INFO] [stderr] Compiling endian-type v0.2.0 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling nibble_vec v0.1.0 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling unicode-segmentation v1.13.2 [INFO] [stderr] Compiling radix_trie v0.3.0 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling home v0.5.12 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling rustyline-derive v0.12.0 [INFO] [stderr] Compiling rustyline v18.0.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling codecrafters-shell v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 1m 02s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.31.3 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling nix v0.31.3 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling rustyline v18.0.0 [INFO] [stderr] Compiling codecrafters-shell v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 23.59s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.31.3 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.10s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.31.3 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/codecrafters_shell-819bc98fe7a3a97e) [INFO] [stdout] [INFO] [stdout] running 131 tests [INFO] [stdout] test autocomplete::tests::complete_candidates_include_trailing_space ... ok [INFO] [stdout] test autocomplete::tests::complete_builtin_multiple_matches ... ok [INFO] [stdout] test autocomplete::tests::complete_builtin_prefix ... ok [INFO] [stdout] test autocomplete::tests::complete_dir_progressive_lcp_step2 ... ok [INFO] [stdout] test autocomplete::tests::complete_dir_progressive_lcp_step1 ... ok [INFO] [stdout] test autocomplete::tests::complete_file_nested_path ... ok [INFO] [stdout] test autocomplete::tests::complete_file_multiple_matches_all_returned ... ok [INFO] [stdout] test autocomplete::tests::complete_file_no_match_returns_empty ... ok [INFO] [stdout] test autocomplete::tests::complete_dir_progressive_lcp_step3_single_match_gets_slash ... ok [INFO] [stdout] test autocomplete::tests::complete_file_single_dir_gets_slash_not_space ... ok [INFO] [stdout] test autocomplete::tests::complete_file_three_matches_all_returned ... ok [INFO] [stdout] test autocomplete::tests::complete_file_single_match ... ok [INFO] [stdout] test autocomplete::tests::complete_no_match_returns_empty ... ok [INFO] [stdout] test autocomplete::tests::complete_path_non_executable_excluded ... ok [INFO] [stdout] test autocomplete::tests::complete_mixed_candidates_dirs_slash_files_space ... ok [INFO] [stdout] test autocomplete::tests::complete_multiple_files_lcp_loses_trailing_space ... ok [INFO] [stdout] test autocomplete::tests::find_exec_ignores_non_matching_name ... ok [INFO] [stdout] test autocomplete::tests::find_exec_ignores_directories ... ok [INFO] [stdout] test autocomplete::tests::find_exec_ignores_non_executable ... ok [INFO] [stdout] test autocomplete::tests::find_exec_nonexistent_dir_returns_empty ... ok [INFO] [stdout] test builtin::tests::test_cd_changes_working_directory ... ok [INFO] [stdout] test builtin::tests::test_cd_valid_path_returns_zero ... ok [INFO] [stdout] test autocomplete::tests::find_exec_matches_prefix ... ok [INFO] [stdout] test autocomplete::tests::complete_path_executable ... ok [INFO] [stdout] test builtin::tests::test_check_type_builtin_not_classified_as_path ... ok [INFO] [stdout] test builtin::tests::test_check_type_unknown_returns_zero ... ok [INFO] [stdout] test builtin::tests::test_check_type_with_path_returns_zero ... ok [INFO] [stdout] test builtin::tests::test_check_type_builtin_returns_zero ... ok [INFO] [stdout] test builtin::tests::test_completion_empty_args_outputs_newline ... ok [INFO] [stdout] test builtin::tests::test_cd_invalid_path_returns_one ... ok [INFO] [stdout] test autocomplete::tests::complete_command_passes_prev_word_as_argv3 ... ok [INFO] [stdout] test builtin::tests::test_completion_unknown_flag_outputs_newline ... ok [INFO] [stdout] test builtin::tests::test_completion_set_and_get ... ok [INFO] [stdout] test builtin::tests::test_list_commands ... ok [INFO] [stdout] test builtin::tests::test_completion_set_remove_and_get ... ok [INFO] [stdout] test builtin::tests::test_echo_no_args_returns_zero ... ok [INFO] [stdout] test builtin::tests::test_completion_p_no_spec_returns_message ... ok [INFO] [stdout] test builtin::tests::test_echo_with_args_returns_zero ... ok [INFO] [stdout] test autocomplete::tests::complete_command_completion ... ok [INFO] [stdout] test builtin::tests::test_strip_os_error_no_suffix_unchanged ... ok [INFO] [stdout] test builtin::tests::test_strip_os_error_removes_suffix ... ok [INFO] [stdout] test builtin::tests::test_strip_os_error_permission_denied ... ok [INFO] [stdout] test command::tests::test_background_args_do_not_contain_ampersand ... ok [INFO] [stdout] test builtin::tests::test_pwd_outputs_current_directory ... ok [INFO] [stdout] test builtin::tests::test_pwd_returns_zero ... ok [INFO] [stdout] test builtin::tests::test_unknown_command_error_message ... ok [INFO] [stdout] test builtin::tests::test_unknown_returns_zero ... ok [INFO] [stdout] test autocomplete::tests::complete_command_no_prev_word_passes_cmd_as_argv3 ... ok [INFO] [stdout] test command::tests::test_background_flag_not_set_without_ampersand ... ok [INFO] [stdout] test command::tests::test_background_flag_set_for_trailing_ampersand ... ok [INFO] [stdout] test command::tests::test_background_only_on_last_pipeline_segment ... ok [INFO] [stdout] hello [INFO] [stdout] test command::tests::test_parse_args_backslash_backslash ... ok [INFO] [stdout] test command::tests::test_execute_pipeline_foreground_returns_foreground_variant ... ok [INFO] [stdout] test command::tests::test_parse_args_backslash_char ... ok [INFO] [stdout] test command::tests::test_parse_args_backslash_single_quote ... ok [INFO] [stdout] test command::tests::test_parse_args ... ok [INFO] [stdout] test command::tests::test_background_pipeline_pipe_stages_run_before_returning ... ok [INFO] [stdout] test command::tests::test_parse_args_backslash_spaces ... ok [INFO] [stdout] test command::tests::test_parse_args_backslash_single_quote_mixed ... ok [INFO] [stdout] test command::tests::test_parse_args_escaped_single_and_double_quotes ... ok [INFO] [stdout] test command::tests::test_parse_args_with_double_quote_and_inner_single_quote ... ok [INFO] [stdout] test command::tests::test_parse_args_with_double_quotes ... ok [INFO] [stdout] test command::tests::test_parse_args_with_double_quote_and_unquoted ... ok [INFO] [stdout] test command::tests::test_execute_pipeline_background_returns_background_variant ... ok [INFO] [stdout] test command::tests::test_parse_args_single_quote_with_backslash_double_quote ... ok [INFO] [stdout] test command::tests::test_parse_args_with_multiple_single_quotes ... ok [INFO] [stdout] test command::tests::test_parse_args_backslash_space_collapse_others ... ok [INFO] [stdout] test command::tests::test_parse_args_with_multiple_double_quotes ... ok [INFO] [stdout] test command::tests::test_parse_args_with_separate_double_quotes ... ok [INFO] [stdout] test command::tests::test_parse_args_with_empty_single_quotes ... ok [INFO] [stdout] test command::tests::test_parse_args_with_single_quotes ... ok [INFO] [stdout] test history::tests::append_file_no_op_when_nothing_new ... ok [INFO] [stdout] test history::tests::append_file_updates_append_pos ... ok [INFO] [stdout] hello [INFO] [stdout] test history::tests::append_file_writes_only_new_entries ... ok [INFO] [stdout] test command::tests::test_pipe_first_command_no_panic ... ok [INFO] [stdout] hello world [INFO] [stdout] test command::tests::test_parse_args_single_quote_with_multi_backslash ... ok [INFO] [stdout] hello world [INFO] [stdout] test history::tests::read_file_missing_returns_error ... ok [INFO] [stdout] 3 [INFO] [stdout] test history::tests::write_file_updates_append_pos ... ok [INFO] [stdout] test history::tests::write_file_writes_all_entries ... ok [INFO] [stdout] test command::tests::test_pipe_three_commands ... ok [INFO] [stdout] test jobs::tests::test_empty_returns_one ... ok [INFO] [stdout] test history::tests::read_file_returns_all_lines ... ok [INFO] [stdout] orange pear [INFO] [stdout] banana pineapple [INFO] [stdout] apple mango [INFO] [stdout] raspberry blueberry [INFO] [stdout] grape strawberry [INFO] [stdout] test command::tests::test_pipe_args_forwarded_to_first_command ... ok [INFO] [stdout] test jobs::tests::test_done_job_display_no_ampersand ... ok [INFO] [stdout] test history::tests::read_file_sets_append_pos ... ok [INFO] [stdout] test command::tests::test_pipe_last_command_receives_stdin ... ok [INFO] [stdout] test jobs::tests::test_gap_at_end_fills_gap ... ok [INFO] [stdout] test jobs::tests::test_done_job_display_format ... ok [INFO] [stdout] test command::tests::test_pipe_cat_file_to_wc ... ok [INFO] [stdout] test jobs::tests::test_gap_at_start_returns_one ... ok [INFO] [stdout] test processor::tests::test_cd_changes_directory ... ok [INFO] [stdout] test processor::tests::test_declare_hyphen_key_not_allowed ... ok [INFO] [stdout] test processor::tests::test_declare_number_key_not_allowed ... ok [INFO] [stdout] test processor::tests::test_declare_p_found_returns_value ... ok [INFO] [stdout] test processor::tests::test_declare_p_missing_var_no_panic ... ok [INFO] [stdout] test processor::tests::test_declare_p_not_found_message ... ok [INFO] [stdout] test processor::tests::test_declare_underscore_key_is_allowed ... ok [INFO] [stdout] test processor::tests::test_history_a_appends_to_file ... ok [INFO] [stdout] test processor::tests::test_history_a_only_appends_new_entries ... ok [INFO] [stdout] test processor::tests::test_history_count_larger_than_history_no_panic ... ok [INFO] [stdout] test processor::tests::test_history_count_no_panic ... ok [INFO] [stdout] test processor::tests::test_history_empty_no_panic ... ok [INFO] [stdout] test processor::tests::test_history_no_args_no_panic ... ok [INFO] [stdout] test jobs::tests::test_gap_in_middle ... ok [INFO] [stdout] test jobs::tests::test_running_job_display_includes_ampersand ... ok [INFO] [stdout] test processor::tests::test_history_r_loads_entries_from_file ... ok [INFO] [stdout] test jobs::tests::test_single_job_not_one_returns_one ... ok [INFO] [stdout] test processor::tests::test_new_empty_when_path_unset ... ok [INFO] [stdout] test processor::tests::test_new_reads_path_entries ... ok [INFO] [stdout] test processor::tests::test_history_w_writes_all_entries ... ok [INFO] [stdout] test processor::tests::test_history_r_nonexistent_file_no_panic ... ok [INFO] [stdout] test processor::tests::test_jobs_empty_no_panic ... ok [INFO] [stdout] test jobs::tests::test_single_job_one_returns_two ... ok [INFO] [stdout] test processor::tests::test_process_cd_valid_path ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_first_operator_wins ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_none ... ok [INFO] [stdout] test processor::tests::test_process_empty_input_no_panic ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_stderr_overwrite ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_stderr_append ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_stdout_append_explicit ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_stdout_append ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_stdout_overwrite ... ok [INFO] [stdout] test redirect::tests::test_get_redirect_stdout_overwrite_explicit ... ok [INFO] [stdout] test utils::tests::get_paths_returns_strings ... ok [INFO] [stdout] test utils::tests::is_executable_false_for_nonexistent_path ... ok [INFO] [stdout] test utils::tests::is_executable_false_for_non_executable_file ... ok [INFO] [stdout] test utils::tests::is_executable_true_for_executable_file ... ok [INFO] [stdout] test processor::tests::test_process_cd_invalid_path_no_panic ... ok [INFO] [stdout] test jobs::tests::test_running_job_display_format ... ok [INFO] [stdout] test jobs::tests::test_sequential_returns_next ... ok [INFO] [stdout] test jobs::tests::test_large_gap_returns_first_hole ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 131 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389", kill_on_drop: false }` [INFO] [stdout] 61077a2eb66d8a4ab7ad8d156c1885b31e8e445b7b0556470bc6d27560f34389