github.com/willabides/benchdiff@v0.9.1/cmd/benchdiff/internal/gitrunner_test.go (about) 1 package internal 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func Test_runAtGitRef(t *testing.T) { 12 dir := t.TempDir() 13 fooPath := filepath.Join(dir, "foo") 14 err := os.WriteFile(fooPath, []byte("OG content"), 0o600) 15 require.NoError(t, err) 16 mustGit(t, dir, "init") 17 mustGit(t, dir, "add", "foo") 18 mustGit(t, dir, "commit", "-m", "ignore me") 19 untrackedPath := filepath.Join(dir, "untracked") 20 err = os.WriteFile(untrackedPath, []byte("untracked"), 0o600) 21 require.NoError(t, err) 22 err = os.WriteFile(fooPath, []byte("new content"), 0o600) 23 require.NoError(t, err) 24 fn := func(workDir string) { 25 var got []byte 26 _, err = os.ReadFile(filepath.Join(workDir, "untracked")) 27 require.Error(t, err) 28 wdFooPath := filepath.Join(workDir, "foo") 29 got, err = os.ReadFile(wdFooPath) 30 require.NoError(t, err) 31 require.Equal(t, "OG content", string(got)) 32 } 33 err = runAtGitRef(nil, "git", dir, "HEAD", fn) 34 require.NoError(t, err) 35 got, err := os.ReadFile(fooPath) 36 require.NoError(t, err) 37 require.Equal(t, "new content", string(got)) 38 }