blob: 9c1205ec1c8c30ad7e7aac8a120f5c353f50e138 [file] [log] [blame]
package project_test
import (
"fmt"
"os"
"path/filepath"
"testing"
"github.com/google/go-cmp/cmp"
"go.fuchsia.dev/jiri/jiritest"
"go.fuchsia.dev/jiri/project"
)
func TestWriteGitExcludeFiles(t *testing.T) {
tests := []struct {
input []string
tag string
initialFile string
want string
}{
{
[]string{"build/cipd.gni"},
"package",
"",
"# BEGIN jiri package\n/build/cipd.gni\n# END jiri package\n",
},
{
[]string{"build/cipd.gni"},
"package",
"# BEGIN jiri project\n/build/checkout.gni\n# END jiri project\n",
"# BEGIN jiri project\n/build/checkout.gni\n# END jiri project\n# BEGIN jiri package\n/build/cipd.gni\n# END jiri package\n",
},
{
[]string{"build/checkout.gni"},
"project",
"# BEGIN jiri project\n/build/checkout_test.gni\n# END jiri project\n",
"# BEGIN jiri project\n/build/checkout.gni\n# END jiri project\n",
},
{
[]string{"build/cipd.gni"},
"package",
"/foo/baz\n",
"/foo/baz\n# BEGIN jiri package\n/build/cipd.gni\n# END jiri package\n",
},
}
for _, tc := range tests {
t.Run(fmt.Sprint(tc), func(t *testing.T) {
fake, cleanup := jiritest.NewFakeJiriRoot(t)
defer cleanup()
// write initialFile
gitExclude := filepath.Join(fake.X.Root, ".git/info/exclude")
if err := project.SafeWriteFile(fake.X, gitExclude, []byte(tc.initialFile)); err != nil {
t.Errorf("Unable to write initial file for testing writeGitExcludeFiles: %v", err)
}
if err := project.WriteGitExcludeFile(fake.X, tc.input, tc.tag); err != nil {
t.Errorf("WritePackageFlags failed due to error: %v", err)
}
data, err := os.ReadFile(gitExclude)
if err != nil {
t.Errorf("Unable to read .git/info/exclude file: %v", err)
}
got := string(data)
if !cmp.Equal(got, tc.want) {
t.Errorf("Write git exclude files %s returned %v, want %v", tc.input, got, tc.want)
}
})
}
}