public BinaryOperationFixtureFilterBase(
     IFixtureFilter left,
     IFixtureFilter right)
 {
     this.left = left;
     this.right = right;
 }
Beispiel #2
0
 public BinaryOperationFixtureFilterBase(
     IFixtureFilter left,
     IFixtureFilter right)
 {
     this.left  = left;
     this.right = right;
 }
Beispiel #3
0
 public void SetFixtureFilter(IFixtureFilter filter)
 {
     foreach (TestDomainVertex v in this.graph.Vertices)
     {
         v.Domain.Filter = filter;
     }
 }
Beispiel #4
0
        public int Main()
        {
            consoleOut.WriteLine("Start time: {0}", DateTime.Now.ToShortTimeString());
            // add path
            foreach (string assemblyPath in this.Arguments.AssemblyPath)
            {
                this.resolver.AddHintDirectory(assemblyPath);
            }

            // store real console
            listener.Writer = Console.Out;
            timer.Start();
            try
            {
                ReportResult   result = new ReportResult();
                IFixtureFilter filter = arguments.GetFilter();

                if (this.Arguments.Files.Length == 0)
                {
                    consoleOut.WriteLine("[warning] No test assemblies to execute");
                }
                else
                {
                    consoleOut.WriteLine("[info] Loading test assemblies");
                    using (
                        TestDomainDependencyGraph graph =
                            TestDomainDependencyGraph.BuildGraph(
                                this.Arguments.Files,
                                this.Arguments.AssemblyPath,
                                filter, this.Arguments.Verbose))
                    {
                        //define an assembly resolver routine in case the CLR cannot find our assemblies.
                        AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolveHandler);


                        graph.Log += new ErrorReporter(graph_Log);
                        consoleOut.WriteLine("[info] Starting execution");
                        ReportResult r = graph.RunTests();
                        graph.Log -= new ErrorReporter(graph_Log);
                        result.Merge(r);
                    }
                }

                this.GenerateReport(arguments, result);
                timer.Stop();
                consoleOut.WriteLine("[info] MbUnit execution finished in {0}s.", timer.Duration);
                return((0 == result.Counter.FailureCount) ? 0 : -1);
            }
            catch (System.Runtime.Remoting.RemotingException remote)
            {
                consoleOut.WriteLine("Could not load test domain.  Please ensure you have referenced the installed version of MbUnit.Framework within your test assembly. \r\n The error message was: \r\n" + remote.Message);
                return(-3);
            }
            catch (Exception ex)
            {
                consoleOut.WriteLine(ex.ToString());
                return(-3);
            }
        }
Beispiel #5
0
 protected TestRunState Run(
     ITestListener testListener,
     Assembly assembly,
     IFixtureFilter filter
     )
 {
     return(Run(testListener, assembly, filter, new AnyRunPipeFilter(), TypeFilters.Any));
 }
Beispiel #6
0
        public static TestDomainDependencyGraph BuildGraph(
            string[] testAssemblies,
            string[] assemblyPaths,
            IFixtureFilter fixtureFilter,
            bool verbose
            )
        {
            // MLS 12/21/05 - adding verbose parameter to fix MBUNIT-28 (verbose command line option not working).
            // IDEA: A more flexible solution might be to pass in a collection of IRunPipeListeners.

            return(BuildGraph(testAssemblies, assemblyPaths, fixtureFilter,
                              new AnyRunPipeFilter(), verbose));
        }
 public void FilterWithNullType(IFixtureFilter filter)
 {
     filter.Filter(null);
 }
 public void Filter(IFixtureFilter filter)
 {
     filter.Filter(typeof(DummyFixture));
 }
Beispiel #9
0
 public void Serialize(IFixtureFilter filter)
 {
     Console.WriteLine(SerialAssert.OneWaySerialization(filter));
 }
Beispiel #10
0
 public AndFixtureFilter(
     IFixtureFilter left,
     IFixtureFilter right)
     : base(left, right)
 {
 }
