treefmt/test/temp.go
Brian McGee 9934a5764d
fix: --stdin flag
This was incorrectly ported from Rust to Go.

When provided, `treefmt` will take the contents of stdin and place them into the file provided with the `--stdin` flag, then format it according to the configured formatters.

If the file doesn't exist it is created. If it exists, it is first truncated and then populated with stdin.

Signed-off-by: Brian McGee <brian@bmcgee.ie>
2024-06-03 17:07:34 +01:00

70 lines
1.6 KiB
Go

package test
import (
"io"
"os"
"testing"
"git.numtide.com/numtide/treefmt/config"
"github.com/BurntSushi/toml"
cp "github.com/otiai10/copy"
"github.com/stretchr/testify/require"
)
func WriteConfig(t *testing.T, path string, cfg config.Config) {
t.Helper()
f, err := os.Create(path)
if err != nil {
t.Fatalf("failed to create a new config file: %v", err)
}
encoder := toml.NewEncoder(f)
if err = encoder.Encode(cfg); err != nil {
t.Fatalf("failed to write to config file: %v", err)
}
}
func TempExamples(t *testing.T) string {
tempDir := t.TempDir()
require.NoError(t, cp.Copy("../test/examples", tempDir), "failed to copy test data to temp dir")
return tempDir
}
func TempFile(t *testing.T, dir string, pattern string, contents *string) *os.File {
t.Helper()
file, err := os.CreateTemp(dir, pattern)
require.NoError(t, err, "failed to create temp file")
if contents == nil {
return file
}
_, err = file.WriteString(*contents)
require.NoError(t, err, "failed to write contents to temp file")
require.NoError(t, file.Close(), "failed to close temp file")
file, err = os.Open(file.Name())
require.NoError(t, err, "failed to open temp file")
return file
}
func ReadFile(t *testing.T, path string) []byte {
f, err := os.Open(path)
require.NoError(t, err, "failed to open file")
defer f.Close()
bytes, err := io.ReadAll(f)
require.NoError(t, err, "failed to read file")
return bytes
}
func RecreateSymlink(t *testing.T, path string) error {
t.Helper()
src, err := os.Readlink(path)
require.NoError(t, err, "failed to read symlink")
require.NoError(t, os.Remove(path), "failed to remove symlink")
return os.Symlink(src, path)
}