示例#1
0
        public ChutzpahTestContainerDiscoverer(IServiceProvider serviceProvider,
                                               IChutzpahSettingsMapper settingsMapper,
                                               ILogger logger,
                                               ISolutionEventsListener solutionListener,
                                               ITestFilesUpdateWatcher testFilesUpdateWatcher,
                                               ITestFileAddRemoveListener testFilesAddRemoveListener,
                                               ITestRunner testRunner,
                                               IFileProbe fileProbe,
                                               IChutzpahTestSettingsService chutzpahTestSettingsService)
        {
            initialContainerSearch           = true;
            cachedContainers                 = new ConcurrentDictionary <string, ITestContainer>(StringComparer.OrdinalIgnoreCase);
            this.serviceProvider             = serviceProvider;
            this.settingsMapper              = settingsMapper;
            this.logger                      = logger;
            this.testRunner                  = testRunner;
            this.fileProbe                   = fileProbe;
            this.chutzpahTestSettingsService = chutzpahTestSettingsService;
            this.solutionListener            = solutionListener;
            this.testFilesUpdateWatcher      = testFilesUpdateWatcher;
            this.testFilesAddRemoveListener  = testFilesAddRemoveListener;

            this.testFilesAddRemoveListener.TestFileChanged += OnProjectItemChanged;
            this.testFilesAddRemoveListener.StartListeningForTestFileChanges();

            this.solutionListener.SolutionUnloaded       += SolutionListenerOnSolutionUnloaded;
            this.solutionListener.SolutionProjectChanged += OnSolutionProjectChanged;
            this.solutionListener.StartListeningForChanges();

            this.testFilesUpdateWatcher.FileChangedEvent += OnProjectItemChanged;
        }
示例#2
0
 public TestRunner(IProcessHelper process,
                   ITestCaseStreamReaderFactory testCaseStreamReaderFactory,
                   IFileProbe fileProbe,
                   IBatchCompilerService batchCompilerService,
                   ITestHarnessBuilder testHarnessBuilder,
                   ITestContextBuilder htmlTestFileCreator,
                   IChutzpahTestSettingsService testSettingsService,
                   ITransformProcessor transformProcessor,
                   IChutzpahWebServerFactory webServerFactory,
                   IUrlBuilder urlBuilder,
                   IList <ITestExecutionProvider> testExecutionProviders)
 {
     this.urlBuilder = urlBuilder;
     this.process    = process;
     this.testCaseStreamReaderFactory = testCaseStreamReaderFactory;
     this.fileProbe            = fileProbe;
     this.batchCompilerService = batchCompilerService;
     this.testHarnessBuilder   = testHarnessBuilder;
     stopWatch                   = new Stopwatch();
     testContextBuilder          = htmlTestFileCreator;
     this.testSettingsService    = testSettingsService;
     this.transformProcessor     = transformProcessor;
     this.webServerFactory       = webServerFactory;
     this.testExecutionProviders = testExecutionProviders;
 }
        public ChutzpahTestContainerDiscoverer(IServiceProvider serviceProvider,
            IChutzpahSettingsMapper settingsMapper,
            ILogger logger,
            ISolutionEventsListener solutionListener,
            ITestFilesUpdateWatcher testFilesUpdateWatcher,
            ITestFileAddRemoveListener testFilesAddRemoveListener,
            ITestRunner testRunner,
            IFileProbe fileProbe)
        {
            initialContainerSearch = true;
            cachedContainers = new List<ITestContainer>();
            this.serviceProvider = serviceProvider;
            this.settingsMapper = settingsMapper;
            this.logger = logger;
            this.testRunner = testRunner;
            this.fileProbe = fileProbe;
            this.solutionListener = solutionListener;
            this.testFilesUpdateWatcher = testFilesUpdateWatcher;
            this.testFilesAddRemoveListener = testFilesAddRemoveListener;

            this.testFilesAddRemoveListener.TestFileChanged += OnProjectItemChanged;
            this.testFilesAddRemoveListener.StartListeningForTestFileChanges();

            this.solutionListener.SolutionUnloaded += SolutionListenerOnSolutionUnloaded;
            this.solutionListener.SolutionProjectChanged += OnSolutionProjectChanged;
            this.solutionListener.StartListeningForChanges();

            this.testFilesUpdateWatcher.FileChangedEvent += OnProjectItemChanged;
        }
        public ChutzpahTestSettingsService(IFileProbe fileProbe, IJsonSerializer serializer, IFileSystemWrapper fileSystem)
        {
            this.fileProbe = fileProbe;
            this.serializer = serializer;
            this.fileSystem = fileSystem;


        }
