Skip to content

Commit 0b9d524

Browse files
Merge pull request #486 from codacy/fix/stop-failure-single-report-ALA-799
feature: stops failure when at least one report is sent ALA-799
2 parents e523b20 + fa7194c commit 0b9d524

File tree

3 files changed

+113
-3
lines changed

3 files changed

+113
-3
lines changed

src/main/scala/com/codacy/rules/ReportRules.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,14 @@ class ReportRules(coverageServices: => CoverageServices, gitFileFetcher: GitFile
5151
success
5252
}
5353
}
54-
.collectFirst {
55-
case Left(l) => Left(l)
54+
.foldLeft[Either[String, String]](Left("No coverage data was sent")) { (prev, curr) =>
55+
curr match {
56+
case Left(error) =>
57+
logger.warn(error)
58+
prev
59+
case Right(_) => Right("Coverage data uploaded.")
60+
}
5661
}
57-
.getOrElse(Right("All coverage data uploaded."))
5862
}
5963

6064
def codacyCoverage(config: ReportConfig): Either[String, String] = {
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Root CoveredStatements="23" TotalStatements="32" CoveragePercent="72" ReportType="DetailedXml" DotCoverVersion="2019.3.1">
3+
<FileIndices>
4+
<File Index="1" Name="/src/Tests/FooBarTests.cs" ChecksumAlgorithm="SHA256" Checksum="D06BEBC2836A851F722F020A10615F543E59A8778F250ECAA8F8C8465EE5811C" />
5+
<File Index="2" Name="/src/Coverage/Program.cs" ChecksumAlgorithm="SHA256" Checksum="1B3D9F852A896CD8EBF786BC13EE242891EA00F49600B94CD7833C4AA1DE86B3" />
6+
<File Index="3" Name="/src/Coverage/Bar.cs" ChecksumAlgorithm="SHA256" Checksum="147393855222EF85D83C298103D1BA96733F0FAD96CB4B3E7585FD53E09EEB8E" />
7+
<File Index="4" Name="/src/Coverage/Foo.cs" ChecksumAlgorithm="SHA256" Checksum="D9C3FACA66B741C26680F181CA31D4342112BD629D1F929201205F5B1E7261FC" />
8+
</FileIndices>
9+
<Assembly Name="Tests" CoveredStatements="12" TotalStatements="12" CoveragePercent="100">
10+
<Namespace Name="Tests" CoveredStatements="12" TotalStatements="12" CoveragePercent="100">
11+
<Type Name="FooBarTests" CoveredStatements="12" TotalStatements="12" CoveragePercent="100">
12+
<Method Name="TestBar():System.Void" CoveredStatements="4" TotalStatements="4" CoveragePercent="100">
13+
<Statement FileIndex="1" Line="19" Column="9" EndLine="19" EndColumn="10" Covered="True" />
14+
<Statement FileIndex="1" Line="20" Column="13" EndLine="20" EndColumn="33" Covered="True" />
15+
<Statement FileIndex="1" Line="22" Column="13" EndLine="22" EndColumn="44" Covered="True" />
16+
<Statement FileIndex="1" Line="23" Column="9" EndLine="23" EndColumn="10" Covered="True" />
17+
</Method>
18+
<Method Name="TestFoo():System.Void" CoveredStatements="4" TotalStatements="4" CoveragePercent="100">
19+
<Statement FileIndex="1" Line="11" Column="9" EndLine="11" EndColumn="10" Covered="True" />
20+
<Statement FileIndex="1" Line="12" Column="13" EndLine="12" EndColumn="33" Covered="True" />
21+
<Statement FileIndex="1" Line="14" Column="13" EndLine="14" EndColumn="26" Covered="True" />
22+
<Statement FileIndex="1" Line="15" Column="9" EndLine="15" EndColumn="10" Covered="True" />
23+
</Method>
24+
<Method Name="TestFooBar():System.Void" CoveredStatements="4" TotalStatements="4" CoveragePercent="100">
25+
<Statement FileIndex="1" Line="27" Column="9" EndLine="27" EndColumn="10" Covered="True" />
26+
<Statement FileIndex="1" Line="28" Column="13" EndLine="28" EndColumn="54" Covered="True" />
27+
<Statement FileIndex="1" Line="30" Column="13" EndLine="30" EndColumn="61" Covered="True" />
28+
<Statement FileIndex="1" Line="31" Column="9" EndLine="31" EndColumn="10" Covered="True" />
29+
</Method>
30+
</Type>
31+
</Namespace>
32+
</Assembly>
33+
<Assembly Name="coverages" CoveredStatements="11" TotalStatements="20" CoveragePercent="55">
34+
<Namespace Name="Coverage" CoveredStatements="11" TotalStatements="17" CoveragePercent="65">
35+
<Type Name="Bar" CoveredStatements="4" TotalStatements="7" CoveragePercent="57">
36+
<Method Name="RunBar(System.Boolean):System.Boolean" CoveredStatements="4" TotalStatements="7" CoveragePercent="57">
37+
<Statement FileIndex="3" Line="8" Column="9" EndLine="8" EndColumn="10" Covered="True" />
38+
<Statement FileIndex="3" Line="9" Column="13" EndLine="9" EndColumn="29" Covered="True" />
39+
<Statement FileIndex="3" Line="10" Column="13" EndLine="10" EndColumn="14" Covered="False" />
40+
<Statement FileIndex="3" Line="11" Column="17" EndLine="11" EndColumn="46" Covered="False" />
41+
<Statement FileIndex="3" Line="12" Column="13" EndLine="12" EndColumn="14" Covered="False" />
42+
<Statement FileIndex="3" Line="14" Column="13" EndLine="14" EndColumn="25" Covered="True" />
43+
<Statement FileIndex="3" Line="15" Column="9" EndLine="15" EndColumn="10" Covered="True" />
44+
</Method>
45+
</Type>
46+
<Type Name="Foo" CoveredStatements="3" TotalStatements="3" CoveragePercent="100">
47+
<Method Name="RunFoo():System.Void" CoveredStatements="3" TotalStatements="3" CoveragePercent="100">
48+
<Statement FileIndex="4" Line="8" Column="9" EndLine="8" EndColumn="10" Covered="True" />
49+
<Statement FileIndex="4" Line="9" Column="13" EndLine="9" EndColumn="43" Covered="True" />
50+
<Statement FileIndex="4" Line="10" Column="9" EndLine="10" EndColumn="10" Covered="True" />
51+
</Method>
52+
</Type>
53+
<Type Name="FooBar" CoveredStatements="4" TotalStatements="7" CoveragePercent="57">
54+
<Type Name="InnerClass" CoveredStatements="4" TotalStatements="7" CoveragePercent="57">
55+
<Method Name="RunInnerClass(System.String):System.Boolean" CoveredStatements="4" TotalStatements="7" CoveragePercent="57">
56+
<Statement FileIndex="5" Line="9" Column="13" EndLine="9" EndColumn="14" Covered="True" />
57+
<Statement FileIndex="5" Line="10" Column="17" EndLine="10" EndColumn="31" Covered="True" />
58+
<Statement FileIndex="5" Line="13" Column="25" EndLine="13" EndColumn="38" Covered="False" />
59+
<Statement FileIndex="5" Line="15" Column="25" EndLine="15" EndColumn="38" Covered="False" />
60+
<Statement FileIndex="5" Line="17" Column="25" EndLine="17" EndColumn="37" Covered="True" />
61+
<Statement FileIndex="5" Line="19" Column="25" EndLine="19" EndColumn="38" Covered="False" />
62+
<Statement FileIndex="5" Line="21" Column="13" EndLine="21" EndColumn="14" Covered="True" />
63+
</Method>
64+
</Type>
65+
</Type>
66+
</Namespace>
67+
<Namespace Name="coverages" CoveredStatements="0" TotalStatements="3" CoveragePercent="0">
68+
<Type Name="Program" CoveredStatements="0" TotalStatements="3" CoveragePercent="0">
69+
<Method Name="Main(System.String[]):System.Void" CoveredStatements="0" TotalStatements="3" CoveragePercent="0">
70+
<Statement FileIndex="2" Line="8" Column="9" EndLine="8" EndColumn="10" Covered="False" />
71+
<Statement FileIndex="2" Line="9" Column="13" EndLine="9" EndColumn="47" Covered="False" />
72+
<Statement FileIndex="2" Line="10" Column="9" EndLine="10" EndColumn="10" Covered="False" />
73+
</Method>
74+
</Type>
75+
</Namespace>
76+
</Assembly>
77+
</Root>

src/test/scala/com/codacy/rules/ReportRulesSpec.scala

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,35 @@ class ReportRulesSpec extends WordSpec with Matchers with PrivateMethodTester wi
164164
success = true
165165
)
166166
}
167+
168+
"succeed even if one of the parsed reports ends up empty" in {
169+
val coverageServices = mock[CoverageServices]
170+
val gitFileFetcher = mock[GitFileFetcher]
171+
172+
gitFileFetcher.forCommit(any[String]).shouldReturn(Right(Seq("src/Coverage/FooBar.cs")))
173+
174+
coverageServices.sendReport(
175+
any[String],
176+
any[String],
177+
any[CoverageReport],
178+
anyBoolean,
179+
Some(RequestTimeout(1000, 10000)),
180+
Some(10000),
181+
Some(3)
182+
) returns SuccessfulResponse(RequestSuccess("Success"))
183+
184+
coverageServices
185+
.sendFinalNotification(any[String], Some(RequestTimeout(1000, 10000)), Some(10000), Some(3)) returns SuccessfulResponse(
186+
RequestSuccess("Success")
187+
)
188+
189+
assertCodacyCoverage(
190+
coverageServices,
191+
gitFileFetcher,
192+
List("src/test/resources/dotcover-example.xml", "src/test/resources/non-git-report.xml"),
193+
success = true
194+
)
195+
}
167196
}
168197

169198
"handleFailedResponse" should {

0 commit comments

Comments
 (0)