func addProfileAndTargets(t *testing.T, name string) { t1, _ := profiles.NewTargetWithEnv("t1=cpu1-os1", "A=B,C=D") t2, _ := profiles.NewTargetWithEnv("t2=cpu2-os2@bar", "A=B,C=D") if err := profiles.AddProfileTarget(name, t1); err != nil { t.Fatal(err) } t2.InstallationDir = "bar" if err := profiles.AddProfileTarget(name, t2); err != nil { t.Fatal(err) } }
func TestBackwardsCompatibility(t *testing.T) { profiles.Clear() getProfiles := func() []*profiles.Profile { db := []*profiles.Profile{} names := profiles.Profiles() sort.Strings(names) for _, name := range names { db = append(db, profiles.LookupProfile(name)) } return db } ctx := tool.NewDefaultContext() if err := profiles.Read(ctx, "./testdata/legacy.xml"); err != nil { t.Fatal(err) } if got, want := profiles.SchemaVersion(), profiles.Original; got != want { t.Errorf("got %v, want %v", got, want) } oprofiles := getProfiles() if got, want := len(oprofiles), 5; got != want { t.Errorf("got %v, want %v", got, want) } filename := tmpFile() defer os.RemoveAll(filepath.Dir(filename)) var t1 profiles.Target t1.Set("tag=cpu,os") profiles.AddProfileTarget("__first", t1) if err := profiles.Write(ctx, filename); err != nil { t.Fatal(err) } if err := profiles.Read(ctx, filename); err != nil { t.Fatal(err) } if got, want := profiles.SchemaVersion(), profiles.V3; got != want { t.Errorf("got %v, want %v", got, want) } nprofiles := getProfiles() if got, want := len(nprofiles), 6; got != want { t.Errorf("got %v, want %v", got, want) } if got, want := nprofiles[0].Name, "__first"; got != want { t.Errorf("got %v, want %v", got, want) } for i, v := range nprofiles[1:] { if got, want := v.Name, oprofiles[i].Name; got != want { t.Errorf("got %v, want %v", got, want) } } }
func TestDuplicateTag(t *testing.T) { profiles.Clear() addProfileAndTargets(t, "b") t1 := &profiles.Target{} t1.Set("t2") err := profiles.AddProfileTarget("b", *t1) if got, want := err.Error(), "tag \"t2\" is already used"; !strings.Contains(got, want) { t.Fatalf("got %v doesn't contain %v", got, want) } }
func TestEnvFromTarget(t *testing.T) { profiles.Clear() root, _ := project.JiriRoot() ctx := tool.NewDefaultContext() profiles.InstallProfile("a", "root") profiles.InstallProfile("b", "root") t1, t2 := &profiles.Target{}, &profiles.Target{} t1.Set("t1=cpu1-os1") t1.Env.Set("A=B C=D, B=C Z=Z") t2.Set("t1=cpu1-os1") t2.Env.Set("A=Z,B=Z,Z=Z") profiles.AddProfileTarget("a", *t1) profiles.AddProfileTarget("b", *t2) tmpdir, err := ioutil.TempDir(".", "pdb") if err != nil { t.Fatal(err) } filename := filepath.Join("release", "go", "src", "v.io", "jiri", "profiles", tmpdir, "manifest") if err := profiles.Write(ctx, filepath.Join(root, filename)); err != nil { t.Fatal(err) } defer os.RemoveAll(tmpdir) ch, err := profiles.NewConfigHelper(ctx, profiles.UseProfiles, filename) if err != nil { t.Fatal(err) } ch.Vars = envvar.VarsFromSlice([]string{}) target, _ := profiles.NewTarget("t1=") ch.SetEnvFromProfiles(map[string]string{"A": " "}, map[string]bool{"Z": true}, "a,b", target) vars := ch.ToMap() if got, want := len(vars), 3; got != want { t.Errorf("got %v, want %v", got, want) } if got, want := ch.Get("A"), "B C=D Z"; got != want { t.Errorf("got %v, want %v", got, want) } if got, want := ch.Get("B"), "Z"; got != want { t.Errorf("got %v, want %v", got, want) } }
func (p *myNewProfile) Install(ctx *tool.Context, target profiles.Target) error { p.status = "installed" profiles.AddProfileTarget(p.name, target) return nil }