func TestManager(t *testing.T) { dir, am := tmpManager(t, true) defer os.RemoveAll(dir) a, err := am.NewAccount("foo") if err != nil { t.Fatal(err) } if !strings.HasPrefix(a.File, dir) { t.Errorf("account file %s doesn't have dir prefix", a.File) } stat, err := os.Stat(a.File) if err != nil { t.Fatalf("account file %s doesn't exist (%v)", a.File, err) } if runtime.GOOS != "windows" && stat.Mode() != 0600 { t.Fatalf("account file has wrong mode: got %o, want %o", stat.Mode(), 0600) } if !am.HasAddress(a.Address) { t.Errorf("HasAccount(%x) should've returned true", a.Address) } if err := am.Update(a, "foo", "bar"); err != nil { t.Errorf("Update error: %v", err) } if err := am.DeleteAccount(a, "bar"); err != nil { t.Errorf("DeleteAccount error: %v", err) } if common.FileExist(a.File) { t.Errorf("account file %s should be gone after DeleteAccount", a.File) } if am.HasAddress(a.Address) { t.Errorf("HasAccount(%x) should've returned true after DeleteAccount", a.Address) } }
func newDb() *LDBDatabase { file := filepath.Join("/", "tmp", "ldbtesttmpfile") if common.FileExist(file) { os.RemoveAll(file) } db, _ := NewLDBDatabase(file, 0) return db }
func CheckLegalese(datadir string) { // check "first run" if !common.FileExist(datadir) { r, _ := PromptConfirm(legalese) if !r { Fatalf("Must accept to continue. Shutting down...\n") } } }
// Tests that packages generated by the binder can be successfully compiled and // the requested tester run against it. func TestBindings(t *testing.T) { // Skip the test if no Go command can be found gocmd := runtime.GOROOT() + "/bin/go" if !common.FileExist(gocmd) { t.Skip("go sdk not found for testing") } // Skip the test if the go-ethereum sources are symlinked (https://github.com/golang/go/issues/14845) linkTestCode := fmt.Sprintf("package linktest\nfunc CheckSymlinks(){\nfmt.Println(backends.NewNilBackend())\n}") linkTestDeps, err := imports.Process("", []byte(linkTestCode), nil) if err != nil { t.Fatalf("failed check for goimports symlink bug: %v", err) } if !strings.Contains(string(linkTestDeps), "go-ethereum") { t.Skip("symlinked environment doesn't support bind (https://github.com/golang/go/issues/14845)") } // Create a temporary workspace for the test suite ws, err := ioutil.TempDir("", "") if err != nil { t.Fatalf("failed to create temporary workspace: %v", err) } defer os.RemoveAll(ws) pkg := filepath.Join(ws, "bindtest") if err = os.MkdirAll(pkg, 0700); err != nil { t.Fatalf("failed to create package: %v", err) } // Generate the test suite for all the contracts for i, tt := range bindTests { // Generate the binding and create a Go source file in the workspace bind, err := Bind([]string{tt.name}, []string{tt.abi}, []string{tt.bytecode}, "bindtest") if err != nil { t.Fatalf("test %d: failed to generate binding: %v", i, err) } if err = ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+".go"), []byte(bind), 0600); err != nil { t.Fatalf("test %d: failed to write binding: %v", i, err) } // Generate the test file with the injected test code code := fmt.Sprintf("package bindtest\nimport \"testing\"\nfunc Test%s(t *testing.T){\n%s\n}", tt.name, tt.tester) blob, err := imports.Process("", []byte(code), nil) if err != nil { t.Fatalf("test %d: failed to generate tests: %v", i, err) } if err := ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+"_test.go"), blob, 0600); err != nil { t.Fatalf("test %d: failed to write tests: %v", i, err) } } // Test the entire package and report any failures cmd := exec.Command(gocmd, "test", "-v") cmd.Dir = pkg if out, err := cmd.CombinedOutput(); err != nil { t.Fatalf("failed to run binding test: %v\n%s", err, out) } }