示例#5
0
 public TestHarnessBuilder(
     IReferenceProcessor referenceProcessor,
     IFileSystemWrapper fileSystem,
     IFileProbe fileProbe,
     IHasher hasher)
 {
     this.referenceProcessor = referenceProcessor;
     this.fileSystem         = fileSystem;
     this.fileProbe          = fileProbe;
     this.hasher             = hasher;
 }
 public TestHarnessBuilder(
     IReferenceProcessor referenceProcessor,
     IFileSystemWrapper fileSystem,
     IFileProbe fileProbe,
     IHasher hasher)
 {
     this.referenceProcessor = referenceProcessor;
     this.fileSystem = fileSystem;
     this.fileProbe = fileProbe;
     this.hasher = hasher;
 }
示例#7
0
 public TestRunner(IProcessHelper process,
     ITestCaseStreamReaderFactory testCaseStreamReaderFactory,
     IFileProbe fileProbe,
     ITestContextBuilder htmlTestFileCreator,
     ICompilerCache compilerCache)
 {
     this.process = process;
     this.testCaseStreamReaderFactory = testCaseStreamReaderFactory;
     this.fileProbe = fileProbe;
     stopWatch = new Stopwatch();
     testContextBuilder = htmlTestFileCreator;
     this.compilerCache = compilerCache;
 }
示例#8
0
        public PhantomTestExecutionProvider(IProcessHelper process, IFileProbe fileProbe,
                                            IUrlBuilder urlBuilder, ITestCaseStreamReaderFactory readerFactory)
        {
            this.processTools        = process;
            this.fileProbe           = fileProbe;
            this.urlBuilder          = urlBuilder;
            this.headlessBrowserPath = fileProbe.FindFilePath(HeadlessBrowserName);

            if (headlessBrowserPath == null)
            {
                throw new FileNotFoundException("Unable to find headless browser: " + HeadlessBrowserName);
            }

            this.readerFactory = readerFactory;
        }
 public TestContextBuilder(
     IFileSystemWrapper fileSystem,
     IReferenceProcessor referenceProcessor,
     IHttpWrapper httpWrapper,
     IFileProbe fileProbe,
     ICoverageEngineFactory coverageEngineFactory,
     IEnumerable<IFrameworkDefinition> frameworkDefinitions,
     IChutzpahTestSettingsService settingsService)
 {
     this.referenceProcessor = referenceProcessor;
     this.httpClient = httpWrapper;
     this.fileSystem = fileSystem;
     this.fileProbe = fileProbe;
     this.frameworkDefinitions = frameworkDefinitions;
     this.settingsService = settingsService;
     this.coverageEngineFactory = coverageEngineFactory;
 }
 public TestContextBuilder(
     IFileSystemWrapper fileSystem,
     IReferenceProcessor referenceProcessor,
     IHttpWrapper httpWrapper,
     IFileProbe fileProbe,
     ICoverageEngineFactory coverageEngineFactory,
     IEnumerable <IFrameworkDefinition> frameworkDefinitions,
     IChutzpahTestSettingsService settingsService)
 {
     this.referenceProcessor    = referenceProcessor;
     this.httpClient            = httpWrapper;
     this.fileSystem            = fileSystem;
     this.fileProbe             = fileProbe;
     this.frameworkDefinitions  = frameworkDefinitions;
     this.settingsService       = settingsService;
     this.coverageEngineFactory = coverageEngineFactory;
 }
