func (i *Install) postInstallMigrationCheck() error { if util.BeforeVersion("v0.3.10", i.TargetVers) { stump.VLog(" - ipfs pre v0.3.10 does not support checking of repo version through the tool") stump.VLog(" - if a migration is needed, you will be prompted when starting ipfs") return nil } return CheckMigration() }
func TestBinary(bin, version string) error { _, err := os.Stat(bin) if err != nil { return err } // make sure binary is executable err = os.Chmod(bin, 0755) if err != nil { return err } staging := filepath.Join(util.IpfsDir(), "update-staging") err = os.MkdirAll(staging, 0755) if err != nil { return fmt.Errorf("error creating test staging directory: %s", err) } tdir, err := ioutil.TempDir(staging, "test") if err != nil { return err } err = os.MkdirAll(tdir, 0755) if err != nil { return fmt.Errorf("error creating test staging directory: %s", err) } defer func(dir string) { // defer cleanup, bound param to avoid mistakes err = os.RemoveAll(dir) if err != nil { stump.Error("error cleaning up staging directory: ", err) } }(tdir) stump.VLog(" - running init in '%s' with new binary", tdir) _, err = runCmd(tdir, bin, "init") if err != nil { return fmt.Errorf("error initializing with new binary: %s", err) } stump.VLog(" - checking new binary outputs correct version") rversion, err := runCmd(tdir, bin, "version") if err != nil { return err } parts := strings.Fields(rversion) if !versionMatch(parts[len(parts)-1], version[1:]) { return fmt.Errorf("version didnt match") } if util.BeforeVersion("v0.3.8", version) { stump.Log("== skipping tests with daemon, versions before 0.3.8 do not support port zero ==") return nil } // set up ports in config so we dont interfere with an already running daemon stump.VLog(" - tweaking test config to avoid external interference") err = tweakConfig(tdir) if err != nil { return err } stump.VLog(" - starting up daemon") daemon, err := StartDaemon(tdir, bin) if err != nil { return fmt.Errorf("error starting daemon: %s", err) } defer func() { stump.VLog(" - killing test daemon") err := daemon.Close() if err != nil { stump.VLog(" - error killing test daemon: %s (continuing anyway)", err) } stump.Log("success!") }() // test some basic things against the daemon err = testFileAdd(tdir, bin) if err != nil { return fmt.Errorf("test file add: %s", err) } err = testRefsList(tdir, bin) if err != nil { return fmt.Errorf("test refs list: %s", err) } return nil }