func createOrAppendToGemFile() { destFile := path.Join(projectRoot, gem_file) srcFile := path.Join(skelDir, gem_file) showMessage("create", destFile) if !common.FileExists(destFile) { err := common.CopyFile(srcFile, destFile) if err != nil { showMessage("error", fmt.Sprintf("Failed to copy %s. %s", srcFile, err.Error())) } } showMessage("append", destFile) f, err := os.OpenFile(destFile, os.O_APPEND|os.O_WRONLY, 0666) if err != nil { panic(err) } defer f.Close() version, err := common.GetGaugePluginVersion("ruby") if err != nil { panic(err) } if _, err = f.WriteString(fmt.Sprintf("gem 'gauge-ruby', '~>%s', :group => [:development, :test]\n", version)); err != nil { panic(err) } }
func createJavaPropertiesFile() { destFile := filepath.Join(envDir, "default", "java.properties") showMessage("create", destFile) if common.FileExists(destFile) { showMessage("skip", destFile) } else { srcFile := filepath.Join(pluginDir, skelDir, envDir, "java.properties") if !common.FileExists(srcFile) { showMessage("error", fmt.Sprintf("java.properties does not exist at %s. \n", srcFile)) return } err := common.CopyFile(srcFile, destFile) if err != nil { showMessage("error", fmt.Sprintf("Failed to copy %s. %s \n", srcFile, err.Error())) } } }
func createStepImplementationClass() { javaSrc := filepath.Join(defaultSrcDir, "test", java) destFile := filepath.Join(javaSrc, step_implementation_class) showMessage("create", destFile) if common.FileExists(destFile) { showMessage("skip", destFile) } else { srcFile := filepath.Join(pluginDir, skelDir, step_implementation_class) if !common.FileExists(srcFile) { showMessage("error", fmt.Sprintf("%s Does not exist.\n", step_implementation_class)) return } err := common.CopyFile(srcFile, destFile) if err != nil { showMessage("error", fmt.Sprintf("Failed to copy %s. %s \n", srcFile, err.Error())) } } }
func GetSpecFiles(specSource string) []string { specFiles := make([]string, 0) if common.DirExists(specSource) { specFiles = append(specFiles, FindSpecFilesIn(specSource)...) } else if common.FileExists(specSource) && IsValidSpecExtension(specSource) { specFile, _ := filepath.Abs(specSource) specFiles = append(specFiles, specFile) } return specFiles }
// GetSpecFiles returns the list of spec files present at the given path. // If the path itself represents a spec file, it returns the same. func GetSpecFiles(path string) []string { var specFiles []string if common.DirExists(path) { specFiles = append(specFiles, FindSpecFilesIn(path)...) } else if common.FileExists(path) && IsValidSpecExtension(path) { f, _ := filepath.Abs(path) specFiles = append(specFiles, f) } return specFiles }
func GetLanguageJSONFilePath(language string) (string, error) { languageInstallDir, err := GetInstallDir(language, "") if err != nil { return "", err } languageJSON := filepath.Join(languageInstallDir, fmt.Sprintf("%s.json", language)) if !common.FileExists(languageJSON) { return "", fmt.Errorf("Failed to find the implementation for: %s. %s does not exist.", language, languageJSON) } return languageJSON, nil }
func installPluginFromZip(zipFile string, language string) error { unzippedPluginDir, err := common.UnzipArchive(zipFile) if err != nil { return fmt.Errorf("Failed to unzip plugin-zip file %s.", err.Error()) } logger.Info("Plugin unzipped to => %s\n", unzippedPluginDir) hasPluginJSON := common.FileExists(filepath.Join(unzippedPluginDir, pluginJSON)) if hasPluginJSON { return installPluginFromDir(unzippedPluginDir) } return installRunnerFromDir(unzippedPluginDir, language) }
func createStepImplementationFile() { destFile := path.Join(projectRoot, step_implementations_dir, step_implementation_file) showMessage("create", destFile) if common.FileExists(destFile) { showMessage("skip", destFile) } else { srcFile := path.Join(skelDir, step_implementation_file) err := common.CopyFile(srcFile, destFile) if err != nil { showMessage("error", fmt.Sprintf("Failed to copy %s. %s", srcFile, err.Error())) } } }
func createRubyPropertiesFile() { destFile := path.Join(projectRoot, envDir, "default", ruby_properties_file) showMessage("create", destFile) if common.FileExists(destFile) { showMessage("skip", destFile) } else { srcFile := path.Join(skelDir, envDir, ruby_properties_file) err := common.CopyFile(srcFile, destFile) if err != nil { showMessage("error", fmt.Sprintf("Failed to copy %s. %s", srcFile, err.Error())) } } }
func installPluginFromZip(zipFile string, language string) error { unzippedPluginDir, err := common.UnzipArchive(zipFile) if err != nil { return errors.New(fmt.Sprintf("Failed to unzip plugin-zip file %s.", err)) } logger.Log.Info("Plugin unzipped to => %s\n", unzippedPluginDir) hasPluginJson := common.FileExists(filepath.Join(unzippedPluginDir, pluginJson)) if hasPluginJson { return installPluginFromDir(unzippedPluginDir) } else { return installRunnerFromDir(unzippedPluginDir, language) } }
func parsePluginJSON(pluginDir, pluginName string) (*GaugePlugin, error) { var file string if common.FileExists(filepath.Join(pluginDir, pluginName+jsonExt)) { file = filepath.Join(pluginDir, pluginName+jsonExt) } else { file = filepath.Join(pluginDir, pluginJSON) } var gp GaugePlugin contents, err := common.ReadFileContents(file) if err != nil { return nil, err } if err = json.Unmarshal([]byte(contents), &gp); err != nil { return nil, err } return &gp, nil }
func IsPluginInstalled(pluginName, pluginVersion string) bool { pluginsInstallDir, err := common.GetPluginsInstallDir(pluginName) if err != nil { return false } thisPluginDir := filepath.Join(pluginsInstallDir, pluginName) if !common.DirExists(thisPluginDir) { return false } if pluginVersion != "" { pluginJSON := filepath.Join(thisPluginDir, pluginVersion, common.PluginJSONFile) if common.FileExists(pluginJSON) { return true } return false } return true }
func InstallPluginZip(zipFile string, pluginName string) { tempDir := common.GetTempDir() unzippedPluginDir, err := common.UnzipArchive(zipFile, tempDir) defer common.Remove(tempDir) if err != nil { common.Remove(tempDir) logger.Fatalf("Failed to install plugin. %s\n", err.Error()) } logger.Info("Plugin unzipped to => %s\n", unzippedPluginDir) hasPluginJSON := common.FileExists(filepath.Join(unzippedPluginDir, pluginJSON)) if hasPluginJSON { err = installPluginFromDir(unzippedPluginDir) } else { err = installRunnerFromDir(unzippedPluginDir, pluginName) } if err != nil { common.Remove(tempDir) logger.Fatalf("Failed to install plugin. %s\n", err.Error()) } logger.Info("Successfully installed plugin from file.") }
func addDefaultPropertiesToProject() { defaultPropertiesFile := getDefaultPropertiesFile() reportsDirProperty := &(common.Property{ Comment: "The path to the gauge reports directory. Should be either relative to the project directory or an absolute path", Name: gaugeReportsDirEnvName, DefaultValue: defaultReportsDir}) overwriteReportProperty := &(common.Property{ Comment: "Set as false if gauge reports should not be overwritten on each execution. A new time-stamped directory will be created on each execution.", Name: overwriteReportsEnvProperty, DefaultValue: "true"}) if !common.FileExists(defaultPropertiesFile) { fmt.Printf("Failed to setup html report plugin in project. Default properties file does not exist at %s. \n", defaultPropertiesFile) return } if err := common.AppendProperties(defaultPropertiesFile, reportsDirProperty, overwriteReportProperty); err != nil { fmt.Printf("Failed to setup html report plugin in project: %s \n", err) return } fmt.Println("Succesfully added configurations for html-report to env/default/default.properties") }
func (s *MySuite) TestDownloadSuccess(c *C) { os.Mkdir("temp", 0755) defer os.RemoveAll("temp") handler := func(w http.ResponseWriter, r *http.Request) { http.Error(w, "All OK", http.StatusOK) } server := httptest.NewServer(http.HandlerFunc(handler)) defer server.Close() actualDownloadedFilePath, err := Download(server.URL, "temp", "", false) expectedDownloadFilePath := filepath.Join("temp", strings.TrimPrefix(server.URL, "http://")) absoluteDownloadFilePath, _ := filepath.Abs(expectedDownloadFilePath) expectedFileContents := "All OK\n" c.Assert(err, Equals, nil) c.Assert(actualDownloadedFilePath, Equals, expectedDownloadFilePath) c.Assert(common.FileExists(absoluteDownloadFilePath), Equals, true) actualFileContents, err := common.ReadFileContents(absoluteDownloadFilePath) c.Assert(err, Equals, nil) c.Assert(actualFileContents, Equals, expectedFileContents) }
func createProjectTemplate(language string) error { if !install.IsCompatibleLanguagePluginInstalled(language) { logger.Info("Compatible %s plugin is not installed \n", language) logger.Info("Installing plugin => %s ... \n\n", language) if result := install.InstallPlugin(language, ""); !result.Success { return fmt.Errorf("Failed to install plugin %s . %s \n", language, result.Error.Error()) } } // Create the project manifest showMessage("create", common.ManifestFile) if common.FileExists(common.ManifestFile) { showMessage("skip", common.ManifestFile) } manifest := &manifest.Manifest{Language: language, Plugins: defaultPlugins} if err := manifest.Save(); err != nil { return err } // creating the spec directory showMessage("create", specsDirName) if !common.DirExists(specsDirName) { err := os.Mkdir(specsDirName, common.NewDirectoryPermissions) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", specsDirName, err.Error())) } } else { showMessage("skip", specsDirName) } // Copying the skeleton file skelFile, err := common.GetSkeletonFilePath(skelFileName) if err != nil { return err } specFile := path.Join(specsDirName, skelFileName) showMessage("create", specFile) if common.FileExists(specFile) { showMessage("skip", specFile) } else { err = common.CopyFile(skelFile, specFile) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", specFile, err.Error())) } } // Creating the env directory showMessage("create", common.EnvDirectoryName) if !common.DirExists(common.EnvDirectoryName) { err = os.Mkdir(common.EnvDirectoryName, common.NewDirectoryPermissions) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", common.EnvDirectoryName, err.Error())) } } defaultEnv := path.Join(common.EnvDirectoryName, envDefaultDirName) showMessage("create", defaultEnv) if !common.DirExists(defaultEnv) { err = os.Mkdir(defaultEnv, common.NewDirectoryPermissions) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", defaultEnv, err.Error())) } } defaultJSON, err := common.GetSkeletonFilePath(path.Join(common.EnvDirectoryName, common.DefaultEnvFileName)) if err != nil { return err } defaultJSONDest := path.Join(defaultEnv, common.DefaultEnvFileName) showMessage("create", defaultJSONDest) err = common.CopyFile(defaultJSON, defaultJSONDest) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", defaultJSONDest, err.Error())) } return runner.ExecuteInitHookForRunner(language) }
func createProjectTemplate(language string) error { // Create the project manifest showMessage("create", common.ManifestFile) if common.FileExists(common.ManifestFile) { showMessage("skip", common.ManifestFile) } manifest := &manifest.Manifest{Language: language, Plugins: defaultPlugins} if err := manifest.Save(); err != nil { return err } // creating the spec directory showMessage("create", specsDirName) if !common.DirExists(specsDirName) { err := os.Mkdir(specsDirName, common.NewDirectoryPermissions) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", specsDirName, err.Error())) } } else { showMessage("skip", specsDirName) } // Copying the skeleton file skelFile, err := common.GetSkeletonFilePath(skelFileName) if err != nil { return err } specFile := path.Join(specsDirName, skelFileName) showMessage("create", specFile) if common.FileExists(specFile) { showMessage("skip", specFile) } else { err = common.CopyFile(skelFile, specFile) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", specFile, err.Error())) } } // Creating the env directory showMessage("create", common.EnvDirectoryName) if !common.DirExists(common.EnvDirectoryName) { err = os.Mkdir(common.EnvDirectoryName, common.NewDirectoryPermissions) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", common.EnvDirectoryName, err.Error())) } } defaultEnv := path.Join(common.EnvDirectoryName, envDefaultDirName) showMessage("create", defaultEnv) if !common.DirExists(defaultEnv) { err = os.Mkdir(defaultEnv, common.NewDirectoryPermissions) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", defaultEnv, err.Error())) } } defaultJSON, err := common.GetSkeletonFilePath(path.Join(common.EnvDirectoryName, common.DefaultEnvFileName)) if err != nil { return err } defaultJSONDest := path.Join(defaultEnv, common.DefaultEnvFileName) showMessage("create", defaultJSONDest) err = common.CopyFile(defaultJSON, defaultJSONDest) if err != nil { showMessage("error", fmt.Sprintf("Failed to create %s. %s", defaultJSONDest, err.Error())) } return runner.ExecuteInitHookForRunner(language) }