示例#11
0
 public TestRunner(IProcessHelper process,
                   ITestCaseStreamReaderFactory testCaseStreamReaderFactory,
                   IFileProbe fileProbe,
                   IBatchCompilerService batchCompilerService,
                   ITestHarnessBuilder testHarnessBuilder,
                   ITestContextBuilder htmlTestFileCreator,
                   ICompilerCache compilerCache,
                   IChutzpahTestSettingsService testSettingsService)
 {
     this.process = process;
     this.testCaseStreamReaderFactory = testCaseStreamReaderFactory;
     this.fileProbe            = fileProbe;
     this.batchCompilerService = batchCompilerService;
     this.testHarnessBuilder   = testHarnessBuilder;
     stopWatch                = new Stopwatch();
     testContextBuilder       = htmlTestFileCreator;
     this.compilerCache       = compilerCache;
     this.testSettingsService = testSettingsService;
 }
示例#12
0
 public TestRunner(IProcessHelper process,
                   ITestCaseStreamReaderFactory testCaseStreamReaderFactory,
                   IFileProbe fileProbe,
                   IBatchCompilerService batchCompilerService,
                   ITestHarnessBuilder testHarnessBuilder,
                   ITestContextBuilder htmlTestFileCreator,
                   IChutzpahTestSettingsService testSettingsService,
                   ITransformProcessor transformProcessor)
 {
     this.process = process;
     this.testCaseStreamReaderFactory = testCaseStreamReaderFactory;
     this.fileProbe = fileProbe;
     this.batchCompilerService = batchCompilerService;
     this.testHarnessBuilder = testHarnessBuilder;
     stopWatch = new Stopwatch();
     testContextBuilder = htmlTestFileCreator;
     this.testSettingsService = testSettingsService;
     this.transformProcessor = transformProcessor;
 }
        public NodeTestExecutionProvider(IProcessHelper process, IFileProbe fileProbe,
                                         IUrlBuilder urlBuilder, ITestCaseStreamReaderFactory readerFactory)
        {
            this.processTools = process;
            this.fileProbe    = fileProbe;
            this.urlBuilder   = urlBuilder;

            var path = Path.Combine("Node", Environment.Is64BitProcess ? "x64" : "x86", HeadlessBrowserName);

            this.headlessBrowserPath = fileProbe.FindFilePath(path);

            if (path == null)
            {
                throw new FileNotFoundException("Unable to find node: " + path);
            }

            this.readerFactory = readerFactory;

            isRunningElevated = process.IsRunningElevated();
        }
示例#14
0
 public TestContextBuilder(
     IReferenceProcessor referenceProcessor,
     IFileSystemWrapper fileSystem,
     IHttpWrapper httpWrapper,
     IFileProbe fileProbe,
     IHasher hasher,
     ICoverageEngine coverageEngine,
     IJsonSerializer serializer,
     IEnumerable<IFrameworkDefinition> frameworkDefinitions,
     IEnumerable<IFileGenerator> fileGenerators)
 {
     this.referenceProcessor = referenceProcessor;
     this.httpClient = httpWrapper;
     this.fileSystem = fileSystem;
     this.fileProbe = fileProbe;
     this.hasher = hasher;
     this.serializer = serializer;
     this.frameworkDefinitions = frameworkDefinitions;
     this.fileGenerators = fileGenerators;
     mainCoverageEngine = coverageEngine;
 }
示例#15
0
 public ReferenceProcessor(IFileSystemWrapper fileSystem, IFileProbe fileProbe, IUrlBuilder urlBuilder)
 {
     this.urlBuilder = urlBuilder;
     this.fileSystem = fileSystem;
     this.fileProbe  = fileProbe;
 }
