예제 #1
0
        private void RunTestCases(
            IEnumerable <TestCase> tests,
            IRunContext runContext,
            IFrameworkHandle frameworkHandle
            )
        {
            bool   codeCoverage = EnableCodeCoverage(runContext);
            string covPath      = null;

            if (codeCoverage)
            {
                covPath = GetCoveragePath(tests);
            }
            // .py file path -> project settings
            var sourceToSettings = GetSourceToSettings(runContext.RunSettings);

            foreach (var testGroup in tests.GroupBy(x => sourceToSettings[x.CodeFilePath]))
            {
                if (_cancelRequested.WaitOne(0))
                {
                    break;
                }

                using (var runner = new TestRunner(
                           frameworkHandle,
                           runContext,
                           testGroup,
                           covPath,
                           testGroup.Key,
                           _app,
                           _cancelRequested
                           )) {
                    runner.Run();
                }
            }

            if (codeCoverage)
            {
                if (File.Exists(covPath + ".xml"))
                {
                    var set = new AttachmentSet(PythonCodeCoverageUri, "CodeCoverage");

                    set.Attachments.Add(
                        new UriDataAttachment(new Uri(covPath + ".xml"), "Coverage Data")
                        );
                    frameworkHandle.RecordAttachments(new[] { set });

                    File.Delete(covPath);
                }
                else
                {
                    frameworkHandle.SendMessage(TestMessageLevel.Warning, Strings.Test_NoCoverageProduced);
                }
            }
        }
예제 #2
0
        internal static void AttachCoverageResults(IFrameworkHandle frameworkHandle, string covPath)
        {
            if (File.Exists(covPath + ".xml"))
            {
                var set = new AttachmentSet(PythonConstants.PythonCodeCoverageUri, "CodeCoverage");

                set.Attachments.Add(
                    new UriDataAttachment(new Uri(covPath + ".xml"), "Coverage Data")
                    );
                frameworkHandle.RecordAttachments(new[] { set });

                File.Delete(covPath);
            }
            else
            {
                frameworkHandle.SendMessage(TestMessageLevel.Warning, Strings.Test_NoCoverageProduced);
            }
        }