feat: improve specifying formatters test

Signed-off-by: Brian McGee <brian@bmcgee.ie>
This commit is contained in:
Brian McGee 2024-05-10 11:43:28 +01:00
parent 53ea16a42c
commit 92321c8737
No known key found for this signature in database
GPG Key ID: D49016E76AD1E8C0
3 changed files with 23 additions and 7 deletions

View File

@ -65,44 +65,58 @@ func TestAllowMissingFormatter(t *testing.T) {
func TestSpecifyingFormatters(t *testing.T) { func TestSpecifyingFormatters(t *testing.T) {
as := require.New(t) as := require.New(t)
tempDir := test.TempExamples(t) cfg := config2.Config{
configPath := tempDir + "/treefmt.toml"
test.WriteConfig(t, configPath, config2.Config{
Formatters: map[string]*config2.Formatter{ Formatters: map[string]*config2.Formatter{
"elm": { "elm": {
Command: "touch", Command: "touch",
Options: []string{"-m"},
Includes: []string{"*.elm"}, Includes: []string{"*.elm"},
}, },
"nix": { "nix": {
Command: "touch", Command: "touch",
Options: []string{"-m"},
Includes: []string{"*.nix"}, Includes: []string{"*.nix"},
}, },
"ruby": { "ruby": {
Command: "touch", Command: "touch",
Options: []string{"-m"},
Includes: []string{"*.rb"}, 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) _, err := cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir)
as.NoError(err) as.NoError(err)
assertStats(t, as, 31, 31, 3, 3) assertStats(t, as, 31, 31, 3, 3)
setup()
_, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "elm,nix") _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "elm,nix")
as.NoError(err) as.NoError(err)
assertStats(t, as, 31, 31, 2, 2) assertStats(t, as, 31, 31, 2, 2)
setup()
_, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "ruby,nix") _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "ruby,nix")
as.NoError(err) as.NoError(err)
assertStats(t, as, 31, 31, 2, 2) assertStats(t, as, 31, 31, 2, 2)
setup()
_, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "nix") _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "nix")
as.NoError(err) as.NoError(err)
assertStats(t, as, 31, 31, 1, 1) assertStats(t, as, 31, 31, 1, 1)
// test bad names // test bad names
setup()
_, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "foo") _, err = cmd(t, "-c", "--config-file", configPath, "--tree-root", tempDir, "--formatters", "foo")
as.Errorf(err, "formatter not found in config: foo") as.Errorf(err, "formatter not found in config: foo")

View File

@ -87,7 +87,7 @@ func (f *Formatter) Apply(ctx context.Context, files []*walk.File, filter bool)
if len(out) > 0 { if len(out) > 0 {
_, _ = fmt.Fprintf(os.Stderr, "%s error:\n%s\n", f.name, out) _, _ = 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)
} }
// //

View File

@ -1,3 +1,5 @@
[formatter.echo] [formatter.echo]
command = "touch" command = "touch"
# only change mtime
options = ["-m"]
includes = [ "*.*" ] includes = [ "*.*" ]