Beispiel #1
0
        public void GenerateCode(FileProjectItem item, CustomToolContext context)
        {
            context.RunAsync(
                () => {
                string fileName = item.FileName;
                var projectNode = item.Project;
                SpecFlowProject specFlowProject = CreateSpecFlowProjectFrom(projectNode);
                var specFlowGenerator           = new SpecFlowGenerator(specFlowProject);

                string outputFile = context.GetOutputFileName(item, ".feature");

                var specFlowFeatureFile = specFlowProject.GetOrCreateFeatureFile(fileName);

                var fileContents = File.ReadAllText(fileName);
                string outputFileContents;
                using (var reader = new StringReader(fileContents)) {
                    using (var writer = new StringWriter(new StringBuilder())) {
                        specFlowGenerator.GenerateTestFile(specFlowFeatureFile, projectNode.LanguageProperties.CodeDomProvider, reader, writer);
                        outputFileContents = writer.ToString();
                    }
                }
                File.WriteAllText(outputFile, outputFileContents);

                WorkbenchSingleton.SafeThreadCall(
                    () => context.EnsureOutputFileIsInProject(item, outputFile));
            });
        }
        private void AnalyzeCodeBehind(FeatureFileInfo featureFileInfo, ProjectItem projectItem)
        {
            var codeBehindItem = GetCodeBehindItem(projectItem);

            if (codeBehindItem != null)
            {
                string codeBehind = VsxHelper.GetFileContent(codeBehindItem);
                featureFileInfo.GeneratorVersion = SpecFlowGenerator.GetGeneratedFileSpecFlowVersion(new StringReader(codeBehind));
            }
        }
        protected override string GenerateCode(string inputFileContent)
        {
            CodeDomProvider provider = GetCodeProvider();

            SpecFlowProject   specFlowProject = DteProjectReader.LoadSpecFlowProjectFromDteProject(CurrentProject);
            SpecFlowGenerator generator       = new SpecFlowGenerator(specFlowProject);

            using (var writer = new StringWriter(new StringBuilder()))
            {
                generator.GenerateTestFile(
                    specFlowProject.GetOrCreateFeatureFile(CodeFilePath),
                    provider, new StringReader(inputFileContent), writer);
                return(writer.ToString());
            }
        }
Beispiel #4
0
 protected override void GenerateFile(SpecFlowGenerator generator, SpecFlowFeatureFile featureFile, string codeFileFullPath)
 {
     try
     {
         base.GenerateFile(generator, featureFile, codeFileFullPath);
         outputFile.Done(task.Errors);
     }
     catch (Exception ex)
     {
         task.RecordException(ex);
     }
     finally
     {
         outputFile = null;
     }
 }
Beispiel #5
0
        private FilePath GenerateFeatureCodeFileFor(ProjectFile featureFile)
        {
            // TODO: We only support C# for now, later we'll add support to grab the provider based on the project
            CodeDomProvider codeProvider      = new CSharpCodeProvider();
            FilePath        outputFile        = featureFile.FilePath.ChangeExtension(".feature." + codeProvider.FileExtension);
            SpecFlowProject specFlowProject   = MonoDevelopProjectReader.CreateSpecFlowProjectFrom(featureFile.Project);
            var             specFlowGenerator = new SpecFlowGenerator(specFlowProject);

            using (var writer = new StringWriter(new StringBuilder()))
                using (var reader = new StringReader(File.ReadAllText(featureFile.FilePath)))
                {
                    SpecFlowFeatureFile specFlowFeatureFile = specFlowProject.GetOrCreateFeatureFile(featureFile.FilePath);
                    specFlowGenerator.GenerateTestFile(specFlowFeatureFile, codeProvider, reader, writer);
                    File.WriteAllText(outputFile, writer.ToString());
                }

            return(outputFile);
        }