// LoadGaugeImpls builds the go project and runs the generated go file, // so that the gauge specific implementations get scanned func LoadGaugeImpls() error { var b bytes.Buffer buff := bufio.NewWriter(&b) if err := util.RunCommand(os.Stdout, os.Stdout, constants.CommandGo, "build", "./..."); err != nil { buff.Flush() return fmt.Errorf("Build failed: %s\n", err.Error()) } // get list of all packages in the projectRoot if err := util.RunCommand(buff, buff, constants.CommandGo, "list", "./..."); err != nil { buff.Flush() fmt.Printf("Failed to get the list of all packages: %s\n%s", err.Error(), b.String()) } tempDir := common.GetTempDir() defer os.RemoveAll(tempDir) gaugeGoMainFile := filepath.Join(tempDir, constants.GaugeTestMainFileName) f, err := os.Create(gaugeGoMainFile) if err != nil { return fmt.Errorf("Failed to create main file in %s: %s", tempDir, err.Error()) } genGaugeTestFileContents(f, b.String()) f.Close() // Scan gauge methods if err := util.RunCommand(os.Stdout, os.Stdout, constants.CommandGo, "run", gaugeGoMainFile); err != nil { return fmt.Errorf("Failed to compile project: %s\nPlease ensure the project is in GOPATH.\n", err.Error()) } return nil }
func getScreenshot() []byte { if os.Getenv(constants.ScreenshotOnFailure) == "true" { if *CustomScreenShot != nil { fn := reflect.ValueOf(*CustomScreenShot) screenShotBytes := fn.Call(make([]reflect.Value, 0)) return screenShotBytes[0].Interface().([]byte) } tmpDir := common.GetTempDir() defer os.RemoveAll(tmpDir) var b bytes.Buffer buff := bufio.NewWriter(&b) screenshotFile := filepath.Join(tmpDir, screenshotFileName) util.RunCommand(buff, buff, constants.GaugeScreenshot, screenshotFile) bytes, err := ioutil.ReadFile(screenshotFile) if err != nil { fmt.Println(err.Error()) return nil } return bytes } return nil }