mirror of
https://github.com/numtide/treefmt.git
synced 2024-08-16 12:20:25 +03:00
089eb171a0
This was incorrectly ported from Rust to Go. When `--stdin` is provided, `treefmt` copy the `stdin` into a temporary file, using the first path argument as the filename. This allows the user to control which formatters will match this temp file based on their `treefmt` config. After the formatters have been applied, the contents of this temporary file are then printed to stdout and the temp file is removed. Signed-off-by: Brian McGee <brian@bmcgee.ie>
68 lines
1.6 KiB
Go
68 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 ReadStdout(t *testing.T) string {
|
|
_, err := os.Stdout.Seek(0, 0)
|
|
require.NoError(t, err, "failed to seek to 0")
|
|
bytes, err := io.ReadAll(os.Stdout)
|
|
require.NoError(t, err, "failed to read")
|
|
return string(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)
|
|
}
|