diff --git a/cli/format_test.go b/cli/format_test.go index 7a4b8e8..0d86cba 100644 --- a/cli/format_test.go +++ b/cli/format_test.go @@ -65,44 +65,58 @@ func TestAllowMissingFormatter(t *testing.T) { func TestSpecifyingFormatters(t *testing.T) { as := require.New(t) - tempDir := test.TempExamples(t) - configPath := tempDir + "/treefmt.toml" - - test.WriteConfig(t, configPath, config2.Config{ + cfg := config2.Config{ Formatters: map[string]*config2.Formatter{ "elm": { Command: "touch", + Options: []string{"-m"}, Includes: []string{"*.elm"}, }, "nix": { Command: "touch", + Options: []string{"-m"}, Includes: []string{"*.nix"}, }, "ruby": { Command: "touch", + Options: []string{"-m"}, Includes: []string{"*.rb"}, }, }, - }) + } + var tempDir, configPath string + + // we reset the temp dir between successive runs as it appears that touching the file and modifying the mtime can + // is not granular enough between assertions in quick succession + setup := func() { + tempDir = test.TempExamples(t) + configPath = tempDir + "/treefmt.toml" + test.WriteConfig(t, configPath, cfg) + } + + setup() _, err := cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir) as.NoError(err) assertStats(t, as, 31, 31, 3, 3) + setup() _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "elm,nix") as.NoError(err) assertStats(t, as, 31, 31, 2, 2) + setup() _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "ruby,nix") as.NoError(err) assertStats(t, as, 31, 31, 2, 2) + setup() _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "nix") as.NoError(err) assertStats(t, as, 31, 31, 1, 1) // test bad names - + setup() _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "foo") as.Errorf(err, "formatter not found in config: foo") diff --git a/format/formatter.go b/format/formatter.go index 477f88b..cb70ca1 100644 --- a/format/formatter.go +++ b/format/formatter.go @@ -87,7 +87,7 @@ func (f *Formatter) Apply(ctx context.Context, files []*walk.File, filter bool) if len(out) > 0 { _, _ = fmt.Fprintf(os.Stderr, "%s error:\n%s\n", f.name, out) } - return fmt.Errorf("formatter %s failed to apply: %w", f.name, err) + return fmt.Errorf("formatter '%s' with options '%v' failed to apply: %w", f.config.Command, f.config.Options, err) } // diff --git a/test/examples/touch.toml b/test/examples/touch.toml index e1db694..3938e1f 100644 --- a/test/examples/touch.toml +++ b/test/examples/touch.toml @@ -1,3 +1,5 @@ [formatter.echo] command = "touch" +# only change mtime +options = ["-m"] includes = [ "*.*" ] \ No newline at end of file