-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
1,601 additions
and
62 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
using System.IO; | ||
using System.Reflection; | ||
using System.Xml; | ||
using System.Xml.Linq; | ||
using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
|
||
namespace csmacnz.Coveralls.Tests | ||
{ | ||
[TestClass] | ||
public class OpenCoverParserTests | ||
{ | ||
private const string SingleFileReportSourceFilePath = @"c:\Users\Mark\Documents\Visual Studio 2013\Projects\OpenCoverTesting\OpenCoverTesting\Class1.cs"; | ||
|
||
[TestMethod] | ||
public void EmptyReportLoadsNoSourceFiles() | ||
{ | ||
var document = LoadDocumentFromResource("csmacnz.Coveralls.Tests.EmptyReport.xml"); | ||
|
||
var results = CreateOpenCoverParser().GenerateSourceFiles(document); | ||
|
||
Assert.AreEqual(0, results.Count); | ||
} | ||
|
||
[TestMethod] | ||
public void SingleFileReportLoadsSingleSourceFiles() | ||
{ | ||
var document = LoadDocumentFromResource("csmacnz.Coveralls.Tests.SingleFileReport.xml"); | ||
|
||
var results = CreateOpenCoverParser().GenerateSourceFiles(document); | ||
|
||
Assert.AreEqual(1, results.Count); | ||
} | ||
|
||
[TestMethod] | ||
public void SingleFileReportWithSingleMethodLineCoveredWithoutSourceLoadsCorrectly() | ||
{ | ||
var document = LoadDocumentFromResource("csmacnz.Coveralls.Tests.SingleFileReportOneLineCovered.xml"); | ||
|
||
var results = CreateOpenCoverParserForSingleFileReport().GenerateSourceFiles(document); | ||
|
||
Assert.AreEqual(1, results.Count); | ||
Assert.AreEqual(SingleFileReportSourceFilePath, results[0].Name); | ||
Assert.AreEqual(12, results[0].Coverage.Length); | ||
Assert.AreEqual(1, results[0].Coverage[8]); | ||
} | ||
|
||
[TestMethod] | ||
public void SingleFileReportWithSingleMethodLineUncoveredWithoutSourceLoadsCorrectly() | ||
{ | ||
var document = LoadDocumentFromResource("csmacnz.Coveralls.Tests.SingleFileReportOneLineUncovered.xml"); | ||
|
||
var results = CreateOpenCoverParserForSingleFileReport().GenerateSourceFiles(document); | ||
|
||
Assert.AreEqual(1, results.Count); | ||
Assert.AreEqual(SingleFileReportSourceFilePath, results[0].Name); | ||
Assert.AreEqual(12, results[0].Coverage.Length); | ||
Assert.AreEqual(0, results[0].Coverage[8]); | ||
} | ||
|
||
private OpenCoverParser CreateOpenCoverParser() | ||
{ | ||
return new OpenCoverParser(new TestFileSystem()); | ||
} | ||
|
||
private OpenCoverParser CreateOpenCoverParserForSingleFileReport() | ||
{ | ||
var testFileSystem = new TestFileSystem(); | ||
var singleFileReportSourceContent = LoadContentFromResource("csmacnz.Coveralls.Tests.SingleFileReportSourceFile.txt"); | ||
testFileSystem.AddFile(SingleFileReportSourceFilePath, singleFileReportSourceContent); | ||
return new OpenCoverParser(testFileSystem); | ||
} | ||
|
||
private static XDocument LoadDocumentFromResource(string embeddedResource) | ||
{ | ||
XDocument document; | ||
var executingAssembly = Assembly.GetExecutingAssembly(); | ||
using (var stream = executingAssembly.GetManifestResourceStream(embeddedResource)) | ||
{ | ||
using (var reader = XmlReader.Create(stream)) | ||
{ | ||
document = XDocument.Load(reader); | ||
} | ||
} | ||
return document; | ||
} | ||
|
||
private static string LoadContentFromResource(string embeddedResource) | ||
{ | ||
string content; | ||
var executingAssembly = Assembly.GetExecutingAssembly(); | ||
using (var stream = executingAssembly.GetManifestResourceStream(embeddedResource)) | ||
{ | ||
using (var reader = new StreamReader(stream)) | ||
{ | ||
content = reader.ReadToEnd(); | ||
} | ||
} | ||
return content; | ||
} | ||
} | ||
} |
Large diffs are not rendered by default.
Oops, something went wrong.
335 changes: 335 additions & 0 deletions
335
src/csmacnz.Coveralls.Tests/SingleFileReportOneLineCovered.xml
Large diffs are not rendered by default.
Oops, something went wrong.
343 changes: 343 additions & 0 deletions
343
src/csmacnz.Coveralls.Tests/SingleFileReportOneLineUncovered.xml
Large diffs are not rendered by default.
Oops, something went wrong.
12 changes: 12 additions & 0 deletions
12
src/csmacnz.Coveralls.Tests/SingleFileReportSourceFile.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
using System; | ||
|
||
namespace OpenCoverTesting | ||
{ | ||
public static class Class1 | ||
{ | ||
public static void CallThis() | ||
{ | ||
Console.WriteLine("called"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
using System.Collections.Generic; | ||
|
||
namespace csmacnz.Coveralls.Tests | ||
{ | ||
public class TestFileSystem : IFileSystem | ||
{ | ||
private readonly Dictionary<string, string> _files = new Dictionary<string, string>(); | ||
|
||
public string TryLoadFile(string fullPath) | ||
{ | ||
if (_files.ContainsKey(fullPath)) | ||
{ | ||
return _files[fullPath]; | ||
} | ||
return null; | ||
} | ||
|
||
public void AddFile(string path, string contents) | ||
{ | ||
_files[path] = contents; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<packages> | ||
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net451" /> | ||
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net451" /> | ||
<package id="Microsoft.Net.Http" version="2.2.28" targetFramework="net451" /> | ||
</packages> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
using System.IO; | ||
|
||
namespace csmacnz.Coveralls | ||
{ | ||
public class FileSystem : IFileSystem | ||
{ | ||
public string TryLoadFile(string fullPath) | ||
{ | ||
return File.ReadAllText(fullPath); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace csmacnz.Coveralls | ||
{ | ||
public interface IFileSystem | ||
{ | ||
string TryLoadFile(string fullPath); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
using System.Collections.Generic; | ||
using System.Xml.Linq; | ||
|
||
namespace csmacnz.Coveralls | ||
{ | ||
public class OpenCoverParser | ||
{ | ||
private readonly IFileSystem _fileSystem; | ||
|
||
public OpenCoverParser(IFileSystem fileSystem) | ||
{ | ||
_fileSystem = fileSystem; | ||
} | ||
|
||
public List<CoverageFile> GenerateSourceFiles(XDocument document) | ||
{ | ||
var files = new List<CoverageFile>(); | ||
if (document.Root != null) | ||
{ | ||
var xElement = document.Root.Element("Modules"); | ||
if (xElement != null) | ||
foreach (var module in xElement.Elements("Module")) | ||
{ | ||
var attribute = module.Attribute("skippedDueTo"); | ||
if (attribute == null || string.IsNullOrEmpty(attribute.Value)) | ||
{ | ||
var filesElement = module.Element("Files"); | ||
if (filesElement != null) | ||
{ | ||
foreach (var file in filesElement.Elements("File")) | ||
{ | ||
var fileid = file.Attribute("uid").Value; | ||
var fullPath = file.Attribute("fullPath").Value; | ||
var coverageBuilder = new CoverageFileBuilder(fullPath); | ||
|
||
var classesElement = module.Element("Classes"); | ||
if (classesElement != null) | ||
{ | ||
foreach (var @class in classesElement.Elements("Class")) | ||
{ | ||
var methods = @class.Element("Methods"); | ||
if (methods != null) | ||
foreach (var method in methods.Elements("Method")) | ||
{ | ||
var sequencePointsElement = method.Element("SequencePoints"); | ||
if (sequencePointsElement != null) | ||
foreach (var sequencePoint in sequencePointsElement.Elements("SequencePoint")) | ||
{ | ||
var sequenceFileid = sequencePoint.Attribute("fileid").Value; | ||
if (fileid == sequenceFileid) | ||
{ | ||
var sourceLine = int.Parse(sequencePoint.Attribute("sl").Value); | ||
var visitCount = int.Parse(sequencePoint.Attribute("vc").Value); | ||
|
||
coverageBuilder.RecordCoverage(sourceLine, visitCount); | ||
} | ||
|
||
} | ||
} | ||
} | ||
} | ||
|
||
var readAllText = _fileSystem.TryLoadFile(fullPath); | ||
if (readAllText != null) | ||
{ | ||
coverageBuilder.AddSource(readAllText); | ||
} | ||
var coverageFile = coverageBuilder.CreateFile(); | ||
files.Add(coverageFile); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
return files; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.