Beispiel #11
0
        protected TestRunState Run(
            ITestListener testListener, 
            Assembly assembly, 
            IFixtureFilter filter,
            RunPipeFilterBase runPipeFilter,
            TypeFilterBase typeFilter
            )
        {
            this.testListener = testListener;

            if (!CheckMbUnitVersion(assembly))
            {
                return TestRunState.Error;
            }

            assemblySetUpCount = 0;
            assemblyTearDownCount = 0;
            testFixtureSetUpCount = 0;
            testFixtureTearDownCount = 0;
            failureCount = 0;
            successCount = 0;
            ignoreCount = 0;
            skipCount = 0;

            string assemblyPath = new Uri(assembly.CodeBase).LocalPath;
            testListener.WriteLine("Starting the MbUnit Test Execution", Category.Info);
			testListener.WriteLine("Exploring " + assembly.FullName, Category.Info);
            testListener.WriteLine(String.Format("MbUnit {0} Addin", typeof(RunPipe).Assembly.GetName().Version),Category.Info);
            
            try
            {
                using (AssemblyTestDomain domain = new AssemblyTestDomain(assembly))
                {
                    //define an assembly resolver routine in case the CLR cannot find our assemblies. 
                    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolveHandler);

                    domain.TypeFilter = typeFilter;
                    domain.Filter = filter;
                    domain.RunPipeFilter = runPipeFilter;
                    domain.Load();
                    // check found tests
                    testCount = domain.TestEngine.GetTestCount().RunCount;
                    if (testCount == 0)
                    {
                        testListener.WriteLine("No tests found", Category.Info);
                        return TestRunState.NoTests;
                    }

                    testListener.WriteLine(String.Format("Found {0} tests", testCount), Category.Info);
                    // add listeners
                    domain.TestEngine.FixtureRunner.AssemblySetUp += new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblySetUp);
                    domain.TestEngine.FixtureRunner.AssemblyTearDown += new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblyTearDown);
                    domain.TestEngine.FixtureRunner.TestFixtureSetUp += new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureSetUp);
                    domain.TestEngine.FixtureRunner.TestFixtureTearDown += new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureTearDown);
                    domain.TestEngine.FixtureRunner.RunResult += new ReportRunEventHandler(TestEngine_RunResult);

                    try
                    {
                        domain.TestEngine.RunPipes();
                    }
                    finally
                    {
                        if (domain.TestEngine != null)
                        {
                            domain.TestEngine.FixtureRunner.AssemblySetUp -= new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblySetUp);
                            domain.TestEngine.FixtureRunner.AssemblyTearDown -= new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblyTearDown);
                            domain.TestEngine.FixtureRunner.TestFixtureSetUp -= new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureSetUp);
                            domain.TestEngine.FixtureRunner.TestFixtureTearDown -= new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureTearDown);
                            domain.TestEngine.FixtureRunner.RunResult -= new ReportRunEventHandler(TestEngine_RunResult);
                        }
                    }

                    testListener.WriteLine("[reports] generating HTML report", Category.Info);
                    this.GenerateReports(testListener, assembly, domain.TestEngine.Report.Result);

                    return toTestRunState(domain.TestEngine.Report.Result);
                }
            }
            catch (Exception ex)
            {
                testListener.WriteLine("[critical-failure]", Category.Error);
                testListener.WriteLine(ex.ToString(), Category.Error);
                throw new Exception("Test execution failed", ex);
            }
		}
        public static TestDomainDependencyGraph BuildGraph(
            string[] testAssemblies,
            string[] assemblyPaths,
            IFixtureFilter fixtureFilter,
            bool verbose
            )
        {
            // MLS 12/21/05 - adding verbose parameter to fix MBUNIT-28 (verbose command line option not working).
            // IDEA: A more flexible solution might be to pass in a collection of IRunPipeListeners.

            return BuildGraph(testAssemblies, assemblyPaths, fixtureFilter,
                new AnyRunPipeFilter(), verbose);
        }
        public static TestDomainDependencyGraph BuildGraph(
            string[] testAssemblies,
            string[] assemblyPaths,
            IFixtureFilter fixtureFilter,
            IRunPipeFilter runPipeFilter,
            bool verbose
            )
        {
            // MLS 12/21/05 - adding verbose parameter to fix MBUNIT-28 (verbose command line option not working).
            // IDEA: A more flexible solution might be to pass in a collection of IRunPipeListeners.

            if (testAssemblies == null)
                throw new ArgumentNullException("testAssemblies");
            if (testAssemblies.Length == 0)
                throw new ArgumentException("No assembly to test");
            if (fixtureFilter == null)
                throw new ArgumentNullException("fixtureFilter");
            if (runPipeFilter == null)
                throw new ArgumentNullException("runPipeFilter");

            Hashtable loadedAssemblies = new Hashtable();
            TestDomainDependencyGraph graph = null;
            try
            {
                graph = new TestDomainDependencyGraph();
                graph.verbose = verbose;
                if (assemblyPaths != null)
                    graph.AssemblyPaths.AddRange(assemblyPaths);
                foreach (string testAssembly in testAssemblies)
                {
                    if (loadedAssemblies.Contains(testAssembly))
                        continue;

                    TestDomain domain = new TestDomain(testAssembly);

                    domain.Filter = fixtureFilter;
                    domain.RunPipeFilter = runPipeFilter;
                    graph.AddDomain(domain);
                    loadedAssemblies.Add(testAssembly, null);
                }
                graph.CreateDependencies();

                return graph;
            }
            catch(Exception ex)
            {
                if (graph != null)
                {
                    graph.Dispose();
                    graph = null;
                }
                throw new ApplicationException("Failed loading assemblies", ex);
            }
        }
