project tests should use fake.CreateRemoteProject, not setupProject.
fake.CreateRemoteProject is a better way to create a remote project than
setupNewProject, which is old and had some cruft and is more likely to
break in the future.
Change-Id: Iac8b01c0094d0c9bd48ac135cdb64b74e239e89e
diff --git a/project/project_test.go b/project/project_test.go
index d8b44f1..a02f141 100644
--- a/project/project_test.go
+++ b/project/project_test.go
@@ -69,38 +69,6 @@
return fmt.Sprintf("project-%d", i)
}
-func setupNewProject(t *testing.T, jirix *jiri.X, dir, name string, ignore bool) string {
- projectDir, perm := filepath.Join(dir, name), os.FileMode(0755)
- s := jirix.NewSeq()
- if err := s.MkdirAll(projectDir, perm).Done(); err != nil {
- t.Fatalf("%v", err)
- }
- cwd, err := os.Getwd()
- if err != nil {
- t.Fatalf("%v", err)
- }
- defer jirix.NewSeq().Chdir(cwd)
- if err := s.Chdir(projectDir).Done(); err != nil {
- t.Fatalf("%v", err)
- }
- if err := gitutil.New(jirix.NewSeq()).Init(projectDir); err != nil {
- t.Fatalf("%v", err)
- }
- if ignore {
- ignoreFile := filepath.Join(projectDir, ".gitignore")
- if err := s.WriteFile(ignoreFile, []byte(jiri.ProjectMetaDir), os.FileMode(0644)).Done(); err != nil {
- t.Fatalf("%v", err)
- }
- if err := gitutil.New(jirix.NewSeq()).Add(ignoreFile); err != nil {
- t.Fatalf("%v", err)
- }
- }
- if err := gitutil.New(jirix.NewSeq()).Commit(); err != nil {
- t.Fatalf("%v", err)
- }
- return projectDir
-}
-
func writeReadme(t *testing.T, jirix *jiri.X, projectDir, message string) {
path, perm := filepath.Join(projectDir, "README"), os.FileMode(0644)
if err := ioutil.WriteFile(path, []byte(message), perm); err != nil {
@@ -130,12 +98,27 @@
// Create some projects.
numProjects, projectPaths := 3, []string{}
for i := 0; i < numProjects; i++ {
+ s := jirix.NewSeq()
name := projectName(i)
- path := setupNewProject(t, jirix, jirix.Root, name, true)
+ path := filepath.Join(jirix.Root, name)
+ if err := s.MkdirAll(path, 0755).Done(); err != nil {
+ t.Fatal(err)
+ }
+
+ // Initialize empty git repository. The commit is necessary, otherwise
+ // "git rev-parse master" fails.
+ git := gitutil.New(s, gitutil.RootDirOpt(path))
+ if err := git.Init(path); err != nil {
+ t.Fatal(err)
+ }
+ if err := git.Commit(); err != nil {
+ t.Fatal(err)
+ }
+
+ // Write project metadata.
p := project.Project{
- Path: path,
- Name: name,
- Protocol: "git",
+ Path: path,
+ Name: name,
}
if err := project.InternalWriteMetadata(jirix, p, path); err != nil {
t.Fatalf("writeMetadata %v %v) failed: %v\n", p, path, err)
@@ -147,10 +130,8 @@
manifest := project.Manifest{
Projects: []project.Project{
{
- Name: projectPaths[0],
- Path: projectName(0),
- Protocol: "git",
- Remote: projectPaths[0],
+ Name: projectName(0),
+ Path: projectPaths[0],
},
},
}
@@ -522,13 +503,19 @@
}
func TestRemoteImportCycle(t *testing.T) {
- jirix, cleanup := jiritest.NewX(t)
+ fake, cleanup := jiritest.NewFakeJiriRoot(t)
defer cleanup()
- remoteDir := filepath.Join(jirix.Root, ".remote")
- // Set up two remote manifest projects, remote1 and remote2.
- remote1 := setupNewProject(t, jirix, remoteDir, "remote1", true)
- remote2 := setupNewProject(t, jirix, remoteDir, "remote2", true)
+ // Set up two remote manifest projects, remote1 and remote1.
+ if err := fake.CreateRemoteProject("remote1"); err != nil {
+ t.Fatal(err)
+ }
+ if err := fake.CreateRemoteProject("remote2"); err != nil {
+ t.Fatal(err)
+ }
+ remote1 := fake.Projects["remote1"]
+ remote2 := fake.Projects["remote2"]
+
fileA, fileB := filepath.Join(remote1, "A"), filepath.Join(remote2, "B")
// Set up the cycle .jiri_manifest -> remote1+A -> remote2+B -> remote1+A
@@ -547,33 +534,39 @@
{Manifest: "A", Name: "n3", Remote: remote1},
},
}
- if err := jiriManifest.ToFile(jirix, jirix.JiriManifestFile()); err != nil {
+ if err := jiriManifest.ToFile(fake.X, fake.X.JiriManifestFile()); err != nil {
t.Fatal(err)
}
- if err := manifestA.ToFile(jirix, fileA); err != nil {
+ if err := manifestA.ToFile(fake.X, fileA); err != nil {
t.Fatal(err)
}
- if err := manifestB.ToFile(jirix, fileB); err != nil {
+ if err := manifestB.ToFile(fake.X, fileB); err != nil {
t.Fatal(err)
}
- commitFile(t, jirix, remote1, fileA, "commit A")
- commitFile(t, jirix, remote2, fileB, "commit B")
+ commitFile(t, fake.X, remote1, fileA, "commit A")
+ commitFile(t, fake.X, remote2, fileB, "commit B")
// The update should complain about the cycle.
- err := project.UpdateUniverse(jirix, false)
+ err := project.UpdateUniverse(fake.X, false)
if got, want := fmt.Sprint(err), "import cycle detected in remote manifest imports"; !strings.Contains(got, want) {
t.Errorf("got error %v, want substr %v", got, want)
}
}
func TestFileAndRemoteImportCycle(t *testing.T) {
- jirix, cleanup := jiritest.NewX(t)
+ fake, cleanup := jiritest.NewFakeJiriRoot(t)
defer cleanup()
- remoteDir := filepath.Join(jirix.Root, ".remote")
// Set up two remote manifest projects, remote1 and remote2.
- remote1 := setupNewProject(t, jirix, remoteDir, "remote1", true)
- remote2 := setupNewProject(t, jirix, remoteDir, "remote2", true)
+ // Set up two remote manifest projects, remote1 and remote1.
+ if err := fake.CreateRemoteProject("remote1"); err != nil {
+ t.Fatal(err)
+ }
+ if err := fake.CreateRemoteProject("remote2"); err != nil {
+ t.Fatal(err)
+ }
+ remote1 := fake.Projects["remote1"]
+ remote2 := fake.Projects["remote2"]
fileA, fileD := filepath.Join(remote1, "A"), filepath.Join(remote1, "D")
fileB, fileC := filepath.Join(remote2, "B"), filepath.Join(remote2, "C")
@@ -603,28 +596,28 @@
{File: "A"},
},
}
- if err := jiriManifest.ToFile(jirix, jirix.JiriManifestFile()); err != nil {
+ if err := jiriManifest.ToFile(fake.X, fake.X.JiriManifestFile()); err != nil {
t.Fatal(err)
}
- if err := manifestA.ToFile(jirix, fileA); err != nil {
+ if err := manifestA.ToFile(fake.X, fileA); err != nil {
t.Fatal(err)
}
- if err := manifestB.ToFile(jirix, fileB); err != nil {
+ if err := manifestB.ToFile(fake.X, fileB); err != nil {
t.Fatal(err)
}
- if err := manifestC.ToFile(jirix, fileC); err != nil {
+ if err := manifestC.ToFile(fake.X, fileC); err != nil {
t.Fatal(err)
}
- if err := manifestD.ToFile(jirix, fileD); err != nil {
+ if err := manifestD.ToFile(fake.X, fileD); err != nil {
t.Fatal(err)
}
- commitFile(t, jirix, remote1, fileA, "commit A")
- commitFile(t, jirix, remote2, fileB, "commit B")
- commitFile(t, jirix, remote2, fileC, "commit C")
- commitFile(t, jirix, remote1, fileD, "commit D")
+ commitFile(t, fake.X, remote1, fileA, "commit A")
+ commitFile(t, fake.X, remote2, fileB, "commit B")
+ commitFile(t, fake.X, remote2, fileC, "commit C")
+ commitFile(t, fake.X, remote1, fileD, "commit D")
// The update should complain about the cycle.
- err := project.UpdateUniverse(jirix, false)
+ err := project.UpdateUniverse(fake.X, false)
if got, want := fmt.Sprint(err), "import cycle detected"; !strings.Contains(got, want) {
t.Errorf("got error %v, want substr %v", got, want)
}