private string CreateTestHarness( IFrameworkDefinition definition, ChutzpahTestSettingsFile chutzpahTestSettings, TestOptions options, string inputTestFilePath, IEnumerable<ReferencedFile> referencedFiles, ICoverageEngine coverageEngine, IList<string> temporaryFiles) { string inputTestFileDir = Path.GetDirectoryName(inputTestFilePath); string testFilePathHash = hasher.Hash(inputTestFilePath); string testHarnessDirectory; switch (chutzpahTestSettings.TestHarnessLocationMode) { case TestHarnessLocationMode.TestFileAdjacent: testHarnessDirectory = inputTestFileDir; break; case TestHarnessLocationMode.SettingsFileAdjacent: testHarnessDirectory = chutzpahTestSettings.SettingsFileDirectory; break; case TestHarnessLocationMode.Custom: testHarnessDirectory = chutzpahTestSettings.TestHarnessDirectory; break; default: throw new ArgumentOutOfRangeException("chutzpahTestSettings"); } string testHtmlFilePath = Path.Combine(testHarnessDirectory, string.Format(Constants.ChutzpahTemporaryFileFormat, testFilePathHash, "test.html")); temporaryFiles.Add(testHtmlFilePath); string templatePath = fileProbe.GetPathInfo(Path.Combine(Constants.TestFileFolder, definition.TestHarness)).FullPath; string testHtmlTemplate = fileSystem.GetText(templatePath); string amdModulePath = ""; if (chutzpahTestSettings.TestHarnessReferenceMode == TestHarnessReferenceMode.AMD && inputTestFilePath.Contains(testHarnessDirectory)) { amdModulePath = inputTestFilePath .Replace(Path.GetExtension(inputTestFilePath), "") .Replace(testHarnessDirectory, "") .Replace("\\", "/") .Trim('/', '\\'); } var harness = new TestHarness(chutzpahTestSettings, options, referencedFiles, fileSystem, amdModulePath); if (coverageEngine != null) { coverageEngine.PrepareTestHarnessForCoverage(harness, definition); } string testFileContents = fileSystem.GetText(inputTestFilePath); var frameworkReplacements = definition.GetFrameworkReplacements(chutzpahTestSettings, inputTestFilePath, testFileContents) ?? new Dictionary<string, string>(); string testHtmlText = harness.CreateHtmlText(testHtmlTemplate, frameworkReplacements); fileSystem.Save(testHtmlFilePath, testHtmlText); return testHtmlFilePath; }
public void Process(IFrameworkDefinition frameworkDefinition, ReferencedFile referencedFile, string testFileText, ChutzpahTestSettingsFile settings) { referencedFile.FrameworkReplacements = frameworkDefinition.GetFrameworkReplacements(settings, referencedFile.Path, testFileText); }