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  }