示例#16
0
 public ReferenceProcessor(IFileSystemWrapper fileSystem, IFileProbe fileProbe)
 {
     this.fileSystem = fileSystem;
     this.fileProbe = fileProbe;
 }
        public ChutzpahTestContainerDiscoverer(IServiceProvider serviceProvider,
            IChutzpahSettingsMapper settingsMapper,
            ILogger logger,
            ISolutionEventsListener solutionListener,
            ITestFilesUpdateWatcher testFilesUpdateWatcher,
            ITestFileAddRemoveListener testFilesAddRemoveListener,
            ITestRunner testRunner,
            IFileProbe fileProbe,
            IChutzpahTestSettingsService chutzpahTestSettingsService)
        {
            initialContainerSearch = true;
            cachedContainers = new ConcurrentDictionary<string, ITestContainer>(StringComparer.OrdinalIgnoreCase);
            this.serviceProvider = serviceProvider;
            this.settingsMapper = settingsMapper;
            this.logger = logger;
            this.testRunner = testRunner;
            this.fileProbe = fileProbe;
            this.chutzpahTestSettingsService = chutzpahTestSettingsService;
            this.solutionListener = solutionListener;
            this.testFilesUpdateWatcher = testFilesUpdateWatcher;
            this.testFilesAddRemoveListener = testFilesAddRemoveListener;

            this.testFilesAddRemoveListener.TestFileChanged += OnProjectItemChanged;
            this.testFilesAddRemoveListener.StartListeningForTestFileChanges();

            this.solutionListener.SolutionUnloaded += SolutionListenerOnSolutionUnloaded;
            this.solutionListener.SolutionProjectChanged += OnSolutionProjectChanged;
            this.solutionListener.StartListeningForChanges();

            this.testFilesUpdateWatcher.FileChangedEvent += OnProjectItemChanged;
        }
示例#18
0
 public ChutzpahTestSettingsService(IFileProbe fileProbe, IJsonSerializer serializer, IFileSystemWrapper fileSystem)
 {
     this.fileProbe  = fileProbe;
     this.serializer = serializer;
     this.fileSystem = fileSystem;
 }
 public ChutzpahWebServerFactory(IFileProbe fileProbe)
 {
     this.fileProbe = fileProbe;
 }
示例#20
0
 public UrlBuilder(IFileProbe fileProbe)
 {
     this.fileProbe = fileProbe;
 }
示例#21
0
 public ReferenceProcessor(IFileSystemWrapper fileSystem, IFileProbe fileProbe)
 {
     this.fileSystem = fileSystem;
     this.fileProbe  = fileProbe;
 }
        /// <summary>
        /// Find and reads a chutzpah test settings file given a direcotry. If none is found a default settings object is created
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="fileProbe"></param>
        /// <param name="serializer"></param>
        /// <returns></returns>
        public static ChutzpahTestSettingsFile Read(string directory, IFileProbe fileProbe, IJsonSerializer serializer)
        {
            if (string.IsNullOrEmpty(directory)) return new ChutzpahTestSettingsFile();

            directory = directory.TrimEnd('/', '\\');

            ChutzpahTestSettingsFile settings;
            if (!ChutzpahSettingsFileCache.TryGetValue(directory, out settings))
            {
                var testSettingsFilePath = fileProbe.FindTestSettingsFile(directory);
                if(string.IsNullOrEmpty(testSettingsFilePath))
                {
                    settings = new ChutzpahTestSettingsFile();
                }
                else if (!ChutzpahSettingsFileCache.TryGetValue(testSettingsFilePath, out settings))
                {
                    settings = serializer.DeserializeFromFile<ChutzpahTestSettingsFile>(testSettingsFilePath);
                    settings.SettingsFileDirectory = Path.GetDirectoryName(testSettingsFilePath);

                    ValidateTestHarnessLocationMode(settings, fileProbe);

                    // Add a mapping in the cache for the directory that contains the test settings file
                    ChutzpahSettingsFileCache.TryAdd(settings.SettingsFileDirectory, settings);
                }

                // Add mapping in the cache for the original directory tried to skip needing to traverse the tree again
                ChutzpahSettingsFileCache.TryAdd(directory, settings);
            }

            return settings;
        }
        private static void ValidateTestHarnessLocationMode(ChutzpahTestSettingsFile settings, IFileProbe fileProbe)
        {
            if (settings.TestHarnessLocationMode == TestHarnessLocationMode.Custom)
            {
                if (settings.TestHarnessDirectory != null)
                {
                    string relativeLocationPath = Path.Combine(settings.SettingsFileDirectory, settings.TestHarnessDirectory);
                    string absoluteFilePath = fileProbe.FindFolderPath(relativeLocationPath);
                    settings.TestHarnessDirectory = absoluteFilePath;
                }

                if (settings.TestHarnessDirectory == null)
                {
                    settings.TestHarnessLocationMode = TestHarnessLocationMode.TestFileAdjacent;
                    ChutzpahTracer.TraceWarning("Unable to find custom test harness directory at {0}", settings.TestHarnessDirectory);
                }
            }
        }