Beispiel #14
0
 public AndFixtureFilter(
     IFixtureFilter left,
     IFixtureFilter right)
     : base(left, right)
 { }
Beispiel #15
0
 public FixtureSpec_CanRun()
 {
     Fixture = TestFixtures.CreateFixture <TestFixtures.SimpleFixture>("FixtureMethod");
     Filter  = Substitute.For <IFixtureFilter>();
 }
Beispiel #16
0
        public static TestDomainDependencyGraph BuildGraph(
            string[] testAssemblies,
            string[] assemblyPaths,
            IFixtureFilter fixtureFilter,
            IRunPipeFilter runPipeFilter,
            bool verbose
            )
        {
            // MLS 12/21/05 - adding verbose parameter to fix MBUNIT-28 (verbose command line option not working).
            // IDEA: A more flexible solution might be to pass in a collection of IRunPipeListeners.

            if (testAssemblies == null)
            {
                throw new ArgumentNullException("testAssemblies");
            }
            if (testAssemblies.Length == 0)
            {
                throw new ArgumentException("No assembly to test");
            }
            if (fixtureFilter == null)
            {
                throw new ArgumentNullException("fixtureFilter");
            }
            if (runPipeFilter == null)
            {
                throw new ArgumentNullException("runPipeFilter");
            }

            Hashtable loadedAssemblies      = new Hashtable();
            TestDomainDependencyGraph graph = null;

            try
            {
                graph         = new TestDomainDependencyGraph();
                graph.verbose = verbose;
                if (assemblyPaths != null)
                {
                    graph.AssemblyPaths.AddRange(assemblyPaths);
                }
                foreach (string testAssembly in testAssemblies)
                {
                    if (testAssembly.EndsWith(".mbunit"))
                    {
                        MbUnitProject project = MbUnitProject.Load(testAssembly);
                        foreach (string assembly in project.Assemblies)
                        {
                            if (loadedAssemblies.Contains(assembly))
                            {
                                continue;
                            }

                            TestDomain domain = new TestDomain(assembly);
                            domain.Filter        = fixtureFilter;
                            domain.RunPipeFilter = runPipeFilter;
                            graph.AddDomain(domain);
                            loadedAssemblies.Add(assembly, null);
                        }
                    }
                    else
                    {
                        if (loadedAssemblies.Contains(testAssembly))
                        {
                            continue;
                        }

                        TestDomain domain = new TestDomain(testAssembly);
                        domain.Filter        = fixtureFilter;
                        domain.RunPipeFilter = runPipeFilter;
                        graph.AddDomain(domain);
                        loadedAssemblies.Add(testAssembly, null);
                    }
                }
                graph.CreateDependencies();

                return(graph);
            }
            catch (System.Runtime.Remoting.RemotingException remote)
            {
                throw remote;
            }
            catch (Exception ex)
            {
                if (graph != null)
                {
                    graph.Dispose();
                    graph = null;
                }
                throw new ApplicationException("Failed loading assemblies", ex);
            }
        }
