コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #5
0
        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("\\", "."));
        }
コード例 #7
0
 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()))));
 }