Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="vsProject"></param>
        /// <returns>True if loaded any files</returns>
        private bool LoadProject(IVsProject vsProject)
        {
            // check for python projects
            var pyProj = PythonProject.FromObject(vsProject);

            if (pyProj == null)
            {
                return(false);
            }

            // always register for project property changes
            pyProj.ProjectPropertyChanged -= OnTestPropertiesChanged;
            pyProj.ProjectPropertyChanged += OnTestPropertiesChanged;

            TestFrameworkType testFrameworkType = GetTestFramework(pyProj);

            if (testFrameworkType == TestFrameworkType.None)
            {
                return(false);
            }

            pyProj.ActiveInterpreterChanged -= OnActiveInterpreterChanged;
            pyProj.ActiveInterpreterChanged += OnActiveInterpreterChanged;
            _packageManagerEventSink.WatchPackageManagers(pyProj.GetInterpreterFactory());

            var projInfo = new ProjectInfo(pyProj);
            var files    = FilteredTestOrSettingsFiles(vsProject);

            UpdateContainersAndListeners(files, projInfo, isAdd: true);
            _projectMap[projInfo.ProjectHome] = projInfo;
            return(files.Any());
        }
Exemplo n.º 2
0
        private void OnProjectLoaded(object sender, ProjectEventArgs e)
        {
            var pyProj = PythonProject.FromObject(e.Project);

            if (pyProj != null)
            {
                var analyzer = pyProj.Analyzer;
                _projectInfo[pyProj] = new ProjectInfo(this, pyProj);
            }

            TestContainersUpdated?.Invoke(this, EventArgs.Empty);
        }
Exemplo n.º 3
0
        private void OnProjectUnloaded(object sender, ProjectEventArgs e)
        {
            if (e.Project != null)
            {
                var         pyProj = PythonProject.FromObject(e.Project);
                ProjectInfo events;
                if (pyProj != null &&
                    _projectInfo.TryGetValue(pyProj, out events) &&
                    _projectInfo.Remove(pyProj))
                {
                    events.Dispose();
                }
            }

            TestContainersUpdated?.Invoke(this, EventArgs.Empty);
        }
Exemplo n.º 4
0
        private async Task OnProjectLoadedAsync(IVsProject project)
        {
            var pyProj = PythonProject.FromObject(project);

            if (pyProj != null)
            {
                var analyzer = await pyProj.GetAnalyzerAsync();

                if (analyzer != null)
                {
                    _projectInfo[pyProj] = new ProjectInfo(this, pyProj);
                }
            }

            TestContainersUpdated?.Invoke(this, EventArgs.Empty);
        }
Exemplo n.º 5
0
        private void OnProjectUnloaded(object sender, ProjectEventArgs e)
        {
            if (e.Project == null)
            {
                return;
            }

            if (RemoveTestContainers(e.Project.GetProjectHome()))
            {
                NotifyContainerChanged();
            }

            // Unregister Properties handler
            var pyProj = PythonProject.FromObject(e.Project);

            if (pyProj != null)
            {
                pyProj.ProjectPropertyChanged   -= OnTestPropertiesChanged;
                pyProj.ActiveInterpreterChanged -= OnActiveInterpreterChanged;
            }
        }
Exemplo n.º 6
0
        public string GetCurrentTest(string filePath, int line, int lineCharOffset)
        {
            var pyProj = PythonProject.FromObject(PathToProject(filePath));

            if (pyProj != null)
            {
                var container = _discoverer.GetTestContainer(pyProj, filePath);
                if (container != null)
                {
                    foreach (var testCase in container.TestCases)
                    {
                        if (testCase.StartLine >= line && line <= testCase.EndLine)
                        {
                            var moduleName = PathUtils.CreateFriendlyFilePath(pyProj.ProjectHome, testCase.Filename);
                            return(moduleName + "::" + testCase.ClassName + "::" + testCase.MethodName);
                        }
                    }
                }
            }

            return(null);
        }
Exemplo n.º 7
0
        internal bool IsProjectKnown(IVsProject project)
        {
            var pyProj = PythonProject.FromObject(project);

            return(pyProj != null && _projectInfo.ContainsKey(pyProj));
        }