Beispiel #17
0
 public FixtureContainerSpec_CanRun()
 {
     Container = new FixtureContainer(typeof(TestFixtures.SimpleFixture));
     Filter    = Substitute.For <IFixtureFilter>();
 }
        public IFixtureFilter GetFixtureFilter()
        {
            IFixtureFilter filter = null;

            if (this.FixtureFilters.Count != 0)
            {
                filter = new ScopeFixtureFilter(this.FixtureFilters);
            }

            if (this.Categories.Count != 0)
            {
                if (filter == null)
                {
                    filter = new CategoryFixtureFilter(this.Categories);
                }
                else
                {
                    filter = new AndFixtureFilter(
                        filter,
                        new CategoryFixtureFilter(this.Categories)
                        );
                }
            }

            if (this.RunFailures.Count != 0)
            {
                foreach (string runFailureReport in this.RunFailures)
                {
                    if (!File.Exists(runFailureReport))
                    {
                        throw new ArgumentException("Could not find failure file " + runFailureReport);
                    }
                    XmlTestBatch testBatch = UnitSerializer.Deserialize(runFailureReport);
                    if (testBatch != null)
                    {
                        FailureFilter failureFilter = new FailureFilter(testBatch);
                        if (filter == null)
                        {
                            filter = failureFilter;
                        }
                        else
                        {
                            filter = new AndFixtureFilter(filter, failureFilter);
                        }
                    }
                }
            }

            if (this.UseCurrentFixtures)
            {
                if (filter == null)
                {
                    filter = new CurrentFixtureFilter();
                }
                else
                {
                    filter = new AndFixtureFilter(filter, new CurrentFixtureFilter());
                }
            }

            if (filter == null)
            {
                filter = new AnyFixtureFilter();
            }
            return(filter);
        }
 public void IsXmlSerializable(IFixtureFilter filter)
 {
     SerialAssert.IsXmlSerializable(filter.GetType());
 }
Beispiel #20
0
        public void Filter(IFixtureFilter filter)
        {
			Assert.IsTrue(filter.Filter(typeof(DummyFixture)));
		}
 public void Serialize(IFixtureFilter filter)
 {
     Console.WriteLine(SerialAssert.OneWaySerialization(filter));
 }
