internal override void Configure(TestModel model, ScriptedUnitTestContainer container) { // Rewire the units under test to point to stored representations var originalUnits = model.UnitsUnderTest.ToList(); var storedNameMap = originalUnits.ToDictionary(td => td.ScriptName, td => { var ext = Path.GetExtension(td.ScriptName); var extLen = ext == null ? 0 : ext.Length; var baseName = td.ScriptName.Substring(td.ScriptName.Length - extLen); return string.Format("{0}~-stored{1}", baseName, ext); }); model.UnitsUnderTest = model.UnitsUnderTest.Select(td => new TestDependency { ScriptName = storedNameMap[td.ScriptName], Dependencies = td.Dependencies.Select(d => storedNameMap[d]).ToArray() }).ToArray(); // Configure the test as per usual base.Configure(model, container); }
protected static void LoadUnitTestingFramework(ScriptedUnitTestContainer container) { ModuleCache.Describe(container.Loader,new TestDependency { ScriptName = ScriptedUnitTestContainer.PrexoniteUnitTestFramework }); }
/// <summary> /// Executed as the last step of loading, immediately before the actual test methods are executed. /// </summary> /// <param name="runner">The container under which the test is being executed.</param> private void _prepareExecution(ScriptedUnitTestContainer runner) { if (CompileToCil) Compiler.Compile(runner.Application, runner.Engine, Linking); }
// ReSharper disable InconsistentNaming internal virtual void Configure(TestModel model, ScriptedUnitTestContainer container) // ReSharper restore InconsistentNaming { // describe units under test foreach (var unit in model.UnitsUnderTest) ModuleCache.Describe(container.Loader, unit); // describe unit testing framework LoadUnitTestingFramework(container); // describe unit testing extensions foreach(var extension in model.TestDependencies) ModuleCache.Describe(container.Loader, extension); // describe test suite var suiteDependencies = model.UnitsUnderTest .Append(model.TestDependencies) .Select(d => d.ScriptName) .Append(ScriptedUnitTestContainer.PrexoniteUnitTestFramework) .ToArray(); var suiteDescription = new TestDependency { ScriptName = model.TestSuiteScript, Dependencies = suiteDependencies }; ModuleCache.Describe(container.Loader, suiteDescription); // Finally instantiate the test suite application(s) var result = ModuleCache.Load(model.TestSuiteScript); container.Application = result.Item1; container.PrintCompound(); ITarget target = result.Item2; if (!target.IsSuccessful) { Console.WriteLine("The target {0} failed to build.", target.Name); if(target.Exception != null) Console.WriteLine(target.Exception); foreach (var error in target.Messages.Where(m => m.Severity == MessageSeverity.Error)) Console.WriteLine("Error: {0}", error); foreach (var warning in target.Messages.Where(m => m.Severity == MessageSeverity.Warning)) Console.WriteLine("Warning: {0}", warning); foreach (var info in target.Messages.Where(m => m.Severity == MessageSeverity.Info)) Console.WriteLine("Info: {0}", info); Assert.Fail("The target {0} failed to build.", target.Name); } _prepareExecution(container); }