예제 #1
0
        private void DiscoverTests(TestOptions options, IFrontController frontController, IServiceProvider services)
        {
            var visitor = new DiscoveryVisitor((services.GetService(typeof(ITestSinkFactory)) as ITestSinkFactory)?.CreateDiscoverySink(services) ?? new DefaultTestDiscoverySink());

            frontController.Find(true, visitor, options);
            visitor.Finished.WaitOne();
        }
예제 #2
0
        private bool RunTests(TestOptions options, IFrontController frontController, IServiceProvider services)
        {
            var visitor = new ExecutionVisitor((services.GetService(typeof(ITestSinkFactory)) as ITestSinkFactory)?.CreateExecutionSink(services) ?? new DefaultTestExecutionSink());

            frontController.RunAll(visitor, options, options);
            visitor.Finished.WaitOne();
            return(!visitor.HasFailures);
        }
예제 #3
0
 AssemblyRunner(AppDomainSupport appDomainSupport,
                string assemblyFileName,
                string configFileName   = null,
                bool shadowCopy         = true,
                string shadowCopyFolder = null)
 {
     controller    = new XunitFrontController(appDomainSupport, assemblyFileName, configFileName, shadowCopy, shadowCopyFolder, diagnosticMessageSink: this);
     configuration = ConfigReader.Load(assemblyFileName, configFileName);
 }
예제 #4
0
        public WebApiHook(IFrontController frontController, HttpConfiguration config, string baseRoute)
        {
            ServiceLocator.FrontController = frontController;

            config.Services.Replace(typeof(IHttpActionSelector), new EndpointActionSelector());
            config.Services.Replace(typeof(IHttpControllerSelector), new EndpointSelector <WebApiController>(config));

            config.Routes.MapHttpRoute(name: "Subvert.Route", routeTemplate: baseRoute);
        }
예제 #5
0
 void EnsureInitialized()
 {
     if (innerController == null)
     {
         innerController    = CreateInnerController();
         descriptorProvider = (innerController as ITestCaseDescriptorProvider) ?? new DefaultTestCaseDescriptorProvider(innerController);
         bulkDeserializer   = (innerController as ITestCaseBulkDeserializer) ?? new DefaultTestCaseBulkDeserializer(innerController);
         toDispose.Push(innerController);
     }
 }
예제 #6
0
        public static IFrontController GetInstance()
        {
            lock (_threadsafeLock)
            {
                if (_instance == null)
                    _instance = new FrontController();

                return _instance;
            }
        }
예제 #7
0
        public static IFrontController GetInstance()
        {
            lock (_threadsafeLock)
            {
                if (_instance == null)
                {
                    _instance = new FrontController();
                }

                return(_instance);
            }
        }
예제 #8
0
 AssemblyRunner2(AppDomainSupport appDomainSupport,
                 string assemblyFileName,
                 TaskCompletionSource <string> tcs,
                 CancellationToken cancellationToken,
                 string configFileName   = null,
                 bool shadowCopy         = true,
                 string shadowCopyFolder = null)
 {
     this.tcs = tcs;
     this.cancellationToken = cancellationToken;
     this.assemblyFileName  = assemblyFileName;
     controller             = new XunitFrontController(appDomainSupport, assemblyFileName, configFileName, shadowCopy, shadowCopyFolder, diagnosticMessageSink: MessageSinkAdapter.Wrap(this));
     configuration          = ConfigReader.Load(assemblyFileName, configFileName);
 }
예제 #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="XunitFrontController"/> class.
        /// </summary>
        /// <param name="assemblyFileName">The test assembly.</param>
        /// <param name="configFileName">The test assembly configuration file.</param>
        /// <param name="shadowCopy">If set to <c>true</c>, runs tests in a shadow copied app domain, which allows
        /// tests to be discovered and run without locking assembly files on disk.</param>
        public XunitFrontController(string assemblyFileName, string configFileName = null, bool shadowCopy = true)
        {
            Guard.FileExists("assemblyFileName", assemblyFileName);
            var xunit1Path = Path.Combine(Path.GetDirectoryName(assemblyFileName), "xunit.dll");
            var xunit2Path = Path.Combine(Path.GetDirectoryName(assemblyFileName), "xunit2.dll");
            var sourceInformationProvider = new VisualStudioSourceInformationProvider();

            if (File.Exists(xunit2Path))
                innerController = new Xunit2(sourceInformationProvider, assemblyFileName, configFileName, shadowCopy);
            else if (File.Exists(xunit1Path))
                innerController = new Xunit1(sourceInformationProvider, assemblyFileName, configFileName, shadowCopy);
            else
                throw new ArgumentException("Unknown test framework: Could not find xunit.dll or xunit2.dll.", assemblyFileName);
        }
