func (s *MySuite) TestVersion(c *C) { defer os.RemoveAll("test.json") type myStruct struct { Version string User string Password string Folders []string } saveMe := myStruct{"1", "guest", "nopassword", []string{"Work", "Documents", "Music"}} config, err := quick.New(&saveMe) c.Assert(err, IsNil) c.Assert(config, Not(IsNil)) config.Save("test.json") valid, err := quick.CheckVersion("test.json", "1") c.Assert(err, IsNil) c.Assert(valid, Equals, true) valid, err = quick.CheckVersion("test.json", "2") c.Assert(err, IsNil) c.Assert(valid, Equals, false) }
func migrateSharedURLsV2ToV3() { if !isSharedURLsDataFileExists() { return } conffile, err := getSharedURLsDataFile() if err != nil { return } v3, err := quick.CheckVersion(conffile, "3") if err != nil { fatalIf(err.Trace(), "Unable to check version on share list file") } if v3 { return } // try to load V2 if possible sURLsV2, err := loadSharedURLsV2() fatalIf(err.Trace(), "Unable to load shared url version ‘1.1.0’.") if sURLsV2.Version != "1.1.0" { fatalIf(errDummy().Trace(), "Invalid version loaded ‘"+sURLsV2.Version+"’.") } sURLsV3 := newSharedURLsV3() for _, value := range sURLsV2.URLs { entry := struct { Date time.Time Message ShareMessageV3 }{ Date: value.Date, Message: ShareMessageV3{ Expiry: value.Message.Expiry, DownloadURL: value.Message.URL, Key: value.Message.Key, }, } sURLsV3.URLs = append(sURLsV3.URLs, entry) } err = saveSharedURLsV3(sURLsV3) fatalIf(err.Trace(), "Unable to save new shared url version ‘1.2.0’.") }