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)); }); }
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(); } }
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))) { FeatureFileInput specFlowFeatureFile = specFlowProject.GetOrCreateFeatureFile(featureFile.FilePath); specFlowGenerator.GenerateTestFile(specFlowFeatureFile, codeProvider, reader, writer); File.WriteAllText(outputFile, writer.ToString()); } return outputFile; }