public GenerateStepDefinitionSkeletonForm(string featureTitle, StepInstance[] steps, Project specFlowProject, StepDefinitionSkeletonStyle stepDefinitionSkeletonStyle, ProgrammingLanguage defaultLanguage, DTE dte) { this.dte = dte; InitializeComponent(); stepsList.BeginUpdate(); stepsList.Items.Clear(); foreach (var step in steps) { stepsList.Items.Add(new ListItem(step), true); } stepsList.EndUpdate(); classNameTextBox.Text = string.Format("{0} Steps", featureTitle).ToIdentifier(); styleComboBox.BeginUpdate(); var styles = Enum.GetValues(typeof(StepDefinitionSkeletonStyle)).Cast <StepDefinitionSkeletonStyle>() .Where(value => value != StepDefinitionSkeletonStyle.MethodNameRegex || defaultLanguage == ProgrammingLanguage.FSharp) .ToArray(); styleComboBox.Items.Clear(); styleComboBox.Items.AddRange(styles.Select(s => new StyleItem(s)).ToArray <object>()); int selectedIndex = Array.IndexOf(styles, stepDefinitionSkeletonStyle); styleComboBox.SelectedIndex = selectedIndex < 0 ? 0 : selectedIndex; styleComboBox.EndUpdate(); defaultFolder = Path.Combine(VsxHelper.GetProjectFolder(specFlowProject), "StepDefinitions"); if (!Directory.Exists(defaultFolder)) { var currentFeatureFilePath = dte.ActiveDocument.FullName; defaultFolder = Path.GetDirectoryName(currentFeatureFilePath); } }
public bool RunTests(Project project, string filter, bool debug) { if (!VsxHelper.Build(project)) { MessageBox.Show("Build failed.", "SpecFlow", MessageBoxButtons.OK, MessageBoxIcon.Error); return(true); } var consolePath = FindConsolePath(project); if (consolePath == null) { MessageBox.Show("Unable to find SpecRun.exe.", "SpecFlow", MessageBoxButtons.OK, MessageBoxIcon.Error); return(true); } var args = BuildCommandArgs(new ConsoleOptions { BaseFolder = VsxHelper.GetProjectFolder(project) + @"\bin\Debug", //TODO Target = VsxHelper.GetProjectAssemblyName(project) + ".dll", Filter = filter }, debug); ExecuteTests(consolePath, args, debug); return(true); }
protected override ProjectSettings LoadProjectSettings() { tracer.Trace("Discover project settings", "VsGeneratorServices"); ProjectPlatformSettings projectPlatformSettings; var tergetLanguage = VsProjectScope.GetTargetLanguage(project); switch (tergetLanguage) { case ProgrammingLanguage.CSharp: projectPlatformSettings = new ProjectPlatformSettings { Language = GenerationTargetLanguage.CSharp, LanguageVersion = new Version("3.0"), Platform = GenerationTargetPlatform.DotNet, PlatformVersion = new Version("3.5"), }; break; case ProgrammingLanguage.VB: projectPlatformSettings = new ProjectPlatformSettings { Language = GenerationTargetLanguage.VB, LanguageVersion = new Version("9.0"), Platform = GenerationTargetPlatform.DotNet, PlatformVersion = new Version("3.5"), }; break; default: throw new NotSupportedException("target language not supported"); } var configurationHolder = configurationReader.ReadConfiguration(); return(new ProjectSettings { ProjectName = Path.GetFileNameWithoutExtension(project.FullName), AssemblyName = VsxHelper.GetProjectAssemblyName(project), ProjectFolder = VsxHelper.GetProjectFolder(project), DefaultNamespace = VsxHelper.GetProjectDefaultNamespace(project), ProjectPlatformSettings = projectPlatformSettings, ConfigurationHolder = configurationHolder }); }
private Project GetTartgetProject(string targetPath, Project specFlowProject) { string folder = Path.GetDirectoryName(targetPath); if (folder == null) { return(specFlowProject); } var ps = (VsProjectScope)projectScopeFactory.GetProjectScope(specFlowProject); var targetProject = ps.BindingFilesTracker.BindingAssemblies.Where(ba => ba.IsProject).Select(ba => ba.Project) .FirstOrDefault(prj => { var projectFolder = VsxHelper.GetProjectFolder(prj); return(projectFolder != null && folder.StartsWith(projectFolder)); }); return(targetProject ?? specFlowProject); }
private bool DetectFromConfig(GeneratorInfo generatorInfo, GeneratorConfiguration generatorConfiguration) { try { if (string.IsNullOrWhiteSpace(generatorConfiguration.GeneratorPath)) { return(false); } var generatorFolder = Path.GetFullPath( Path.Combine(VsxHelper.GetProjectFolder(project), generatorConfiguration.GeneratorPath)); tracer.Trace("Generator is configured to be at " + generatorFolder, "VsGeneratorInfoProvider"); return(DetectFromFolder(generatorInfo, generatorFolder)); } catch (Exception exception) { tracer.Trace(exception.ToString(), "VsGeneratorInfoProvider"); return(false); } }
private string CalculateNamespace(string targetPath, Project project) { string folder = Path.GetDirectoryName(targetPath); var rootNamespace = (string)project.Properties.Item("DefaultNamespace").Value; string projectRelativeFolder = FileSystemHelper.GetRelativePath(folder, VsxHelper.GetProjectFolder(project)); if (projectRelativeFolder == ".") { return(rootNamespace); } var folderItem = VsxHelper.FindFolderProjectItemByFilePath(project, folder); if (folderItem != null) { return((string)folderItem.Properties.Item("DefaultNamespace").Value); } return(rootNamespace + "." + projectRelativeFolder.Replace("\\", ".")); }
private string GetStepMapFileName() { return(stepMapFileName ?? (stepMapFileName = Path.Combine(Path.GetTempPath(), string.Format(@"specflow-stepmap-{1}-{2}-{0}{3}.cache", VsxHelper.GetProjectUniqueId(project), project.Name, Math.Abs(VsxHelper.GetProjectFolder(project).GetHashCode()), GetConfigurationText())))); }