public void ListContentSupport()
        {
            IBoostTestRunner runner = A.Fake <IBoostTestRunner>();

            string output = null;

            A.CallTo(() => runner.Capabilities).Returns(new BoostTestRunnerCapabilities {
                ListContent = true, Version = false
            });
            A.CallTo(() => runner.Execute(A <BoostTestRunnerCommandLineArgs> ._, A <BoostTestRunnerSettings> ._, A <IProcessExecutionContext> ._)).Invokes((call) =>
            {
                BoostTestRunnerCommandLineArgs args = (BoostTestRunnerCommandLineArgs)call.Arguments.First();
                if ((args.ListContent.HasValue) && (args.ListContent.Value == ListContentFormat.DOT))
                {
                    output = TestHelper.CopyEmbeddedResourceToDirectory("BoostTestAdapterNunit.Resources.ListContentDOT.sample.8.list.content.gv", args.StandardErrorFile);
                }
            }).Returns(0);

            FakeBoostTestRunnerFactory factory    = new FakeBoostTestRunnerFactory(runner);
            ListContentDiscoverer      discoverer = new ListContentDiscoverer(factory, DummyVSProvider.Default);

            DefaultTestContext           context = new DefaultTestContext();
            DefaultTestCaseDiscoverySink sink    = new DefaultTestCaseDiscoverySink();

            discoverer.DiscoverTests(new[] { "a.exe", }, context, sink);

            // Ensure proper test runner execution
            Assert.That(factory.ProvisionedRunners.Count, Is.EqualTo(1));
            foreach (IBoostTestRunner provisioned in factory.ProvisionedRunners.Select(provision => provision.Item3))
            {
                A.CallTo(() => provisioned.Execute(A <BoostTestRunnerCommandLineArgs> ._, A <BoostTestRunnerSettings> ._, A <IProcessExecutionContext> ._)).
                WhenArgumentsMatch((arguments) =>
                {
                    BoostTestRunnerCommandLineArgs args = (BoostTestRunnerCommandLineArgs)arguments.First();

                    return((args.ListContent.HasValue) &&
                           (args.ListContent.Value == ListContentFormat.DOT) &&
                           (!string.IsNullOrEmpty(args.StandardErrorFile)));
                }).
                MustHaveHappened();
            }

            // Ensure proper test discovery
            Assert.That(sink.Tests.Count, Is.EqualTo(8));

            AssertLabelTrait(sink.Tests.FirstOrDefault((vstest) => (vstest.FullyQualifiedName == "test_2")), "l1");
            AssertLabelTrait(sink.Tests.FirstOrDefault((vstest) => (vstest.FullyQualifiedName == "test_6")), "l1");
            var test_8 = sink.Tests.FirstOrDefault((vstest) => (vstest.FullyQualifiedName == "test_8"));

            AssertLabelTrait(test_8, "l1");
            AssertLabelTrait(test_8, "l2");
            AssertLabelTrait(test_8, "l3 withaspace");

            Assert.That(output, Is.Not.Null);

            // Ensure proper environment cleanup
            Assert.That(File.Exists(output), Is.False);
        }
Exemplo n.º 2
0
        public void FailingExitCode()
        {
            IBoostTestRunner runner = A.Fake <IBoostTestRunner>();

            A.CallTo(() => runner.ListContentSupported).Returns(true);
            A.CallTo(() => runner.VersionSupported).Returns(false);
            A.CallTo(() => runner.Execute(A <BoostTestRunnerCommandLineArgs> ._, A <BoostTestRunnerSettings> ._, A <IProcessExecutionContext> ._)).Returns(-1073741515);

            FakeBoostTestRunnerFactory factory    = new FakeBoostTestRunnerFactory(runner);
            ListContentDiscoverer      discoverer = new ListContentDiscoverer(factory, DummyVSProvider.Default);

            DefaultTestContext           context = new DefaultTestContext();
            DefaultTestCaseDiscoverySink sink    = new DefaultTestCaseDiscoverySink();

            discoverer.DiscoverTests(new[] { "missing-dll.exe", }, context, sink);

            // Ensure proper test discovery
            Assert.That(sink.Tests.Count, Is.EqualTo(0));
        }
        public void VersionAnnotation()
        {
            IBoostTestRunner runner = A.Fake <IBoostTestRunner>();

            A.CallTo(() => runner.Capabilities).Returns(new BoostTestRunnerCapabilities {
                ListContent = true, Version = true
            });
            A.CallTo(() => runner.Execute(A <BoostTestRunnerCommandLineArgs> ._, A <BoostTestRunnerSettings> ._, A <IProcessExecutionContext> ._)).Invokes((call) =>
            {
                BoostTestRunnerCommandLineArgs args = (BoostTestRunnerCommandLineArgs)call.Arguments.First();

                // --list_content=DOT
                if ((args.ListContent.HasValue) && (args.ListContent.Value == ListContentFormat.DOT) && (!string.IsNullOrEmpty(args.StandardErrorFile)))
                {
                    TestHelper.CopyEmbeddedResourceToDirectory("BoostTestAdapterNunit.Resources.ListContentDOT.sample.3.list.content.gv", args.StandardErrorFile);
                }
                // --version
                else if ((args.Version) && (!string.IsNullOrEmpty(args.StandardErrorFile)))
                {
                    TestHelper.CopyEmbeddedResourceToDirectory("BoostTestAdapterNunit.Resources.Version.sample.version.stderr.log", args.StandardErrorFile);
                }
            }).Returns(0);

            FakeBoostTestRunnerFactory factory    = new FakeBoostTestRunnerFactory(runner);
            ListContentDiscoverer      discoverer = new ListContentDiscoverer(factory, DummyVSProvider.Default);

            DefaultTestContext           context = new DefaultTestContext();
            DefaultTestCaseDiscoverySink sink    = new DefaultTestCaseDiscoverySink();

            discoverer.DiscoverTests(new[] { "test.exe", }, context, sink);

            // Ensure proper test discovery
            Assert.That(sink.Tests.Count, Is.Not.EqualTo(0));

            // Ensure that version property is available
            foreach (var test in sink.Tests)
            {
                var version = test.GetPropertyValue(VSTestModel.VersionProperty);
                Assert.That(version, Is.EqualTo("1.63.0"));
            }
        }