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 TestReadingV0(t *testing.T) { pdb := profiles.NewDB() jirix, cleanup := jiritest.NewX(t) defer cleanup() if err := pdb.Read(jirix, "./testdata/legacy.xml"); err != nil { t.Fatal(err) } if got, want := pdb.SchemaVersion(), profiles.Original; got != want { t.Errorf("got %v, want %v", got, want) } oprofiles := pdb.Profiles() 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("cpu-os@1") pdb.InstallProfile("", "__first", "") if err := pdb.AddProfileTarget("", "__first", t1); err != nil { t.Fatal(err) } if err := pdb.Write(jirix, "", filename); err != nil { t.Fatal(err) } if err := pdb.Read(jirix, filename); err != nil { t.Fatal(err) } if got, want := pdb.SchemaVersion(), profiles.V5; got != want { t.Errorf("got %v, want %v", got, want) } nprofiles := pdb.Profiles() if got, want := len(nprofiles), 6; got != want { t.Fatalf("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) } } }