protected string GetGeneratedTestCode(TableFileInput tableFileInput) { using (var outputWriter = new IndentProcessingWriter(new StringWriter())) { var codeProvider = codeDomHelper.CreateCodeDomProvider(); var codeNamespace = GenerateTestFileCode(tableFileInput); if (codeNamespace == null) { return(""); } var options = new CodeGeneratorOptions { BracingStyle = "C", }; AddSpecFlowHeader(codeProvider, outputWriter); codeProvider.GenerateCodeFromNamespace(codeNamespace, outputWriter, options); AddSpecFlowFooter(codeProvider, outputWriter); outputWriter.Flush(); var generatedTestCode = outputWriter.ToString(); return(FixVBNetGlobalNamespace(generatedTestCode)); } }
public static string GetGeneratedTestContent(this TableFileInput tableFileInput, string generatedTestFullPath) { var generatedTestFileContent = tableFileInput.GeneratedTestFileContent; if (generatedTestFileContent != null) { return(generatedTestFileContent); } if (generatedTestFullPath == null) { return(null); } try { if (!File.Exists(generatedTestFullPath)) { return(null); } return(File.ReadAllText(generatedTestFullPath)); } catch (Exception exception) { Debug.WriteLine(exception, "TableFileInputExtensions.GetGeneratedTestContent"); return(null); } }
public string GetTestFullPath(TableFileInput tableFileInput) { var path = tableFileInput.GetGeneratedTestFullPath(projectSettings); if (path != null) { return(path); } return(tableFileInput.GetFullPath(projectSettings) + GenerationTargetLanguage.GetExtension(projectSettings.ProjectPlatformSettings.Language)); }
public static string GetFullPath(this TableFileInput tableFileInput, ProjectSettings projectSettings) { if (tableFileInput == null) { throw new ArgumentNullException("tableFileInput"); } if (projectSettings == null) { return(tableFileInput.ProjectRelativePath); } return(Path.GetFullPath(Path.Combine(projectSettings.ProjectFolder, tableFileInput.ProjectRelativePath))); }
public static TextReader GetTableFileContentReader(this TableFileInput tableFileInput, ProjectSettings projectSettings) { if (tableFileInput == null) { throw new ArgumentNullException("tableFileInput"); } if (tableFileInput.TableFileContent != null) { return(new StringReader(tableFileInput.TableFileContent)); } Debug.Assert(projectSettings != null); return(new StreamReader(Path.Combine(projectSettings.ProjectFolder, tableFileInput.ProjectRelativePath))); }
protected override TestGeneratorResult GenerateTestFileWithExceptions(TableFileInput tableFileInput, GenerationSettings settings) { if (tableFileInput == null) { throw new ArgumentNullException("tableFileInput"); } if (settings == null) { throw new ArgumentNullException("settings"); } var generatedTestFullPath = GetTestFullPath(tableFileInput); bool?preliminaryUpToDateCheckResult = null; if (settings.CheckUpToDate) { preliminaryUpToDateCheckResult = testUpToDateChecker.IsUpToDatePreliminary(tableFileInput, generatedTestFullPath, settings.UpToDateCheckingMethod); if (preliminaryUpToDateCheckResult == true) { return(new TestGeneratorResult(null, true)); } } string generatedTestCode = GetGeneratedTestCode(tableFileInput); if (string.IsNullOrEmpty(generatedTestCode)) { return(new TestGeneratorResult(null, true)); } if (settings.CheckUpToDate && preliminaryUpToDateCheckResult != false) { var isUpToDate = testUpToDateChecker.IsUpToDate(tableFileInput, generatedTestFullPath, generatedTestCode, settings.UpToDateCheckingMethod); if (isUpToDate) { return(new TestGeneratorResult(null, true)); } } if (settings.WriteResultToFile) { File.WriteAllText(generatedTestFullPath, generatedTestCode, Encoding.UTF8); } return(new TestGeneratorResult(generatedTestCode, false)); }
private CodeNamespace GenerateTestFileCode(TableFileInput tableFileInput) { string targetNamespace = GetTargetNamespace(tableFileInput) ?? "SpecFlow.GeneratedTests"; SpecFlowDocument specFlowDocument; using (var contentReader = tableFileInput.GetTableFileContentReader(projectSettings)) { specFlowDocument = ParseContent(parser, contentReader, GetSpecFlowDocumentLocation(tableFileInput)); } if (specFlowDocument.SpecFlowTable == null) { return(null); } var tableGenerator = tableGeneratorRegistry.CreateGenerator(specFlowDocument); var codeNamespace = tableGenerator.GenerateUnitTestFixture(specFlowDocument, null, targetNamespace); return(codeNamespace); }
protected string GetTargetNamespace(TableFileInput tableFileInput) { if (!string.IsNullOrEmpty(tableFileInput.CustomNamespace)) { return(tableFileInput.CustomNamespace); } string targetNamespace = projectSettings == null || string.IsNullOrEmpty(projectSettings.DefaultNamespace) ? null : projectSettings.DefaultNamespace; var directoryName = Path.GetDirectoryName(tableFileInput.ProjectRelativePath); string namespaceExtension = string.IsNullOrEmpty(directoryName) ? null : string.Join(".", directoryName.TrimStart('\\', '/', '.').Split('\\', '/').Select(f => f.ToIdentifier()).ToArray()); if (!string.IsNullOrEmpty(namespaceExtension)) { targetNamespace = targetNamespace == null ? namespaceExtension : targetNamespace + "." + namespaceExtension; } return(targetNamespace); }
protected override Version DetectGeneratedTestVersionWithExceptions(TableFileInput tableFileInput) { var generatedTestFullPath = GetTestFullPath(tableFileInput); return(testHeaderWriter.DetectGeneratedTestVersion(tableFileInput.GetGeneratedTestContent(generatedTestFullPath))); }
private SpecFlowDocumentLocation GetSpecFlowDocumentLocation(TableFileInput tableFileInput) { return(new SpecFlowDocumentLocation( tableFileInput.GetFullPath(projectSettings), GetTableFolderPath(tableFileInput.ProjectRelativePath))); }