Ejemplo n.º 1
0
        /// <summary>
        /// Raises the test containers changed event, returns true if the event was delivered
        /// or would be delivered and there were no listeners.
        /// </summary>
        /// <param name="project">The project which the event is being raised for</param>
        private bool OnTestContainersChanged(IVsProject project)
        {
            // https://pytools.codeplex.com/workitem/1271
            // When test explorer kicks off a run it kicks off a test discovery
            // phase, which kicks off a build, which results in us saving files.
            // If we raise the files changed event then test explorer immediately turns
            // around and queries us for the changed files.  Then it continues
            // along with the test discovery phase it was already initiating, and
            // discovers that no changes have occured - because it already updated
            // to the latest changes when we informed it our containers had changed.
            // Therefore if we are both building and detecting changes then we
            // don't want to raise the event, instead it'll query us in a little
            // bit and get the most recent changes.
            ProjectInfo projectInfo;
            string      projectPath;

            if (project != null &&
                project.TryGetProjectPath(out projectPath) &&
                _knownProjects.TryGetValue(projectPath, out projectInfo) &&
                projectInfo != null &&
                projectInfo.HasRequestedContainers)
            {
                if (!_building || !_detectingChanges)
                {
                    TestContainersUpdated?.Invoke(this, EventArgs.Empty);
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        internal bool IsProjectKnown(IVsProject project)
        {
            string projectPath;

            if (project.TryGetProjectPath(out projectPath))
            {
                return(_knownProjects.ContainsKey(projectPath));
            }
            return(false);
        }
Ejemplo n.º 3
0
 internal bool IsProjectKnown(IVsProject project) {
     string projectPath;
     if (project.TryGetProjectPath(out projectPath)) {
         return _knownProjects.ContainsKey(projectPath);
     }
     return false;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Raises the test containers changed event, returns true if the event was delivered
 /// or would be delivered and there were no listeners.
 /// </summary>
 /// <param name="project">The project which the event is being raised for</param>
 private bool OnTestContainersChanged(IVsProject project) {
     // https://pytools.codeplex.com/workitem/1271
     // When test explorer kicks off a run it kicks off a test discovery
     // phase, which kicks off a build, which results in us saving files.
     // If we raise the files changed event then test explorer immediately turns
     // around and queries us for the changed files.  Then it continues
     // along with the test discovery phase it was already initiating, and 
     // discovers that no changes have occured - because it already updated
     // to the latest changes when we informed it our containers had changed.  
     // Therefore if we are both building and detecting changes then we 
     // don't want to raise the event, instead it'll query us in a little 
     // bit and get the most recent changes.
     ProjectInfo projectInfo;
     string projectPath;
     if (project != null &&
         project.TryGetProjectPath(out projectPath) && 
         _knownProjects.TryGetValue(projectPath, out projectInfo) &&
         projectInfo.HasRequestedContainers) {
         
         if (!_building || !_detectingChanges) {
             var evt = TestContainersUpdated;
             if (evt != null) {
                 evt(this, EventArgs.Empty);
             }
             return true;
         }
     }
     return false;
 }