public TestContainer(TestContainerList containers, IVsProject project, string source) : base(containers.Discoverer, source) { Project = project; ProjectDirectory = project.GetProjectDir(); BaseDirectory = Discoverer.BaseDirectory; Name = string.Join("/", new[] { Project.GetProjectName(), Path.GetDirectoryName(GetRelativePath(Source)).Replace('\\', '/') }.Where(s => !string.IsNullOrWhiteSpace(s))); Logger = new TestLogger(Discoverer.Logger, Name); ServerLogger = CreateServerLogger(); Logger.Debug("Creating TestContainer for {0}", GetRelativePath(Source)); Containers = containers; SourceSettings = Discoverer.TestSettings.AddSource(Name, Source); try { Init(); } catch (Exception ex) { Validate(false, "Error: " + ex.Message); Logger.Error(ex, "Could not load tests"); } FileWatchers = GetFileWatchers().Where(f => f != null).ToList(); if (IsValid) { SourceSettingsPersister.Save(Discoverer.TestAdapterInfo.SettingsFileDirectory, SourceSettings); StartTestServer(); } if (!IsValid) { Logger.Warn(InvalidReason); } else { Logger.Debug("TestContainer created"); } }
public IEnumerable <ITestContainer> GetTestContainers(IVsProject project) { if (!project.IsTestProject(Guids.NodejsBaseProjectFactory)) { if (EqtTrace.IsVerboseEnabled) { EqtTrace.Verbose("TestContainerDiscoverer: Ignoring project {0} as it is not a Node.js project.", project.GetProjectName()); } yield break; } project.GetMkDocument(VSConstants.VSITEMID_ROOT, out var path); if (this.detectingChanges) { SaveModifiedFiles(project); } if (!this.knownProjects.TryGetValue(path, out var projectInfo)) { // Don't return any containers for projects we don't know about. yield break; } projectInfo.HasRequestedContainers = true; var latestWrite = project.GetProjectItemPaths().Aggregate( this.lastWrite, (latest, filePath) => { try { var ft = File.GetLastWriteTimeUtc(filePath); return((ft > latest) ? ft : latest); } catch (UnauthorizedAccessException) { } catch (ArgumentException) { } catch (IOException) { } return(latest); }); var architecture = Architecture.X86; // TODO: Read the architecture from the project yield return(new TestContainer(this, path, latestWrite, architecture)); }
public IEnumerable<ITestContainer> GetTestContainers(IVsProject project) { if (!project.IsTestProject(GuidList.guidPythonProjectGuid)) { if (EqtTrace.IsVerboseEnabled) { EqtTrace.Verbose("TestContainerDiscoverer: Ignoring project {0} as it is not a test project.", project.GetProjectName()); } yield break; } string path; project.GetMkDocument(VSConstants.VSITEMID_ROOT, out path); if (_detectingChanges) { SaveModifiedFiles(project); } ProjectInfo projectInfo; if (!_knownProjects.TryGetValue(path, out projectInfo)) { // Don't return any containers for projects we don't know about. yield break; } projectInfo.HasRequestedContainers = true; var latestWrite = project.GetProjectItemPaths().Aggregate( _lastWrite, (latest, filePath) => { try { var ft = File.GetLastWriteTimeUtc(filePath); return (ft > latest) ? ft : latest; } catch (UnauthorizedAccessException) { } catch (ArgumentException) { } catch (IOException) { } return latest; }); var architecture = Architecture.X86; // TODO: Read the architecture from the project yield return new TestContainer(this, path, latestWrite, architecture); }