mirror of
https://github.com/dorny/test-reporter.git
synced 2026-02-01 02:45:22 -08:00
Add sample files from PHPUnit results in JUnit XML format
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
30
__tests__/__outputs__/phpunit-junit-basic-results.md
Normal file
30
__tests__/__outputs__/phpunit-junit-basic-results.md
Normal file
@@ -0,0 +1,30 @@
|
||||

|
||||
|Report|Passed|Failed|Skipped|Time|
|
||||
|:---|---:|---:|---:|---:|
|
||||
|[fixtures/external/phpunit/junit-basic.xml](#user-content-r0)|8 ✅|1 ❌||16s|
|
||||
## ❌ <a id="user-content-r0" href="#user-content-r0">fixtures/external/phpunit/junit-basic.xml</a>
|
||||
**9** tests were completed in **16s** with **8** passed, **1** failed and **0** skipped.
|
||||
|Test suite|Passed|Failed|Skipped|Time|
|
||||
|:---|---:|---:|---:|---:|
|
||||
|[Tests.Authentication](#user-content-r0s0)|2 ✅|1 ❌||9s|
|
||||
|[Tests.Authentication.Login](#user-content-r0s1)|3 ✅|||4s|
|
||||
|[Tests.Registration](#user-content-r0s2)|3 ✅|||7s|
|
||||
### ❌ <a id="user-content-r0s0" href="#user-content-r0s0">Tests.Authentication</a>
|
||||
```
|
||||
✅ testCase7
|
||||
✅ testCase8
|
||||
❌ testCase9
|
||||
AssertionError: Assertion error message
|
||||
```
|
||||
### ✅ <a id="user-content-r0s1" href="#user-content-r0s1">Tests.Authentication.Login</a>
|
||||
```
|
||||
✅ testCase4
|
||||
✅ testCase5
|
||||
✅ testCase6
|
||||
```
|
||||
### ✅ <a id="user-content-r0s2" href="#user-content-r0s2">Tests.Registration</a>
|
||||
```
|
||||
✅ testCase1
|
||||
✅ testCase2
|
||||
✅ testCase3
|
||||
```
|
||||
88
__tests__/__outputs__/phpunit-phpcheckstyle-results.md
Normal file
88
__tests__/__outputs__/phpunit-phpcheckstyle-results.md
Normal file
@@ -0,0 +1,88 @@
|
||||

|
||||
|Report|Passed|Failed|Skipped|Time|
|
||||
|:---|---:|---:|---:|---:|
|
||||
|[fixtures/external/phpunit/phpcheckstyle-phpunit.xml](#user-content-r0)|28 ✅|2 ❌||41ms|
|
||||
## ❌ <a id="user-content-r0" href="#user-content-r0">fixtures/external/phpunit/phpcheckstyle-phpunit.xml</a>
|
||||
**30** tests were completed in **41ms** with **28** passed, **2** failed and **0** skipped.
|
||||
|Test suite|Passed|Failed|Skipped|Time|
|
||||
|:---|---:|---:|---:|---:|
|
||||
|[CommentsTest](#user-content-r0s0)|3 ✅|||7ms|
|
||||
|[DeprecationTest](#user-content-r0s1)|1 ✅|||1ms|
|
||||
|[GoodTest](#user-content-r0s2)|4 ✅|||5ms|
|
||||
|[IndentationTest](#user-content-r0s3)|8 ✅|||8ms|
|
||||
|[MetricsTest](#user-content-r0s4)|1 ✅|||4ms|
|
||||
|[NamingTest](#user-content-r0s5)|2 ✅|||3ms|
|
||||
|[OptimizationTest](#user-content-r0s6)|1 ✅|||1ms|
|
||||
|[OtherTest](#user-content-r0s7)|2 ✅|2 ❌||7ms|
|
||||
|[PHPTagsTest](#user-content-r0s8)|2 ✅|||1ms|
|
||||
|[ProhibitedTest](#user-content-r0s9)|1 ✅|||1ms|
|
||||
|[StrictCompareTest](#user-content-r0s10)|1 ✅|||2ms|
|
||||
|[UnusedTest](#user-content-r0s11)|2 ✅|||2ms|
|
||||
### ✅ <a id="user-content-r0s0" href="#user-content-r0s0">CommentsTest</a>
|
||||
```
|
||||
✅ testGoodDoc
|
||||
✅ testComments
|
||||
✅ testTODOs
|
||||
```
|
||||
### ✅ <a id="user-content-r0s1" href="#user-content-r0s1">DeprecationTest</a>
|
||||
```
|
||||
✅ testDeprecations
|
||||
```
|
||||
### ✅ <a id="user-content-r0s2" href="#user-content-r0s2">GoodTest</a>
|
||||
```
|
||||
✅ testGood
|
||||
✅ testDoWhile
|
||||
✅ testAnonymousFunction
|
||||
✅ testException
|
||||
```
|
||||
### ✅ <a id="user-content-r0s3" href="#user-content-r0s3">IndentationTest</a>
|
||||
```
|
||||
✅ testTabIndentation
|
||||
✅ testSpaceIndentation
|
||||
✅ testSpaceIndentationArray
|
||||
✅ testGoodSpaceIndentationArray
|
||||
✅ testGoodIndentationNewLine
|
||||
✅ testGoodIndentationSpaces
|
||||
✅ testBadSpaces
|
||||
✅ testBadSpaceAfterControl
|
||||
```
|
||||
### ✅ <a id="user-content-r0s4" href="#user-content-r0s4">MetricsTest</a>
|
||||
```
|
||||
✅ testMetrics
|
||||
```
|
||||
### ✅ <a id="user-content-r0s5" href="#user-content-r0s5">NamingTest</a>
|
||||
```
|
||||
✅ testNaming
|
||||
✅ testFunctionNaming
|
||||
```
|
||||
### ✅ <a id="user-content-r0s6" href="#user-content-r0s6">OptimizationTest</a>
|
||||
```
|
||||
✅ testTextAfterClosingTag
|
||||
```
|
||||
### ❌ <a id="user-content-r0s7" href="#user-content-r0s7">OtherTest</a>
|
||||
```
|
||||
❌ testOther
|
||||
PHPUnit\Framework\ExpectationFailedException
|
||||
❌ testException
|
||||
PHPUnit\Framework\ExpectationFailedException
|
||||
✅ testEmpty
|
||||
✅ testSwitchCaseNeedBreak
|
||||
```
|
||||
### ✅ <a id="user-content-r0s8" href="#user-content-r0s8">PHPTagsTest</a>
|
||||
```
|
||||
✅ testTextAfterClosingTag
|
||||
✅ testClosingTagNotNeeded
|
||||
```
|
||||
### ✅ <a id="user-content-r0s9" href="#user-content-r0s9">ProhibitedTest</a>
|
||||
```
|
||||
✅ testProhibited
|
||||
```
|
||||
### ✅ <a id="user-content-r0s10" href="#user-content-r0s10">StrictCompareTest</a>
|
||||
```
|
||||
✅ testStrictCompare
|
||||
```
|
||||
### ✅ <a id="user-content-r0s11" href="#user-content-r0s11">UnusedTest</a>
|
||||
```
|
||||
✅ testGoodUnused
|
||||
✅ testBadUnused
|
||||
```
|
||||
@@ -1,26 +1,29 @@
|
||||

|
||||
## ❌ <a id="user-content-r0" href="#r0">fixtures/phpunit/phpunit.xml</a>
|
||||
|Report|Passed|Failed|Skipped|Time|
|
||||
|:---|---:|---:|---:|---:|
|
||||
|[fixtures/phpunit/phpunit.xml](#user-content-r0)|10 ✅|2 ❌||148ms|
|
||||
## ❌ <a id="user-content-r0" href="#user-content-r0">fixtures/phpunit/phpunit.xml</a>
|
||||
**12** tests were completed in **148ms** with **10** passed, **2** failed and **0** skipped.
|
||||
|Test suite|Passed|Failed|Skipped|Time|
|
||||
|:---|---:|---:|---:|---:|
|
||||
|[CLI Arguments](#r0s0)||2❌||140ms|
|
||||
|[PHPUnit\Event\CollectingDispatcherTest](#r0s1)|2✅|||4ms|
|
||||
|[PHPUnit\Event\DeferringDispatcherTest](#r0s2)|4✅|||3ms|
|
||||
|[PHPUnit\Event\DirectDispatcherTest](#r0s3)|4✅|||1ms|
|
||||
### ❌ <a id="user-content-r0s0" href="#r0s0">CLI Arguments</a>
|
||||
|[CLI Arguments](#user-content-r0s0)||2 ❌||140ms|
|
||||
|[PHPUnit\Event\CollectingDispatcherTest](#user-content-r0s1)|2 ✅|||4ms|
|
||||
|[PHPUnit\Event\DeferringDispatcherTest](#user-content-r0s2)|4 ✅|||3ms|
|
||||
|[PHPUnit\Event\DirectDispatcherTest](#user-content-r0s3)|4 ✅|||1ms|
|
||||
### ❌ <a id="user-content-r0s0" href="#user-content-r0s0">CLI Arguments</a>
|
||||
```
|
||||
❌ targeting-traits-with-coversclass-attribute-is-deprecated.phpt
|
||||
PHPUnit\Framework\PhptAssertionFailedError
|
||||
❌ targeting-traits-with-usesclass-attribute-is-deprecated.phpt
|
||||
PHPUnit\Framework\PhptAssertionFailedError
|
||||
```
|
||||
### ✅ <a id="user-content-r0s1" href="#r0s1">PHPUnit\Event\CollectingDispatcherTest</a>
|
||||
### ✅ <a id="user-content-r0s1" href="#user-content-r0s1">PHPUnit\Event\CollectingDispatcherTest</a>
|
||||
```
|
||||
PHPUnit.Event.CollectingDispatcherTest
|
||||
✅ testHasNoCollectedEventsWhenFlushedImmediatelyAfterCreation
|
||||
✅ testCollectsDispatchedEventsUntilFlushed
|
||||
```
|
||||
### ✅ <a id="user-content-r0s2" href="#r0s2">PHPUnit\Event\DeferringDispatcherTest</a>
|
||||
### ✅ <a id="user-content-r0s2" href="#user-content-r0s2">PHPUnit\Event\DeferringDispatcherTest</a>
|
||||
```
|
||||
PHPUnit.Event.DeferringDispatcherTest
|
||||
✅ testCollectsEventsUntilFlush
|
||||
@@ -28,7 +31,7 @@ PHPUnit.Event.DeferringDispatcherTest
|
||||
✅ testSubscriberCanBeRegistered
|
||||
✅ testTracerCanBeRegistered
|
||||
```
|
||||
### ✅ <a id="user-content-r0s3" href="#r0s3">PHPUnit\Event\DirectDispatcherTest</a>
|
||||
### ✅ <a id="user-content-r0s3" href="#user-content-r0s3">PHPUnit\Event\DirectDispatcherTest</a>
|
||||
```
|
||||
PHPUnit.Event.DirectDispatcherTest
|
||||
✅ testDispatchesEventToKnownSubscribers
|
||||
|
||||
@@ -1,5 +1,445 @@
|
||||
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
||||
|
||||
exports[`phpunit-junit tests report from junit-basic.xml matches snapshot 1`] = `
|
||||
TestRunResult {
|
||||
"path": "fixtures/external/phpunit/junit-basic.xml",
|
||||
"suites": [
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase1",
|
||||
"result": "success",
|
||||
"time": 2113.871,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase2",
|
||||
"result": "success",
|
||||
"time": 1051,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase3",
|
||||
"result": "success",
|
||||
"time": 3441,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "Tests.Registration",
|
||||
"totalTime": 6605.870999999999,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase4",
|
||||
"result": "success",
|
||||
"time": 2244,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase5",
|
||||
"result": "success",
|
||||
"time": 781,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase6",
|
||||
"result": "success",
|
||||
"time": 1331,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "Tests.Authentication.Login",
|
||||
"totalTime": 4356,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase7",
|
||||
"result": "success",
|
||||
"time": 2508,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testCase8",
|
||||
"result": "success",
|
||||
"time": 1230.8159999999998,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": {
|
||||
"details": "",
|
||||
"line": undefined,
|
||||
"message": "AssertionError: Assertion error message",
|
||||
"path": undefined,
|
||||
},
|
||||
"name": "testCase9",
|
||||
"result": "failed",
|
||||
"time": 982,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "Tests.Authentication",
|
||||
"totalTime": 9076.816,
|
||||
},
|
||||
],
|
||||
"totalTime": 15682.687,
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`phpunit-junit tests report from phpcheckstyle-phpunit.xml matches snapshot 1`] = `
|
||||
TestRunResult {
|
||||
"path": "fixtures/external/phpunit/phpcheckstyle-phpunit.xml",
|
||||
"suites": [
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testGoodDoc",
|
||||
"result": "success",
|
||||
"time": 5.093,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testComments",
|
||||
"result": "success",
|
||||
"time": 0.921,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testTODOs",
|
||||
"result": "success",
|
||||
"time": 0.6880000000000001,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "CommentsTest",
|
||||
"totalTime": 6.702,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testDeprecations",
|
||||
"result": "success",
|
||||
"time": 0.9740000000000001,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "DeprecationTest",
|
||||
"totalTime": 0.9740000000000001,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testGood",
|
||||
"result": "success",
|
||||
"time": 2.6470000000000002,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testDoWhile",
|
||||
"result": "success",
|
||||
"time": 1.0219999999999998,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testAnonymousFunction",
|
||||
"result": "success",
|
||||
"time": 0.8,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testException",
|
||||
"result": "success",
|
||||
"time": 0.888,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "GoodTest",
|
||||
"totalTime": 5.357,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testTabIndentation",
|
||||
"result": "success",
|
||||
"time": 0.857,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testSpaceIndentation",
|
||||
"result": "success",
|
||||
"time": 0.929,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testSpaceIndentationArray",
|
||||
"result": "success",
|
||||
"time": 0.975,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testGoodSpaceIndentationArray",
|
||||
"result": "success",
|
||||
"time": 1.212,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testGoodIndentationNewLine",
|
||||
"result": "success",
|
||||
"time": 0.859,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testGoodIndentationSpaces",
|
||||
"result": "success",
|
||||
"time": 0.78,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testBadSpaces",
|
||||
"result": "success",
|
||||
"time": 1.1199999999999999,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testBadSpaceAfterControl",
|
||||
"result": "success",
|
||||
"time": 0.9219999999999999,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "IndentationTest",
|
||||
"totalTime": 7.654,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testMetrics",
|
||||
"result": "success",
|
||||
"time": 4.146999999999999,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "MetricsTest",
|
||||
"totalTime": 4.146999999999999,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testNaming",
|
||||
"result": "success",
|
||||
"time": 1.426,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testFunctionNaming",
|
||||
"result": "success",
|
||||
"time": 1.271,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "NamingTest",
|
||||
"totalTime": 2.697,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testTextAfterClosingTag",
|
||||
"result": "success",
|
||||
"time": 0.9940000000000001,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "OptimizationTest",
|
||||
"totalTime": 0.9940000000000001,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": {
|
||||
"details": "OtherTest::testOther
|
||||
We expect 20 warnings
|
||||
Failed asserting that 19 matches expected 20.
|
||||
|
||||
/workspace/phpcheckstyle/test/OtherTest.php:24",
|
||||
"line": 12,
|
||||
"message": "PHPUnit\\Framework\\ExpectationFailedException",
|
||||
"path": undefined,
|
||||
},
|
||||
"name": "testOther",
|
||||
"result": "failed",
|
||||
"time": 5.2509999999999994,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": {
|
||||
"details": "OtherTest::testException
|
||||
We expect 1 error
|
||||
Failed asserting that 0 matches expected 1.
|
||||
|
||||
/workspace/phpcheckstyle/test/OtherTest.php:40",
|
||||
"line": 31,
|
||||
"message": "PHPUnit\\Framework\\ExpectationFailedException",
|
||||
"path": undefined,
|
||||
},
|
||||
"name": "testException",
|
||||
"result": "failed",
|
||||
"time": 0.751,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testEmpty",
|
||||
"result": "success",
|
||||
"time": 0.42700000000000005,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testSwitchCaseNeedBreak",
|
||||
"result": "success",
|
||||
"time": 0.901,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "OtherTest",
|
||||
"totalTime": 7.329,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testTextAfterClosingTag",
|
||||
"result": "success",
|
||||
"time": 0.641,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testClosingTagNotNeeded",
|
||||
"result": "success",
|
||||
"time": 0.631,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "PHPTagsTest",
|
||||
"totalTime": 1.272,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testProhibited",
|
||||
"result": "success",
|
||||
"time": 0.9380000000000001,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "ProhibitedTest",
|
||||
"totalTime": 0.9380000000000001,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testStrictCompare",
|
||||
"result": "success",
|
||||
"time": 1.578,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "StrictCompareTest",
|
||||
"totalTime": 1.578,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": [
|
||||
TestGroupResult {
|
||||
"name": "",
|
||||
"tests": [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testGoodUnused",
|
||||
"result": "success",
|
||||
"time": 0.94,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "testBadUnused",
|
||||
"result": "success",
|
||||
"time": 0.895,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "UnusedTest",
|
||||
"totalTime": 1.835,
|
||||
},
|
||||
],
|
||||
"totalTime": undefined,
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`phpunit-junit tests report from phpunit test results matches snapshot 1`] = `
|
||||
TestRunResult {
|
||||
"path": "fixtures/phpunit/phpunit.xml",
|
||||
|
||||
28
__tests__/fixtures/external/phpunit/junit-basic.xml
vendored
Normal file
28
__tests__/fixtures/external/phpunit/junit-basic.xml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
This is a basic JUnit-style XML example to highlight the basis structure.
|
||||
|
||||
Example by Testmo. Copyright 2023 Testmo GmbH. All rights reserved.
|
||||
Testmo test management software - https://www.testmo.com/
|
||||
-->
|
||||
<testsuites time="15.682687">
|
||||
<testsuite name="Tests.Registration" time="6.605871">
|
||||
<testcase name="testCase1" classname="Tests.Registration" time="2.113871" />
|
||||
<testcase name="testCase2" classname="Tests.Registration" time="1.051" />
|
||||
<testcase name="testCase3" classname="Tests.Registration" time="3.441" />
|
||||
</testsuite>
|
||||
<testsuite name="Tests.Authentication" time="9.076816">
|
||||
<testsuite name="Tests.Authentication.Login" time="4.356">
|
||||
<testcase name="testCase4" classname="Tests.Authentication.Login" time="2.244" />
|
||||
<testcase name="testCase5" classname="Tests.Authentication.Login" time="0.781" />
|
||||
<testcase name="testCase6" classname="Tests.Authentication.Login" time="1.331" />
|
||||
</testsuite>
|
||||
<testcase name="testCase7" classname="Tests.Authentication" time="2.508" />
|
||||
<testcase name="testCase8" classname="Tests.Authentication" time="1.230816" />
|
||||
<testcase name="testCase9" classname="Tests.Authentication" time="0.982">
|
||||
<failure message="Assertion error message" type="AssertionError">
|
||||
<!-- Call stack printed here -->
|
||||
</failure>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
212
__tests__/fixtures/external/phpunit/phpcheckstyle-phpunit.xml
vendored
Normal file
212
__tests__/fixtures/external/phpunit/phpcheckstyle-phpunit.xml
vendored
Normal file
@@ -0,0 +1,212 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<testsuites>
|
||||
<testsuite name="/workspace/phpcheckstyle/phpunit.xml" tests="30" assertions="117" errors="0" failures="2" skipped="0" time="0.041478">
|
||||
<testsuite name="PHPUnitTestSuite" tests="30" assertions="117" errors="0" failures="2" skipped="0" time="0.041478">
|
||||
<testsuite name="CommentsTest" file="/workspace/phpcheckstyle/test/CommentsTest.php" tests="3" assertions="12" errors="0" failures="0" skipped="0" time="0.006702">
|
||||
<testcase name="testGoodDoc" file="/workspace/phpcheckstyle/test/CommentsTest.php" line="12" class="CommentsTest" classname="CommentsTest" assertions="4" time="0.005093"/>
|
||||
<testcase name="testComments" file="/workspace/phpcheckstyle/test/CommentsTest.php" line="30" class="CommentsTest" classname="CommentsTest" assertions="4" time="0.000921">
|
||||
<system-out>File "./test/sample/bad_comments.php" warning, line 4 - Avoid Shell/Perl like comments.
|
||||
File "./test/sample/bad_comments.php" warning, line 6 - The class Comments must have a docblock comment.
|
||||
File "./test/sample/bad_comments.php" warning, line 10 - The function testComment must have a docblock comment.
|
||||
File "./test/sample/bad_comments.php" warning, line 18 - The function testComment returns a value and must include @returns in its docblock.
|
||||
File "./test/sample/bad_comments.php" warning, line 18 - The function testComment parameters must match those in its docblock @param.
|
||||
File "./test/sample/bad_comments.php" warning, line 18 - The function testComment throws an exception and must include @throws in its docblock.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testTODOs" file="/workspace/phpcheckstyle/test/CommentsTest.php" line="48" class="CommentsTest" classname="CommentsTest" assertions="4" time="0.000688">
|
||||
<system-out>File "./test/sample/todo.php" warning, line 3 - TODO: The todo message.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="DeprecationTest" file="/workspace/phpcheckstyle/test/DeprecationTest.php" tests="1" assertions="4" errors="0" failures="0" skipped="0" time="0.000974">
|
||||
<testcase name="testDeprecations" file="/workspace/phpcheckstyle/test/DeprecationTest.php" line="12" class="DeprecationTest" classname="DeprecationTest" assertions="4" time="0.000974">
|
||||
<system-out>File "./test/sample/bad_deprecation.php" warning, line 17 - split is deprecated since PHP 5.3. explode($pattern, $string) or preg_split('@'.$pattern.'@', $string) must be used instead.
|
||||
File "./test/sample/bad_deprecation.php" warning, line 19 - ereg is deprecated since PHP 5.3. preg_match('@'.$pattern.'@', $string) must be used instead.
|
||||
File "./test/sample/bad_deprecation.php" warning, line 21 - session_register is deprecated since PHP 5.3. $_SESSION must be used instead.
|
||||
File "./test/sample/bad_deprecation.php" warning, line 23 - mysql_db_query is deprecated since PHP 5.3. mysql_select_db and mysql_query must be used instead.
|
||||
File "./test/sample/bad_deprecation.php" warning, line 25 - $HTTP_GET_VARS is deprecated since PHP 5.3. $_GET must be used instead.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="GoodTest" file="/workspace/phpcheckstyle/test/GoodTest.php" tests="4" assertions="16" errors="0" failures="0" skipped="0" time="0.005357">
|
||||
<testcase name="testGood" file="/workspace/phpcheckstyle/test/GoodTest.php" line="12" class="GoodTest" classname="GoodTest" assertions="4" time="0.002647"/>
|
||||
<testcase name="testDoWhile" file="/workspace/phpcheckstyle/test/GoodTest.php" line="32" class="GoodTest" classname="GoodTest" assertions="4" time="0.001022"/>
|
||||
<testcase name="testAnonymousFunction" file="/workspace/phpcheckstyle/test/GoodTest.php" line="50" class="GoodTest" classname="GoodTest" assertions="4" time="0.000800"/>
|
||||
<testcase name="testException" file="/workspace/phpcheckstyle/test/GoodTest.php" line="68" class="GoodTest" classname="GoodTest" assertions="4" time="0.000888"/>
|
||||
</testsuite>
|
||||
<testsuite name="IndentationTest" file="/workspace/phpcheckstyle/test/IndentationTest.php" tests="8" assertions="32" errors="0" failures="0" skipped="0" time="0.007654">
|
||||
<testcase name="testTabIndentation" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="12" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.000857">
|
||||
<system-out>File "./test/sample/bad_indentation.php" warning, line 8 - Whitespace indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 15 - Whitespace indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 17 - Whitespace indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 18 - Whitespace indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 19 - Whitespace indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 20 - Whitespace indentation must not be used.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testSpaceIndentation" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="30" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.000929">
|
||||
<system-out>File "./test/sample/bad_indentation.php" warning, line 10 - Tab indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 10 - The indentation level must be 4 but was 1.
|
||||
File "./test/sample/bad_indentation.php" warning, line 13 - Tab indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 13 - The indentation level must be 4 but was 1.
|
||||
File "./test/sample/bad_indentation.php" warning, line 15 - The indentation level must be 8 but was 4.
|
||||
File "./test/sample/bad_indentation.php" warning, line 16 - Tab indentation must not be used.
|
||||
File "./test/sample/bad_indentation.php" warning, line 16 - The indentation level must be 8 but was 1.
|
||||
File "./test/sample/bad_indentation.php" warning, line 17 - The indentation level must be 8 but was 3.
|
||||
File "./test/sample/bad_indentation.php" warning, line 18 - The indentation level must be 8 but was 5.
|
||||
File "./test/sample/bad_indentation.php" warning, line 19 - The indentation level must be 8 but was 6.
|
||||
File "./test/sample/bad_indentation.php" warning, line 20 - The indentation level must be 4 but was 1.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testSpaceIndentationArray" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="51" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.000975">
|
||||
<system-out>File "./test/sample/bad_indentation_array.php" warning, line 10 - Tab indentation must not be used.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 10 - The indentation level must be 4 but was 1.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 13 - Tab indentation must not be used.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 13 - The indentation level must be 4 but was 1.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 16 - The indentation level must be 12 but was 8.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 24 - The indentation level must be 12 but was 8.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 29 - The indentation level must be 8 but was 12.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 15 - Undeclared or unused variable: $aVar.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 19 - Undeclared or unused variable: $bVar.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 23 - Undeclared or unused variable: $cVar.
|
||||
File "./test/sample/bad_indentation_array.php" warning, line 27 - Undeclared or unused variable: $dVar.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testGoodSpaceIndentationArray" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="72" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.001212"/>
|
||||
<testcase name="testGoodIndentationNewLine" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="93" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.000859"/>
|
||||
<testcase name="testGoodIndentationSpaces" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="116" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.000780"/>
|
||||
<testcase name="testBadSpaces" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="137" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.001120">
|
||||
<system-out>File "./test/sample/bad_spaces.php" warning, line 17 - Whitespace must follow ,.
|
||||
File "./test/sample/bad_spaces.php" warning, line 17 - Whitespace must precede {.
|
||||
File "./test/sample/bad_spaces.php" warning, line 19 - Whitespace must follow if.
|
||||
File "./test/sample/bad_spaces.php" warning, line 23 - Whitespace must precede =.
|
||||
File "./test/sample/bad_spaces.php" warning, line 23 - Whitespace must follow =.
|
||||
File "./test/sample/bad_spaces.php" warning, line 23 - Whitespace must precede +.
|
||||
File "./test/sample/bad_spaces.php" warning, line 23 - Whitespace must follow +.
|
||||
File "./test/sample/bad_spaces.php" info, line 25 - Whitespace must not precede ,.
|
||||
File "./test/sample/bad_spaces.php" info, line 26 - Whitespace must not follow !.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testBadSpaceAfterControl" file="/workspace/phpcheckstyle/test/IndentationTest.php" line="155" class="IndentationTest" classname="IndentationTest" assertions="4" time="0.000922">
|
||||
<system-out>File "./test/sample/bad_space_after_control.php" warning, line 19 - Whitespace must not follow if.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="MetricsTest" file="/workspace/phpcheckstyle/test/MetricsTest.php" tests="1" assertions="4" errors="0" failures="0" skipped="0" time="0.004147">
|
||||
<testcase name="testMetrics" file="/workspace/phpcheckstyle/test/MetricsTest.php" line="12" class="MetricsTest" classname="MetricsTest" assertions="4" time="0.004147">
|
||||
<system-out>File "./test/sample/bad_metrics.php" warning, line 21 - The function testMetrics's number of parameters (6) must not exceed 4.
|
||||
File "./test/sample/bad_metrics.php" info, line 55 - Line is too long. [233/160]
|
||||
File "./test/sample/bad_metrics.php" warning, line 21 - The Cyclomatic Complexity of function testMetrics is too high. [15/10]
|
||||
File "./test/sample/bad_metrics.php" warning, line 244 - The testMetrics function body length is too long. [223/200]
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="NamingTest" file="/workspace/phpcheckstyle/test/NamingTest.php" tests="2" assertions="8" errors="0" failures="0" skipped="0" time="0.002697">
|
||||
<testcase name="testNaming" file="/workspace/phpcheckstyle/test/NamingTest.php" line="12" class="NamingTest" classname="NamingTest" assertions="4" time="0.001426">
|
||||
<system-out>File "./test/sample/_bad_naming.php" error, line 11 - Constant _badly_named_constant name should follow the pattern /^[A-Z][A-Z0-9_]*$/.
|
||||
File "./test/sample/_bad_naming.php" error, line 13 - Constant bad_CONST name should follow the pattern /^[A-Z][A-Z0-9_]*$/.
|
||||
File "./test/sample/_bad_naming.php" warning, line 17 - Top level variable $XXX name should follow the pattern /^[a-z_][a-zA-Z0-9]*$/.
|
||||
File "./test/sample/_bad_naming.php" warning, line 20 - Variable x name length is too short.
|
||||
File "./test/sample/_bad_naming.php" error, line 28 - Class badlynamedclass name should follow the pattern /^[A-Z][a-zA-Z0-9_]*$/.
|
||||
File "./test/sample/_bad_naming.php" warning, line 32 - Member variable $YYY name should follow the pattern /^[a-z_][a-zA-Z0-9]*$/.
|
||||
File "./test/sample/_bad_naming.php" warning, line 37 - The constructor name must be __construct().
|
||||
File "./test/sample/_bad_naming.php" error, line 44 - Function Badlynamedfunction name should follow the pattern /^[a-z][a-zA-Z0-9]*$/.
|
||||
File "./test/sample/_bad_naming.php" warning, line 47 - Local variable $ZZZ name should follow the pattern /^[a-z_][a-zA-Z0-9]*$/.
|
||||
File "./test/sample/_bad_naming.php" error, line 54 - Protected function Badlynamedfunction2 name should follow the pattern /^[a-z][a-zA-Z0-9]*$/.
|
||||
File "./test/sample/_bad_naming.php" error, line 61 - Private function badlynamedfunction3 name should follow the pattern /^_[a-z][a-zA-Z0-9]*$/.
|
||||
File "./test/sample/_bad_naming.php" error, line 70 - Interface _badlynamedinterface name should follow the pattern /^[A-Z][a-zA-Z0-9_]*$/.
|
||||
File "./test/sample/_bad_naming.php" error, line 75 - File _bad_naming.php name should follow the pattern /^[a-zA-Z][a-zA-Z0-9._]*$/.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testFunctionNaming" file="/workspace/phpcheckstyle/test/NamingTest.php" line="32" class="NamingTest" classname="NamingTest" assertions="4" time="0.001271"/>
|
||||
</testsuite>
|
||||
<testsuite name="OptimizationTest" file="/workspace/phpcheckstyle/test/OptimizationTest.php" tests="1" assertions="4" errors="0" failures="0" skipped="0" time="0.000994">
|
||||
<testcase name="testTextAfterClosingTag" file="/workspace/phpcheckstyle/test/OptimizationTest.php" line="12" class="OptimizationTest" classname="OptimizationTest" assertions="4" time="0.000994">
|
||||
<system-out>File "./test/sample/bad_optimisation.php" warning, line 18 - count function must not be used inside a loop.
|
||||
File "./test/sample/bad_optimisation.php" warning, line 23 - count function must not be used inside a loop.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="OtherTest" file="/workspace/phpcheckstyle/test/OtherTest.php" tests="4" assertions="13" errors="0" failures="2" skipped="0" time="0.007329">
|
||||
<testcase name="testOther" file="/workspace/phpcheckstyle/test/OtherTest.php" line="12" class="OtherTest" classname="OtherTest" assertions="4" time="0.005251">
|
||||
<failure type="PHPUnit\Framework\ExpectationFailedException">OtherTest::testOther
|
||||
We expect 20 warnings
|
||||
Failed asserting that 19 matches expected 20.
|
||||
|
||||
/workspace/phpcheckstyle/test/OtherTest.php:24</failure>
|
||||
<system-out>File "./test/sample/bad_other.php" warning, line 17 - All arguments with default values must be at the end of the block or statement.
|
||||
File "./test/sample/bad_other.php" warning, line 21 - Errors must not be silenced when calling a function.
|
||||
File "./test/sample/bad_other.php" warning, line 23 - Prefer single-quoted strings when you don't need string interpolation.
|
||||
File "./test/sample/bad_other.php" warning, line 23 - Encapsed variables must not be used inside a string.
|
||||
File "./test/sample/bad_other.php" warning, line 23 - Encapsed variables must not be used inside a string.
|
||||
File "./test/sample/bad_other.php" warning, line 23 - Prefer single-quoted strings when you don't need string interpolation.
|
||||
File "./test/sample/bad_other.php" warning, line 37 - TODO: Show todos
|
||||
File "./test/sample/bad_other.php" warning, line 40 - Avoid empty statements (;;).
|
||||
File "./test/sample/bad_other.php" warning, line 42 - Boolean operators (&&) must be used instead of logical operators (AND).
|
||||
File "./test/sample/bad_other.php" warning, line 42 - Empty if block.
|
||||
File "./test/sample/bad_other.php" warning, line 48 - Heredoc syntax must not be used.
|
||||
File "./test/sample/bad_other.php" warning, line 52 - The statement if must contain its code within a {} block.
|
||||
File "./test/sample/bad_other.php" warning, line 54 - Consider using a strict comparison operator instead of ==.
|
||||
File "./test/sample/bad_other.php" warning, line 54 - The statement while must contain its code within a {} block.
|
||||
File "./test/sample/bad_other.php" warning, line 66 - The switch statement must have a default case.
|
||||
File "./test/sample/bad_other.php" warning, line 79 - The default case of a switch statement must be located after all other cases.
|
||||
File "./test/sample/bad_other.php" warning, line 93 - Unary operators (++ or --) must not be used inside a control statement
|
||||
File "./test/sample/bad_other.php" warning, line 95 - Assigments (=) must not be used inside a control statement.
|
||||
File "./test/sample/bad_other.php" warning, line 106 - File ./test/sample/bad_other.php must not have multiple class declarations.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testException" file="/workspace/phpcheckstyle/test/OtherTest.php" line="31" class="OtherTest" classname="OtherTest" assertions="1" time="0.000751">
|
||||
<failure type="PHPUnit\Framework\ExpectationFailedException">OtherTest::testException
|
||||
We expect 1 error
|
||||
Failed asserting that 0 matches expected 1.
|
||||
|
||||
/workspace/phpcheckstyle/test/OtherTest.php:40</failure>
|
||||
</testcase>
|
||||
<testcase name="testEmpty" file="/workspace/phpcheckstyle/test/OtherTest.php" line="50" class="OtherTest" classname="OtherTest" assertions="4" time="0.000427">
|
||||
<system-out>File "./test/sample/empty.php" warning, line 1 - The file ./test/sample/empty.php is empty.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testSwitchCaseNeedBreak" file="/workspace/phpcheckstyle/test/OtherTest.php" line="69" class="OtherTest" classname="OtherTest" assertions="4" time="0.000901">
|
||||
<system-out>File "./test/sample/switch_multi_case.php" warning, line 10 - The case statement must contain a break.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="PHPTagsTest" file="/workspace/phpcheckstyle/test/PHPTagsTest.php" tests="2" assertions="8" errors="0" failures="0" skipped="0" time="0.001272">
|
||||
<testcase name="testTextAfterClosingTag" file="/workspace/phpcheckstyle/test/PHPTagsTest.php" line="12" class="PHPTagsTest" classname="PHPTagsTest" assertions="4" time="0.000641">
|
||||
<system-out>File "./test/sample/bad_php_tags_text_after_end.php" warning, line 9 - A PHP close tag must not be included at the end of the file.
|
||||
</system-out>
|
||||
</testcase>
|
||||
<testcase name="testClosingTagNotNeeded" file="/workspace/phpcheckstyle/test/PHPTagsTest.php" line="30" class="PHPTagsTest" classname="PHPTagsTest" assertions="4" time="0.000631">
|
||||
<system-out>File "./test/sample/bad_php_tags_end_not_needed.php" warning, line 1 - PHP tag should be at the beginning of the line.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="ProhibitedTest" file="/workspace/phpcheckstyle/test/ProhibitedTest.php" tests="1" assertions="4" errors="0" failures="0" skipped="0" time="0.000938">
|
||||
<testcase name="testProhibited" file="/workspace/phpcheckstyle/test/ProhibitedTest.php" line="13" class="ProhibitedTest" classname="ProhibitedTest" assertions="4" time="0.000938">
|
||||
<system-out>File "./test/sample/bad_prohibited.php" warning, line 18 - The function exec must not be called.
|
||||
File "./test/sample/bad_prohibited.php" warning, line 20 - Token T_PRINT must not be used.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="StrictCompareTest" file="/workspace/phpcheckstyle/test/StrictCompareTest.php" tests="1" assertions="4" errors="0" failures="0" skipped="0" time="0.001578">
|
||||
<testcase name="testStrictCompare" file="/workspace/phpcheckstyle/test/StrictCompareTest.php" line="12" class="StrictCompareTest" classname="StrictCompareTest" assertions="4" time="0.001578">
|
||||
<system-out>File "./test/sample/bad_strictcompare.php" warning, line 14 - Consider using a strict comparison operator instead of ==.
|
||||
File "./test/sample/bad_strictcompare.php" warning, line 19 - Consider using a strict comparison operator instead of !=.
|
||||
File "./test/sample/bad_strictcompare.php" warning, line 24 - Consider using a strict comparison operator instead of ==.
|
||||
File "./test/sample/bad_strictcompare.php" warning, line 29 - Consider using a strict comparison operator instead of ==.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
<testsuite name="UnusedTest" file="/workspace/phpcheckstyle/test/UnusedTest.php" tests="2" assertions="8" errors="0" failures="0" skipped="0" time="0.001835">
|
||||
<testcase name="testGoodUnused" file="/workspace/phpcheckstyle/test/UnusedTest.php" line="13" class="UnusedTest" classname="UnusedTest" assertions="4" time="0.000940"/>
|
||||
<testcase name="testBadUnused" file="/workspace/phpcheckstyle/test/UnusedTest.php" line="32" class="UnusedTest" classname="UnusedTest" assertions="4" time="0.000895">
|
||||
<system-out>File "./test/sample/bad_unused.php" warning, line 23 - Function _testUnused has unused code after RETURN.
|
||||
File "./test/sample/bad_unused.php" warning, line 27 - The function _testUnused parameter $b is not used.
|
||||
File "./test/sample/bad_unused.php" warning, line 18 - Unused private function: _testUnused.
|
||||
File "./test/sample/bad_unused.php" warning, line 20 - Undeclared or unused variable: $c.
|
||||
</system-out>
|
||||
</testcase>
|
||||
</testsuite>
|
||||
</testsuite>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
@@ -99,4 +99,188 @@ describe('phpunit-junit tests', () => {
|
||||
expect(test.error!.details).toContain('Failed asserting that string matches format description')
|
||||
}
|
||||
})
|
||||
|
||||
it('parses junit-basic.xml with nested suites and failure', async () => {
|
||||
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'phpunit', 'junit-basic.xml')
|
||||
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
|
||||
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
|
||||
|
||||
const opts: ParseOptions = {
|
||||
parseErrors: true,
|
||||
trackedFiles: []
|
||||
}
|
||||
|
||||
const parser = new PhpunitJunitParser(opts)
|
||||
const result = await parser.parse(filePath, fileContent)
|
||||
|
||||
// Verify test counts
|
||||
expect(result.tests).toBe(9)
|
||||
expect(result.passed).toBe(8)
|
||||
expect(result.failed).toBe(1)
|
||||
expect(result.result).toBe('failed')
|
||||
|
||||
// Verify suites - should have Tests.Registration, Tests.Authentication.Login, and Tests.Authentication
|
||||
expect(result.suites.length).toBe(3)
|
||||
|
||||
const suiteNames = result.suites.map(s => s.name)
|
||||
expect(suiteNames).toContain('Tests.Registration')
|
||||
expect(suiteNames).toContain('Tests.Authentication.Login')
|
||||
expect(suiteNames).toContain('Tests.Authentication')
|
||||
|
||||
// Verify the Registration suite has 3 tests
|
||||
const registrationSuite = result.suites.find(s => s.name === 'Tests.Registration')
|
||||
expect(registrationSuite).toBeDefined()
|
||||
const registrationTests = registrationSuite!.groups.flatMap(g => g.tests)
|
||||
expect(registrationTests.length).toBe(3)
|
||||
|
||||
// Verify the Authentication suite has 3 direct tests (not counting nested suite)
|
||||
const authSuite = result.suites.find(s => s.name === 'Tests.Authentication')
|
||||
expect(authSuite).toBeDefined()
|
||||
const authTests = authSuite!.groups.flatMap(g => g.tests)
|
||||
expect(authTests.length).toBe(3)
|
||||
|
||||
// Verify the Login nested suite has 3 tests
|
||||
const loginSuite = result.suites.find(s => s.name === 'Tests.Authentication.Login')
|
||||
expect(loginSuite).toBeDefined()
|
||||
const loginTests = loginSuite!.groups.flatMap(g => g.tests)
|
||||
expect(loginTests.length).toBe(3)
|
||||
|
||||
// Verify failure is captured
|
||||
const failedTest = authTests.find(t => t.name === 'testCase9')
|
||||
expect(failedTest).toBeDefined()
|
||||
expect(failedTest!.result).toBe('failed')
|
||||
expect(failedTest!.error).toBeDefined()
|
||||
expect(failedTest!.error!.message).toBe('AssertionError: Assertion error message')
|
||||
})
|
||||
|
||||
it('parses phpcheckstyle-phpunit.xml with deeply nested suites', async () => {
|
||||
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'phpunit', 'phpcheckstyle-phpunit.xml')
|
||||
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
|
||||
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
|
||||
|
||||
const opts: ParseOptions = {
|
||||
parseErrors: true,
|
||||
trackedFiles: []
|
||||
}
|
||||
|
||||
const parser = new PhpunitJunitParser(opts)
|
||||
const result = await parser.parse(filePath, fileContent)
|
||||
|
||||
// Verify test counts from the XML: tests="30", failures="2"
|
||||
expect(result.tests).toBe(30)
|
||||
expect(result.passed).toBe(28)
|
||||
expect(result.failed).toBe(2)
|
||||
expect(result.result).toBe('failed')
|
||||
|
||||
// Verify the number of test suites extracted (leaf suites with testcases)
|
||||
// CommentsTest, DeprecationTest, GoodTest, IndentationTest, MetricsTest,
|
||||
// NamingTest, OptimizationTest, OtherTest, PHPTagsTest, ProhibitedTest,
|
||||
// StrictCompareTest, UnusedTest = 12 suites
|
||||
expect(result.suites.length).toBe(12)
|
||||
|
||||
const suiteNames = result.suites.map(s => s.name)
|
||||
expect(suiteNames).toContain('CommentsTest')
|
||||
expect(suiteNames).toContain('GoodTest')
|
||||
expect(suiteNames).toContain('IndentationTest')
|
||||
expect(suiteNames).toContain('OtherTest')
|
||||
})
|
||||
|
||||
it('extracts test data from phpcheckstyle-phpunit.xml', async () => {
|
||||
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'phpunit', 'phpcheckstyle-phpunit.xml')
|
||||
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
|
||||
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
|
||||
|
||||
const opts: ParseOptions = {
|
||||
parseErrors: true,
|
||||
trackedFiles: []
|
||||
}
|
||||
|
||||
const parser = new PhpunitJunitParser(opts)
|
||||
const result = await parser.parse(filePath, fileContent)
|
||||
|
||||
// Find the CommentsTest suite
|
||||
const commentsSuite = result.suites.find(s => s.name === 'CommentsTest')
|
||||
expect(commentsSuite).toBeDefined()
|
||||
|
||||
// Verify tests are extracted correctly
|
||||
const tests = commentsSuite!.groups.flatMap(g => g.tests)
|
||||
expect(tests.length).toBe(3)
|
||||
|
||||
const testGoodDoc = tests.find(t => t.name === 'testGoodDoc')
|
||||
expect(testGoodDoc).toBeDefined()
|
||||
expect(testGoodDoc!.result).toBe('success')
|
||||
})
|
||||
|
||||
it('captures failure details from phpcheckstyle-phpunit.xml', async () => {
|
||||
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'phpunit', 'phpcheckstyle-phpunit.xml')
|
||||
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
|
||||
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
|
||||
|
||||
const opts: ParseOptions = {
|
||||
parseErrors: true,
|
||||
trackedFiles: []
|
||||
}
|
||||
|
||||
const parser = new PhpunitJunitParser(opts)
|
||||
const result = await parser.parse(filePath, fileContent)
|
||||
|
||||
// Find the OtherTest suite which has failures
|
||||
const otherSuite = result.suites.find(s => s.name === 'OtherTest')
|
||||
expect(otherSuite).toBeDefined()
|
||||
|
||||
const failedTests = otherSuite!.groups.flatMap(g => g.tests).filter(t => t.result === 'failed')
|
||||
expect(failedTests.length).toBe(2)
|
||||
|
||||
// Verify failure details
|
||||
const testOther = failedTests.find(t => t.name === 'testOther')
|
||||
expect(testOther).toBeDefined()
|
||||
expect(testOther!.error).toBeDefined()
|
||||
expect(testOther!.error!.details).toContain('We expect 20 warnings')
|
||||
expect(testOther!.error!.details).toContain('Failed asserting that 19 matches expected 20')
|
||||
|
||||
const testException = failedTests.find(t => t.name === 'testException')
|
||||
expect(testException).toBeDefined()
|
||||
expect(testException!.error).toBeDefined()
|
||||
expect(testException!.error!.details).toContain('We expect 1 error')
|
||||
})
|
||||
|
||||
it('report from junit-basic.xml matches snapshot', async () => {
|
||||
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'phpunit', 'junit-basic.xml')
|
||||
const outputPath = path.join(__dirname, '__outputs__', 'phpunit-junit-basic-results.md')
|
||||
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
|
||||
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
|
||||
|
||||
const opts: ParseOptions = {
|
||||
parseErrors: true,
|
||||
trackedFiles: []
|
||||
}
|
||||
|
||||
const parser = new PhpunitJunitParser(opts)
|
||||
const result = await parser.parse(filePath, fileContent)
|
||||
expect(result).toMatchSnapshot()
|
||||
|
||||
const report = getReport([result])
|
||||
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
|
||||
fs.writeFileSync(outputPath, report)
|
||||
})
|
||||
|
||||
it('report from phpcheckstyle-phpunit.xml matches snapshot', async () => {
|
||||
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'phpunit', 'phpcheckstyle-phpunit.xml')
|
||||
const outputPath = path.join(__dirname, '__outputs__', 'phpunit-phpcheckstyle-results.md')
|
||||
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
|
||||
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
|
||||
|
||||
const opts: ParseOptions = {
|
||||
parseErrors: true,
|
||||
trackedFiles: []
|
||||
}
|
||||
|
||||
const parser = new PhpunitJunitParser(opts)
|
||||
const result = await parser.parse(filePath, fileContent)
|
||||
expect(result).toMatchSnapshot()
|
||||
|
||||
const report = getReport([result])
|
||||
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
|
||||
fs.writeFileSync(outputPath, report)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user