Пример #1
0
        private async Task ConvertCoveragePyAsync(string inputFile, string outputFile, PythonLanguageVersion?version)
        {
            var baseDir = Path.GetDirectoryName(inputFile);

            using (FileStream tmp = new FileStream(inputFile, FileMode.Open))
                using (FileStream outp = new FileStream(outputFile, FileMode.Create)) {
                    // Read in the data from coverage.py's XML file
                    CoverageFileInfo[] fileInfo = new CoveragePyConverter(baseDir, tmp).Parse();

                    // Discover what version we should use for this if one hasn't been provided...
                    if (version == null)
                    {
                        foreach (var file in fileInfo)
                        {
                            var factory = GetFactory(_serviceProvider, file.Filename);
                            version = factory?.Configuration.Version.ToLanguageVersion();
                            if (version.HasValue)
                            {
                                break;
                            }
                        }
                    }

                    // Convert that into offsets within the actual code
                    var covInfo = Import(fileInfo, version ?? PythonLanguageVersion.None);

                    // Then export as .coveragexml
                    new CoverageExporter(outp, covInfo).Export();
                }
        }
Пример #2
0
        private void RunOneTest(string inputFile, params ModuleCoverage[] expected)
        {
            string baseDir = Path.GetDirectoryName(inputFile);

            using (FileStream tmp = new FileStream(inputFile, FileMode.Open))
            {
                // Read in the data from coverage.py's XML file
                CoverageFileInfo[] fileInfo = new CoveragePyConverter(baseDir, tmp).Parse();

                // Convert that into offsets within the actual code
                var covInfo = ImportCoverageCommand.Import(fileInfo);

                try
                {
                    foreach (ModuleCoverage test in expected)
                    {
                        test.Validate(covInfo);
                    }
                }
                finally
                {
                    DumpCoverage(covInfo);
                }

                // verify we produce the expected .coveragexml
                var exportedFile = Path.Combine(Path.GetDirectoryName(inputFile), "coverage.coveragexml");
                if (File.Exists(exportedFile))
                {
                    var          expectedExport = File.ReadAllText(exportedFile);
                    MemoryStream outputStream   = new MemoryStream();
                    new CoverageExporter(
                        outputStream,
                        covInfo
                        ).Export();
                    outputStream.Flush();
                    outputStream.Seek(0, SeekOrigin.Begin);
                    var exported = new StreamReader(outputStream).ReadToEnd();

                    Assert.AreEqual(
                        expectedExport.Replace("||basedir||", TestData.GetPath("")),
                        exported
                        );
                }
            }
        }
Пример #3
0
        private void ConvertCoveragePy(string inputFile, string outputFile, PythonLanguageVersion?version)
        {
            var baseDir = Path.GetDirectoryName(inputFile);

            using (FileStream tmp = new FileStream(inputFile, FileMode.Open))
                using (FileStream outp = new FileStream(outputFile, FileMode.Create)) {
                    // Read in the data from coverage.py's XML file
                    CoverageFileInfo[] fileInfo = new CoveragePyConverter(baseDir, tmp).Parse();

                    // Discover what version we should use for this if one hasn't been provided...
                    if (version == null)
                    {
                        foreach (var file in fileInfo)
                        {
                            var project = _serviceProvider.GetProjectFromFile(file.Filename);
                            if (project != null)
                            {
                                version = project.ActiveInterpreter.Configuration.Version.ToLanguageVersion();
                                break;
                            }
                        }
                    }

                    if (version == null)
                    {
                        version = _serviceProvider
                                  .GetPythonToolsService()
                                  .DefaultInterpreterConfiguration
                                  .Version
                                  .ToLanguageVersion();
                    }

                    // Convert that into offsets within the actual code
                    var covInfo = Import(fileInfo, version.Value);

                    // Then export as .coveragexml
                    new CoverageExporter(outp, covInfo).Export();
                }
        }
Пример #4
0
        private void ConvertCoveragePy(string inputFile, string outputFile, PythonLanguageVersion?version)
        {
            var baseDir = Path.GetDirectoryName(inputFile);

            using (FileStream tmp = new FileStream(inputFile, FileMode.Open))
                using (FileStream outp = new FileStream(outputFile, FileMode.Create)) {
                    // Read in the data from coverage.py's XML file
                    CoverageFileInfo[] fileInfo = new CoveragePyConverter(baseDir, tmp).Parse();

                    // Discover what version we should use for this if one hasn't been provided...
                    if (version == null)
                    {
                        var entryService = _serviceProvider.GetEntryService();
                        foreach (var file in fileInfo)
                        {
                            version = entryService.GetAnalyzersForFile(file.Filename)
                                      .OfType <VsProjectAnalyzer>()
                                      .Select(a => (PythonLanguageVersion?)a.LanguageVersion)
                                      .FirstOrDefault();
                            if (version.HasValue)
                            {
                                break;
                            }
                        }

                        if (version == null)
                        {
                            version = (entryService.DefaultAnalyzer as VsProjectAnalyzer)?.LanguageVersion;
                        }
                    }

                    // Convert that into offsets within the actual code
                    var covInfo = Import(fileInfo, version ?? PythonLanguageVersion.None);

                    // Then export as .coveragexml
                    new CoverageExporter(outp, covInfo).Export();
                }
        }
Пример #5
0
        private void RunOneTest(string inputFile, params ModuleCoverage[] expected) {
            string baseDir = Path.GetDirectoryName(inputFile);
            using (FileStream tmp = new FileStream(inputFile, FileMode.Open)) {
                // Read in the data from coverage.py's XML file
                CoverageFileInfo[] fileInfo = new CoveragePyConverter(baseDir, tmp).Parse();

                // Convert that into offsets within the actual code
                var covInfo = ImportCoverageCommand.Import(fileInfo);

                try {
                    foreach (var test in expected) {
                        test.Validate(covInfo);
                    }
                } finally {
                    DumpCoverage(covInfo);
                }

                // verify we produce the expected .coveragexml
                var exportedFile = Path.Combine(Path.GetDirectoryName(inputFile), "coverage.coveragexml");
                if (File.Exists(exportedFile)) {
                    var expectedExport = File.ReadAllText(exportedFile);
                    MemoryStream outputStream = new MemoryStream();
                    new CoverageExporter(
                        outputStream,
                        covInfo
                    ).Export();
                    outputStream.Flush();
                    outputStream.Seek(0, SeekOrigin.Begin);
                    var exported = new StreamReader(outputStream).ReadToEnd();

                    Assert.AreEqual(
                        expectedExport.Replace("||basedir||", TestData.GetPath("")), 
                        exported
                    );
                }
            }
        }