feat: add a --save option to avoid the interactive prompt on mire record for save

This commit is contained in:
2026-03-24 20:42:14 +00:00
parent 9e4604e9fe
commit 2171e2d907
5 changed files with 70 additions and 16 deletions
+8 -2
View File
@@ -11,13 +11,15 @@ import (
)
func newRecordCommand() *cobra.Command {
return &cobra.Command{
var save bool
cmd := &cobra.Command{
Use: "record <path>",
Short: "Record a new CLI scenario",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
path := filepath.Clean(args[0])
createdPath, err := mire.Record(path)
createdPath, err := mire.Record(path, mire.RecordOptions{Save: save})
if err != nil {
if errors.Is(err, mire.ErrRecordingDiscarded) {
return nil
@@ -30,4 +32,8 @@ func newRecordCommand() *cobra.Command {
return nil
},
}
cmd.Flags().BoolVar(&save, "save", false, "Save the recording without prompting")
return cmd
}
+42
View File
@@ -130,6 +130,48 @@ func TestRunRecord(t *testing.T) {
})
}
func TestRunRecordSaveFlagSkipsPrompt(t *testing.T) {
testutil.AddFakeRecordDependencies(t, "bwrap", "bash")
root := t.TempDir()
wantDir := filepath.Join(root, "e2e")
testutil.WithWorkingDir(t, root, func() struct{} {
initStdout, initStderr := testutil.CaptureOutput(t, func() {
if got := Run([]string{"init"}); got != 0 {
t.Fatalf("Run() code = %d, want %d", got, 0)
}
})
if initStdout != prefixed("Done initialising...\n") {
t.Fatalf("stdout = %q, want %q", initStdout, prefixed("Done initialising...\n"))
}
if initStderr != "" {
t.Fatalf("stderr = %q, want empty", initStderr)
}
stdout, stderr := testutil.CapturePromptedOutput(t, "exit\n", "", "", func() {
if got := Run([]string{"record", "--save", "suite/spec"}); got != 0 {
t.Fatalf("Run() code = %d, want %d", got, 0)
}
})
createdPath := filepath.Join(wantDir, "suite", "spec")
if !strings.Contains(stdout, createdPath) {
t.Fatalf("stdout = %q, want created path", stdout)
}
if strings.Contains(stderr, "Save recording?") {
t.Fatalf("stderr = %q, want save prompt omitted", stderr)
}
for _, name := range []string{"in", "out"} {
if _, err := os.Stat(filepath.Join(createdPath, name)); err != nil {
t.Fatalf("Stat(%q) error = %v", filepath.Join(createdPath, name), err)
}
}
return struct{}{}
})
}
func TestRunRewrite(t *testing.T) {
testutil.AddFakeRecordDependencies(t, "bwrap", "bash")