예제 #1
0
        public void RunTests(IEnumerable <string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle)
        {
            ValidateArg.NotNull(sources, "sources");
            ValidateArg.NotNull(runContext, "runContext");
            ValidateArg.NotNull(frameworkHandle, "frameworkHandle");

            _cancelRequested.Reset();

            var executorUri = new Uri(PythonConstants.TestExecutorUriString);
            var tests       = new List <TestCase>();
            var doc         = new XPathDocument(new StringReader(runContext.RunSettings.SettingsXml));

            foreach (var t in TestReader.ReadTests(doc, new HashSet <string>(sources, StringComparer.OrdinalIgnoreCase), m => {
                frameworkHandle?.SendMessage(TestMessageLevel.Warning, m);
            }))
            {
                tests.Add(new TestCase(t.FullyQualifiedName, executorUri, t.SourceFile)
                {
                    DisplayName  = t.DisplayName,
                    LineNumber   = t.LineNo,
                    CodeFilePath = t.SourceFile
                });
            }

            if (_cancelRequested.WaitOne(0))
            {
                return;
            }

            RunTestCases(tests, runContext, frameworkHandle);
        }
예제 #2
0
파일: TestExecutor.cs 프로젝트: szh2bg/PTVS
        public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle) {
            if (sources == null) {
                throw new ArgumentNullException(nameof(sources));
            }

            if (runContext == null) {
                throw new ArgumentNullException(nameof(runContext));
            }

            if (frameworkHandle == null) {
                throw new ArgumentNullException(nameof(frameworkHandle));
            }

            _cancelRequested.Reset();

            var executorUri = new Uri(PythonConstants.TestExecutorUriString);
            var tests = new List<TestCase>();
            var doc = Read(runContext.RunSettings.SettingsXml);
            foreach (var t in TestReader.ReadTests(doc, new HashSet<string>(sources, StringComparer.OrdinalIgnoreCase), m => {
                frameworkHandle?.SendMessage(TestMessageLevel.Warning, m);
            })) {
                tests.Add(new TestCase(t.FullyQualifiedName, executorUri, t.SourceFile) {
                    DisplayName = t.DisplayName,
                    LineNumber = t.LineNo,
                    CodeFilePath = t.SourceFile
                });
            }

            if (_cancelRequested.WaitOne(0)) {
                return;
            }

            RunTestCases(tests, runContext, frameworkHandle);
        }
예제 #3
0
        static void DiscoverTests(IEnumerable <string> sources, IMessageLogger logger, ITestCaseDiscoverySink discoverySink, IRunSettings settings)
        {
            var sourcesSet = new HashSet <string>(sources, StringComparer.OrdinalIgnoreCase);

            var executorUri = new Uri(PythonConstants.TestExecutorUriString);
            // Test list is sent to us via our run settings which we use to smuggle the
            // data we have in our analysis process.
            var doc = Read(settings.SettingsXml);

            foreach (var t in TestReader.ReadTests(doc, sourcesSet, m => {
                logger?.SendMessage(TestMessageLevel.Warning, m);
            }))
            {
                var tc = new TestCase(t.FullyQualifiedName, executorUri, t.SourceFile)
                {
                    DisplayName  = t.DisplayName,
                    LineNumber   = t.LineNo,
                    CodeFilePath = t.FileName
                };

                discoverySink.SendTestCase(tc);
            }
        }