Example #1
0
            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);
            }
Example #2
0
 protected static void LoadUnitTestingFramework(ScriptedUnitTestContainer container)
 {
     ModuleCache.Describe(container.Loader,new TestDependency
         {
             ScriptName = ScriptedUnitTestContainer.PrexoniteUnitTestFramework
         });
 }
Example #3
0
 /// <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);
 }
Example #4
0
// 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);
        }