diff --git a/btest b/btest index 0d69f77..4dba2ac 100755 --- a/btest +++ b/btest @@ -3041,6 +3041,9 @@ def parse_options(): warning("ignoring requested parallelism in interactive-update mode") options.threads = 1 + if options.mode == "UPDATE_INTERACTIVE" and not sys.stdout.isatty(): + error("interactive-update mode must have a TTY") + return options, parsed_args diff --git a/testing/Baseline/tests.update-interactive-requires-tty/output b/testing/Baseline/tests.update-interactive-requires-tty/output new file mode 100644 index 0000000..d3a6859 --- /dev/null +++ b/testing/Baseline/tests.update-interactive-requires-tty/output @@ -0,0 +1,2 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +interactive-update mode must have a TTY diff --git a/testing/tests/update-interactive-requires-tty.test b/testing/tests/update-interactive-requires-tty.test new file mode 100644 index 0000000..d716ead --- /dev/null +++ b/testing/tests/update-interactive-requires-tty.test @@ -0,0 +1,8 @@ +# %TEST-DOC: --update-interactive errors out early when stdout is not a TTY. +# +# Running btest inside btest redirects the inner stdout, so it is not a +# TTY and the guard must fire before any test would prompt for input. +# %TEST-EXEC-FAIL: btest -u . >output 2>&1 +# %TEST-EXEC: btest-diff output + +@TEST-EXEC: exit 1