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