예제 #10
0
        public frmMain()
        {
            this._frontController = FrontController.GetInstance();
            this.View_OnQueryRecordsCompletion = this.RefreshGridData;
            this.View_OnGetLogStatisticsCompletion = this.UpdateDashboard;
            this.View_OnGetCalendarDataCompletion = this.UpdateCalendarData;
            this.View_OnGetObjectiveDataCompletion = this.UpdateObjectiveData;
            this.View_OnViewReady = OnViewReady;
            this.View_OnShow = OnShow;

            InitializeComponent();
            this.InitializeRequiredData();
            this.SetTimer();
            this.StartTimer();
        }
예제 #11
0
        public frmMain()
        {
            this._frontController = FrontController.GetInstance();
            this.View_OnQueryRecordsCompletion     = this.RefreshGridData;
            this.View_OnGetLogStatisticsCompletion = this.UpdateDashboard;
            this.View_OnGetCalendarDataCompletion  = this.UpdateCalendarData;
            this.View_OnGetObjectiveDataCompletion = this.UpdateObjectiveData;
            this.View_OnViewReady = OnViewReady;
            this.View_OnShow      = OnShow;

            InitializeComponent();
            this.InitializeRequiredData();
            this.SetTimer();
            this.StartTimer();
        }
예제 #12
0
        public Testable_xunit(int exitCode)
        {
            BuildEngine = Substitute.For <IBuildEngine>();

            FrontController = Substitute.For <IFrontController>();
            FrontController.WhenAny(fc => fc.Find(false, null))
            .Do <bool, IMessageSink>((_, sink) => ReturnDiscoveryMessages(sink));
            FrontController.WhenAny(fc => fc.Find("", false, null))
            .Do <string, bool, IMessageSink>((_, __, sink) => ReturnDiscoveryMessages(sink));
            FrontController.WhenAny(fc => fc.Run(null, null))
            .Do <object, IMessageSink>((_, sink) =>
            {
                var testAssemblyStarting = Substitute.For <ITestAssemblyStarting>();
                testAssemblyStarting.AssemblyFileName.Returns("Name.dll");
                sink.OnMessage(testAssemblyStarting);
                sink.OnMessage(Substitute.For <ITestAssemblyFinished>());
            });

            Assemblies = new ITaskItem[0];

            ExitCode = exitCode;
        }
예제 #13
0
        public Testable_xunit(int exitCode)
        {
            BuildEngine = Substitute.For<IBuildEngine>();

            FrontController = Substitute.For<IFrontController>();
            FrontController.WhenAny(fc => fc.Find(false, null, null))
                           .Do<bool, IMessageSink>((_, sink) => ReturnDiscoveryMessages(sink));
            FrontController.WhenAny(fc => fc.Find("", false, null, null))
                           .Do<string, bool, IMessageSink>((_, __, sink) => ReturnDiscoveryMessages(sink));
            FrontController.WhenAny(fc => fc.RunTests((IEnumerable<ITestCase>)null, null, null))
                           .Do<object, IMessageSink>((_, sink) =>
                               {
                                   var assembly = Mocks.TestAssembly("Name.dll");
                                   var testAssemblyStarting = Substitute.For<ITestAssemblyStarting>();
                                   testAssemblyStarting.TestAssembly.Returns(assembly);
                                   sink.OnMessage(testAssemblyStarting);
                                   sink.OnMessage(Substitute.For<ITestAssemblyFinished>());
                               });

            Assemblies = new ITaskItem[0];

            ExitCode = exitCode;
        }
예제 #14
0
 public CustomAssemblyRunner(string assemblyFileName)
 {
     controller = new XunitFrontController(
         AppDomainSupport.Denied, assemblyFileName, diagnosticMessageSink: MessageSinkAdapter.Wrap(this));
     configuration = ConfigReader.Load(assemblyFileName);
 }
예제 #15
0
 // Discovery + execution constructor
 XunitFrontController(IFrontController innerController) :
     this((IFrontControllerDiscoverer)innerController)
 {
     this.innerController = Guard.ArgumentNotNull(innerController);
 }
예제 #16
0
 public WebApiController()
 {
     _controller = ServiceLocator.FrontController;
 }
예제 #17
0
 public WebApiHook(IFrontController frontController, HttpConfiguration config)
     : this(frontController, config, "{*url}")
 {
 }
예제 #18
0
파일: xunitTests.cs 프로젝트: JoB70/xunit
        public Testable_xunit(int exitCode)
        {
            BuildEngine = Substitute.For<IBuildEngine>();

            FrontController = Substitute.For<IFrontController>();
            FrontController.WhenAny(fc => fc.Find(false, null))
                           .Do<bool, IMessageSink>((_, sink) => ReturnDiscoveryMessages(sink));
            FrontController.WhenAny(fc => fc.Find("", false, null))
                           .Do<string, bool, IMessageSink>((_, __, sink) => ReturnDiscoveryMessages(sink));
            FrontController.WhenAny(fc => fc.Run(null, null))
                           .Do<object, IMessageSink>((_, sink) => sink.OnMessage(Substitute.For<ITestAssemblyFinished>()));

            Assemblies = new ITaskItem[0];

            ExitCode = exitCode;
        }