Beispiel #1
0
        /// <summary>
        /// Initializes a new <see cref="VSTestContainerDiscoverer"/>.
        /// </summary>
        /// <param name="serviceProvider">Provides access to Visual Studio services</param>
        /// <param name="logger">Object that logs messages</param>
        /// <param name="solutionMonitor">Monitors a solution for changes</param>
        /// <param name="projectFileMonitor">Monitors a project for changes to its child items</param>
        /// <param name="fileWatcher">A file system watcher</param>
        /// <param name="containerFactory">Creates new <see cref="ITestContainer"/>s</param>
        public VSTestContainerDiscoverer(
            IServiceProvider serviceProvider,
            ILogger logger,
            ISolutionMonitor solutionMonitor,
            IProjectFileMonitor projectFileMonitor,
            IFileSystemWatcher fileWatcher,
            Func <ITestContainerDiscoverer, string, IVsProject, IVSTestContainer> containerFactory)
        {
            _serviceProvider    = ValidateArg.NotNull(serviceProvider, "serviceProvider");
            _logger             = ValidateArg.NotNull(logger, "logger");
            _solutionMonitor    = ValidateArg.NotNull(solutionMonitor, "solutionMonitor");
            _projectFileMonitor = ValidateArg.NotNull(projectFileMonitor, "projectFileMonitor");
            _fileWatcher        = ValidateArg.NotNull(fileWatcher, "fileWatcher");
            _containerFactory   = ValidateArg.NotNull(containerFactory, "containerFactory");

            _solutionMonitor.SolutionChanged += solutionMonitor_SolutionChanged;
            _solutionMonitor.ProjectChanged  += solutionMonitor_ProjectChanged;
            _solutionMonitor.StartMonitoring();

            _projectFileMonitor.FileChanged += projectFileMonitor_FileChanged;
            _projectFileMonitor.StartMonitoring();

            _fileWatcher.NotifyFilter          = NotifyFilters.LastWrite;
            _fileWatcher.Filter                = String.Format("*{0}", TestScript.FileExtension);
            _fileWatcher.IncludeSubdirectories = true;
            _fileWatcher.Error += fileWatcher_Error;
        }
Beispiel #2
0
 public VSTestContainerDiscoverer(
     [Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider,
     ISolutionMonitor solutionMonitor,
     IProjectFileMonitor projectFileMonitor)
     : this(serviceProvider,
            new ActivityLogger(serviceProvider.GetService <IVsActivityLog, SVsActivityLog>(), typeof(VSTestContainerDiscoverer)),
            solutionMonitor,
            projectFileMonitor,
            new FileSystemWatcherAdapter(new FileSystemWatcher()),
            (disc, file, project) => new PowerShellTestContainer(disc, file, project))
 {
 }
Beispiel #3
0
        protected override void Initialize()
        {
            _logger           = new FileLogger(Path.GetTempPath(), autoFlush: true);
            _solutionMonitor  = new VsSolutionMonitor(this, _logger);
            _uiContextMonitor = new UiContextMonitor(_logger);

            _uiContextMonitor.AddContext(KnownUIContexts.NoSolutionContext, "NoSolution");
            _uiContextMonitor.AddContext(KnownUIContexts.SolutionOpeningContext, "SolutionOpening");
            _uiContextMonitor.AddContext(KnownUIContexts.SolutionExistsContext, "SolutionExists");
            _uiContextMonitor.AddContext(KnownUIContexts.SolutionExistsAndFullyLoadedContext, "SolutionExistsAndFullyLoaded");
            _uiContextMonitor.AddContext(KnownUIContexts.SolutionExistsAndNotBuildingAndNotDebuggingContext, "SolutionExistsAndNotBuildingAndNotDebugging");
            _uiContextMonitor.AddContext(KnownUIContexts.SolutionBuildingContext, "SolutionBuilding");
        }
Beispiel #4
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                _uiContextMonitor?.Dispose();
                _uiContextMonitor = null;

                _solutionMonitor?.Dispose();
                _solutionMonitor = null;

                _logger?.Dispose();
                _logger = null;
            }

            base.Dispose(disposing);
        }