Skip to content

Commit

Permalink
Merge pull request #10 from numtide/fix/race-condition
Browse files Browse the repository at this point in the history
fix: brittle test
  • Loading branch information
brianmcgee authored May 10, 2024
2 parents 39b73b8 + 92321c8 commit 3d165d7
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 11 deletions.
26 changes: 20 additions & 6 deletions cli/format_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down
8 changes: 4 additions & 4 deletions cli/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ func cmd(t *testing.T, args ...string) ([]byte, error) {

func assertStats(t *testing.T, as *require.Assertions, traversed int32, emitted int32, matched int32, formatted int32) {
t.Helper()
as.Equal(traversed, stats.Value(stats.Traversed))
as.Equal(emitted, stats.Value(stats.Emitted))
as.Equal(matched, stats.Value(stats.Matched))
as.Equal(formatted, stats.Value(stats.Formatted))
as.Equal(traversed, stats.Value(stats.Traversed), "stats.traversed")
as.Equal(emitted, stats.Value(stats.Emitted), "stats.emitted")
as.Equal(matched, stats.Value(stats.Matched), "stats.matched")
as.Equal(formatted, stats.Value(stats.Formatted), "stats.formatted")
}

func assertFormatted(t *testing.T, as *require.Assertions, output []byte, count int) {
Expand Down
2 changes: 1 addition & 1 deletion format/formatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

//
Expand Down
2 changes: 2 additions & 0 deletions test/examples/touch.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
[formatter.echo]
command = "touch"
# only change mtime
options = ["-m"]
includes = [ "*.*" ]

0 comments on commit 3d165d7

Please sign in to comment.