return 1;
}
-static int do_bisect_run(const char *command)
+static int do_bisect_run(const char *command, const char *unquoted_cmd)
{
struct child_process cmd = CHILD_PROCESS_INIT;
- printf(_("running %s\n"), command);
+ printf(_("running %s\n"), unquoted_cmd);
cmd.use_shell = 1;
strvec_push(&cmd.args, command);
return run_command(&cmd);
}
-static int verify_good(const struct bisect_terms *terms, const char *command)
+static int verify_good(const struct bisect_terms *terms, const char *command, const char *unquoted_cmd)
{
int rc;
enum bisect_error res;
if (res != BISECT_OK)
return -1;
- rc = do_bisect_run(command);
+ rc = do_bisect_run(command, unquoted_cmd);
res = bisect_checkout(¤t_rev, no_checkout);
if (res != BISECT_OK)
{
int res = BISECT_OK;
struct strbuf command = STRBUF_INIT;
+ struct strbuf unquoted = STRBUF_INIT;
const char *new_state;
int temporary_stdout_fd, saved_stdout;
int is_first_run = 1;
}
sq_quote_argv(&command, argv);
+ strbuf_join_argv(&unquoted, argc, argv,' ');
while (1) {
- res = do_bisect_run(command.buf);
+ res = do_bisect_run(command.buf, unquoted.buf);
/*
* Exit code 126 and 127 can either come from the shell
* missing or non-executable script.
*/
if (is_first_run && (res == 126 || res == 127)) {
- int rc = verify_good(terms, command.buf);
+ int rc = verify_good(terms, command.buf, unquoted.buf);
is_first_run = 0;
if (rc < 0) {
error(_("unable to verify '%s' on good"
- " revision"), command.buf);
+ " revision"), unquoted.buf);
res = BISECT_FAILED;
break;
}
if (res < 0 || 128 <= res) {
error(_("bisect run failed: exit code %d from"
- " '%s' is < 0 or >= 128"), res, command.buf);
+ " '%s' is < 0 or >= 128"), res, unquoted.buf);
break;
}
if (res == BISECT_ONLY_SKIPPED_LEFT)
error(_("bisect run cannot continue any more"));
else if (res == BISECT_INTERNAL_SUCCESS_MERGE_BASE) {
- printf(_("bisect run success"));
+ puts(_("bisect run success"));
res = BISECT_OK;
} else if (res == BISECT_INTERNAL_SUCCESS_1ST_BAD_FOUND) {
- printf(_("bisect found first bad commit"));
+ puts(_("bisect run success"));
res = BISECT_OK;
} else if (res) {
- error(_("bisect run failed: 'git bisect--helper --bisect-state"
- " %s' exited with error code %d"), new_state, res);
+ error(_("bisect run failed: 'bisect-state %s'"
+ " exited with error code %d"), new_state, res);
} else {
continue;
}
break;
}
+ strbuf_release(&unquoted);
strbuf_release(&command);
return res;
}
test_cmp expect.args actual.args
}
-test_expect_failure 'git bisect run: args, stdout and stderr with no arguments' "
+test_expect_success 'git bisect run: args, stdout and stderr with no arguments' "
test_bisect_run_args <<-'EOF_ARGS' 6<<-EOF_OUT 7<<-'EOF_ERR'
EOF_ARGS
running ./run.sh
EOF_ERR
"
-test_expect_failure 'git bisect run: args, stdout and stderr: "--" argument' "
+test_expect_success 'git bisect run: args, stdout and stderr: "--" argument' "
test_bisect_run_args -- <<-'EOF_ARGS' 6<<-EOF_OUT 7<<-'EOF_ERR'
<-->
EOF_ARGS
EOF_ERR
"
-test_expect_failure 'git bisect run: args, stdout and stderr: "--log foo --no-log bar" arguments' "
+test_expect_success 'git bisect run: args, stdout and stderr: "--log foo --no-log bar" arguments' "
test_bisect_run_args --log foo --no-log bar <<-'EOF_ARGS' 6<<-EOF_OUT 7<<-'EOF_ERR'
<--log>
<foo>
EOF_ERR
"
-test_expect_failure 'git bisect run: args, stdout and stderr: "--bisect-start" argument' "
+test_expect_success 'git bisect run: args, stdout and stderr: "--bisect-start" argument' "
test_bisect_run_args --bisect-start <<-'EOF_ARGS' 6<<-EOF_OUT 7<<-'EOF_ERR'
<--bisect-start>
EOF_ARGS