Beispiel #22
0
        protected TestRunState Run(
            ITestListener testListener,
            Assembly assembly,
            IFixtureFilter filter,
            RunPipeFilterBase runPipeFilter,
            TypeFilterBase typeFilter
            )
        {
            this.testListener = testListener;

            if (!CheckMbUnitVersion(assembly))
            {
                return(TestRunState.Error);
            }

            assemblySetUpCount       = 0;
            assemblyTearDownCount    = 0;
            testFixtureSetUpCount    = 0;
            testFixtureTearDownCount = 0;
            failureCount             = 0;
            successCount             = 0;
            ignoreCount = 0;
            skipCount   = 0;

            string assemblyPath = new Uri(assembly.CodeBase).LocalPath;

            testListener.WriteLine("Starting the MbUnit Test Execution", Category.Info);
            testListener.WriteLine("Exploring " + assembly.FullName, Category.Info);
            testListener.WriteLine(String.Format("MbUnit {0} Addin", typeof(RunPipe).Assembly.GetName().Version), Category.Info);

            try
            {
                using (AssemblyTestDomain domain = new AssemblyTestDomain(assembly))
                {
                    //define an assembly resolver routine in case the CLR cannot find our assemblies.
                    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolveHandler);

                    domain.TypeFilter    = typeFilter;
                    domain.Filter        = filter;
                    domain.RunPipeFilter = runPipeFilter;
                    domain.Load();
                    // check found tests
                    testCount = domain.TestEngine.GetTestCount().RunCount;
                    if (testCount == 0)
                    {
                        testListener.WriteLine("No tests found", Category.Info);
                        return(TestRunState.NoTests);
                    }

                    testListener.WriteLine(String.Format("Found {0} tests", testCount), Category.Info);
                    // add listeners
                    domain.TestEngine.FixtureRunner.AssemblySetUp       += new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblySetUp);
                    domain.TestEngine.FixtureRunner.AssemblyTearDown    += new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblyTearDown);
                    domain.TestEngine.FixtureRunner.TestFixtureSetUp    += new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureSetUp);
                    domain.TestEngine.FixtureRunner.TestFixtureTearDown += new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureTearDown);
                    domain.TestEngine.FixtureRunner.RunResult           += new ReportRunEventHandler(TestEngine_RunResult);

                    try
                    {
                        domain.TestEngine.RunPipes();
                    }
                    finally
                    {
                        if (domain.TestEngine != null)
                        {
                            domain.TestEngine.FixtureRunner.AssemblySetUp       -= new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblySetUp);
                            domain.TestEngine.FixtureRunner.AssemblyTearDown    -= new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblyTearDown);
                            domain.TestEngine.FixtureRunner.TestFixtureSetUp    -= new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureSetUp);
                            domain.TestEngine.FixtureRunner.TestFixtureTearDown -= new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureTearDown);
                            domain.TestEngine.FixtureRunner.RunResult           -= new ReportRunEventHandler(TestEngine_RunResult);
                        }
                    }

                    testListener.WriteLine("[reports] generating HTML report", Category.Info);
                    this.GenerateReports(testListener, assembly, domain.TestEngine.Report.Result);

                    return(toTestRunState(domain.TestEngine.Report.Result));
                }
            }
            catch (Exception ex)
            {
                testListener.WriteLine("[critical-failure]", Category.Error);
                testListener.WriteLine(ex.ToString(), Category.Error);
                throw new Exception("Test execution failed", ex);
            }
        }
 public void SetFixtureFilter(IFixtureFilter filter)
 {
     foreach (TestDomainVertex v in this.graph.Vertices)
         v.Domain.Filter = filter;
 }
Beispiel #24
0
 public void Filter(IFixtureFilter filter)
 {
     filter.Filter(typeof(DummyFixture));
 }
Beispiel #25
0
 protected TestRunState Run(
     ITestListener testListener, 
     Assembly assembly, 
     IFixtureFilter filter
     )
 {
     return Run(testListener,assembly,filter, new AnyRunPipeFilter(), TypeFilters.Any);
 }
Beispiel #26
0
 public void IsXmlSerializable(IFixtureFilter filter)
 {
     SerialAssert.IsXmlSerializable(filter.GetType());
 }
Beispiel #27
0
 public void FilterWithNullType(IFixtureFilter filter)
 {
     filter.Filter(null);
 }
Beispiel #28
0
 public void Filter(IFixtureFilter filter)
 {
     Assert.IsTrue(filter.Filter(typeof(DummyFixture)));
 }