Compare commits

...

40 Commits

Author SHA1 Message Date
Jozef Izso
eaa763f6ff Merge pull request #370 from dorny/release/v1.8.0 2024-01-28 18:07:10 +01:00
Jozef Izso
214929bdc3 test-reporter release v1.8.0 2024-01-28 18:00:18 +01:00
Jozef Izso
5c9213582c Update all packages 2024-01-28 18:00:18 +01:00
Jozef Izso
5edc9e96e2 Merge pull request #369 from dorny/release/v1.7.0 2024-01-28 18:00:03 +01:00
Julien Catania
86a2010147 Merge pull request #144 from ldaneliukas/check_status
Update check title and remove icon
2024-01-12 10:01:59 +01:00
Julien Catania
aa82f530a5 update dist/index.js 2024-01-12 10:00:41 +01:00
Julien Catania
24b216b6b8 Merge remote-tracking branch 'origin/check_status' into check_status
# Conflicts:
#	dist/index.js
#	dist/index.js.map
2024-01-12 09:56:03 +01:00
Linas Daneliukas
996dd3b9b1 shortSummary const 2024-01-12 09:53:39 +01:00
Linas Daneliukas
4bb68fffaa Update check title and remove icon 2024-01-12 09:53:33 +01:00
Julien Catania
08c81a1fd6 Merge pull request #341 from dorny/feat/issue-tmpl
Adding feature and bug template
2024-01-02 21:13:49 +01:00
Jozef Izso
d9ef69ec3d Merge pull request #236 from wingyplus/fix-iss-235 2023-12-18 14:02:55 +01:00
Jozef Izso
7aa575a237 Add tests for results with React component names 2023-12-18 13:59:17 +01:00
Thanabodee Charoenpiriyakij
c1926959e2 Escape <> characters in suite name
Fixes: #235
2023-12-18 13:59:03 +01:00
Jozef Izso
9e2e57e817 Remove jozefizso and DominikPalo from assignees to keep notifications low 2023-12-18 12:00:55 +01:00
Julien Catania
ddfa15d232 adding jozefizso,DominikPalo,dharmendrasha as assignees 2023-12-18 08:47:57 +01:00
Julien Catania
b1ecc16057 adding feature and bug template 2023-12-17 21:46:58 +01:00
Jozef Izso
57cb2734c7 Merge pull request #333 from jozefizso/dev/update_dependencies 2023-12-15 01:47:09 -08:00
Jozef Izso
feda17a8d8 Compile distribution code 2023-12-13 22:41:59 +01:00
Jozef Izso
dd41adfb19 Update all development packages
Updates snapshot files for the jest 29
2023-12-13 15:44:36 +01:00
Jozef Izso
35f0c29818 Update all production packages 2023-12-13 15:40:54 +01:00
Jozef Izso
71f6751394 Update GitHub Actions packages 2023-12-13 15:17:18 +01:00
Julien Catania
84909f338e Merge pull request #332 from jozefizso/dev/node18_runtime
Use NodeJS 18 LTS as default runtime
2023-12-13 11:53:56 +01:00
Jozef Izso
e091fade5c Use NodeJS 18 LTS as default runtime 2023-12-13 10:47:42 +01:00
Michal Dorner
601ab2b789 Merge pull request #331 from dorny/fix-build
Fix build error
2023-12-09 21:22:00 +01:00
Michal Dorner
62b89ea98d Apply code style fix 2023-12-09 21:17:07 +01:00
Michal Dorner
be0e2e90e1 Merge pull request #315 from dorny/feature/node20
Update to Node20
2023-12-09 21:08:05 +01:00
Michal Dorner
ed05640994 Merge pull request #317 from jozefizso/feature/swift-xunit
Add `SwiftXunitParser` class based on `JavaJunitParser` for `swift-xunit` reporter
2023-12-09 21:05:32 +01:00
Jozef Izso
1c044b4aef Add SwiftXunitParser class based on JavaJunitParser for swift-xunit reporter 2023-11-08 16:27:24 +01:00
Julien Catania
6d7a9adaba Update action.yml 2023-11-07 09:07:08 +01:00
Julien Catania
6a1c2425d8 Merge pull request #304 from dorny/dependabot/npm_and_yarn/babel/traverse-7.23.2
Bump @babel/traverse from 7.22.20 to 7.23.2
2023-11-02 14:08:04 +01:00
dependabot[bot]
08340ff7ea Bump @babel/traverse from 7.22.20 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.20 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 07:01:03 +00:00
Julien Catania
87b594606a Merge pull request #303 from dorny/dependabot/npm_and_yarn/reports/jest/babel/traverse-7.23.2
Bump @babel/traverse from 7.12.1 to 7.23.2 in /reports/jest
2023-10-17 09:00:32 +02:00
dependabot[bot]
817da85e61 Bump @babel/traverse from 7.12.1 to 7.23.2 in /reports/jest
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.12.1 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 21:28:33 +00:00
Julien Catania
214173a332 Merge pull request #297 from dorny/release/v1.7.0
CHANGELOG.md
2023-10-09 19:44:37 +02:00
Julien Catania
62af3652ec CHANGELOG.md 2023-10-09 19:43:53 +02:00
Julien Catania
ededcdb047 Merge pull request #296 from dorny/release/v1.7.0
Release/v1.7.0
2023-10-09 19:40:58 +02:00
Julien Catania
9b29e4187a 1.7.0 2023-10-09 19:39:59 +02:00
Julien Catania
4b7b789017 add version npm script 2023-10-09 19:37:56 +02:00
Linas Daneliukas
74d8fd673e shortSummary const 2021-11-30 10:56:33 +02:00
Linas Daneliukas
d1e7a9281a Update check title and remove icon 2021-10-11 15:35:03 +03:00
30 changed files with 33818 additions and 10476 deletions

26
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,26 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: 'bug'
assignees: 'dorny,dharmendrasha,j-catania'
---
## Describe the bug
A clear and concise description of what the bug is.
## To Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
## Expected behavior
A clear and concise description of what you expected to happen.
## Screenshots
If applicable, add screenshots to help explain your problem.
## Additional context
Add any other context about the problem here.

13
.github/ISSUE_TEMPLATE/feature.md vendored Normal file
View File

@@ -0,0 +1,13 @@
---
name: Feature Request
about: Suggest a feature
title: ''
labels: 'enhancement'
assignees: 'dorny,dharmendrasha,j-catania'
---
## Describe
## Proposed solution
## Alternatives considered

View File

@@ -23,10 +23,10 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set Node.js 16.x - name: Set Node.js
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: 16.x node-version-file: '.nvmrc'
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm ci

View File

@@ -14,7 +14,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: node --version - uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- run: npm ci - run: npm ci
- run: npm run build - run: npm run build
- run: npm run format-check - run: npm run format-check

2
.nvmrc
View File

@@ -1 +1 @@
v18.7.0 v18.19.0

View File

@@ -1,5 +1,42 @@
# Changelog # Changelog
## 1.8.0
* Add `SwiftXunitParser` class based on `JavaJunitParser` for `swift-xunit` reporter https://github.com/dorny/test-reporter/pull/317
* Use NodeJS 18 LTS as default runtime https://github.com/dorny/test-reporter/pull/332
* Escape `<>` characters in suite name https://github.com/dorny/test-reporter/pull/236
* Update actions runtime to Node20 https://github.com/dorny/test-reporter/pull/315
* Update check title and remove icon https://github.com/dorny/test-reporter/pull/144
## 1.7.0
* Fix #199: Use ✅ instead of ✔️ for better cross platform look by @petrdvorak in https://github.com/dorny/test-reporter/pull/200
* Verify content of dist/ folder matches build output by @dorny in https://github.com/dorny/test-reporter/pull/207
* Gracefully handle empty nested testsuite elements for JUnit. by @rvdlaarschot in https://github.com/dorny/test-reporter/pull/193
* Gracefully handle empty failure tags by @haudren-woven in https://github.com/dorny/test-reporter/pull/213
* Fix #208 - java-junit: show annotations on PR changed files by @atsu85 in https://github.com/dorny/test-reporter/pull/209
* Only report failure if fail-on-error is set by @trond-snekvik in https://github.com/dorny/test-reporter/pull/214
* Improve clarity on configuring for forkable repos by @abelbraaksma in https://github.com/dorny/test-reporter/pull/211
* Suppress "Processing test results from" log by @vasanthdharmaraj in https://github.com/dorny/test-reporter/pull/179
* Skip listing of files if error parsing is disabled by @dorny in https://github.com/dorny/test-reporter/pull/216
* Correct typo in docs by @tangowithfoxtrot in https://github.com/dorny/test-reporter/pull/254
* update dependencies by @j-catania in https://github.com/dorny/test-reporter/pull/269
* Add permissions to example yml files by @TurnrDev in https://github.com/dorny/test-reporter/pull/263
* add feature fail-on-empty by @gdams in https://github.com/dorny/test-reporter/pull/243
* Add dependabot configuration by @yeikel in https://github.com/dorny/test-reporter/pull/228
* Bump ws from 7.3.1 to 7.5.9 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/265
* Bump actions/checkout from 2 to 4 by @dependabot in https://github.com/dorny/test-reporter/pull/279
* Add new output for url url html by @luisito666 in https://github.com/dorny/test-reporter/pull/242
* Update README.md by @IanMoroney in https://github.com/dorny/test-reporter/pull/158
* Update jest-Junit part of Readme by @ryancasburn-KAI in https://github.com/dorny/test-reporter/pull/176
* fix: default-valued fields are not mandatory by @TomerFi in https://github.com/dorny/test-reporter/pull/172
* Bump ansi-regex from 4.1.0 to 4.1.1 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/278
* Bump decode-uri-component from 0.2.0 to 0.2.2 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/276
* Bump minimist from 1.2.5 to 1.2.8 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/275
* Bump qs from 6.5.2 to 6.5.3 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/272
* Bump json5 from 2.1.3 to 2.2.3 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/271
* Bump ansi-regex from 3.0.0 to 3.0.1 in /reports/mocha by @dependabot in https://github.com/dorny/test-reporter/pull/270
* declare 'url' and 'url_html' as action outputs by @micha-one in https://github.com/dorny/test-reporter/pull/287
* Avoid split on undefined by @cazou in https://github.com/dorny/test-reporter/pull/258
## v1.6.0 ## v1.6.0
- [Update to node16 + recent versions of core and exec packages](https://github.com/dorny/test-reporter/pull/203) - [Update to node16 + recent versions of core and exec packages](https://github.com/dorny/test-reporter/pull/203)
- [Update all dependencies to latest versions](https://github.com/dorny/test-reporter/pull/186) - [Update all dependencies to latest versions](https://github.com/dorny/test-reporter/pull/186)

View File

@@ -18,6 +18,7 @@ This [Github Action](https://github.com/features/actions) displays test results
- Flutter / [test](https://pub.dev/packages/test) - Flutter / [test](https://pub.dev/packages/test)
- Java / [JUnit](https://junit.org/) - Java / [JUnit](https://junit.org/)
- JavaScript / [JEST](https://jestjs.io/) / [Mocha](https://mochajs.org/) - JavaScript / [JEST](https://jestjs.io/) / [Mocha](https://mochajs.org/)
- Swift / xUnit
For more information see [Supported formats](#supported-formats) section. For more information see [Supported formats](#supported-formats) section.
@@ -317,6 +318,12 @@ Mocha, unfortunately, doesn't have the option to store `json` output directly to
There is a work in progress to fix it: [mocha#4607](https://github.com/mochajs/mocha/pull/4607) There is a work in progress to fix it: [mocha#4607](https://github.com/mochajs/mocha/pull/4607)
</details> </details>
<details>
<summary>swift-xunit (Experimental)</summary>
Support for Swift test results in xUnit format is experimental - should work but it was not extensively tested.
</details>
## GitHub limitations ## GitHub limitations
Unfortunately, there are some known issues and limitations caused by GitHub API: Unfortunately, there are some known issues and limitations caused by GitHub API:

View File

@@ -0,0 +1,10 @@
![Tests passed successfully](https://img.shields.io/badge/tests-1%20passed-success)
## ✅ <a id="user-content-r0" href="#r0">fixtures/external/jest/jest-react-component-test-results.xml</a>
**1** tests were completed in **1000ms** with **1** passed, **0** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|[\<Component /\>](#r0s0)|1✅|||798ms|
### ✅ <a id="user-content-r0s0" href="#r0s0">\<Component /\></a>
```
✅ <Component /> should render properly
```

View File

@@ -0,0 +1,13 @@
![Tests failed](https://img.shields.io/badge/tests-2%20passed%2C%201%20failed-critical)
## ❌ <a id="user-content-r0" href="#r0">fixtures/swift-xunit.xml</a>
**3** tests were completed in **220ms** with **2** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|[TestResults](#r0s0)|2✅|1❌||220ms|
### ❌ <a id="user-content-r0s0" href="#r0s0">TestResults</a>
```
AcmeLibTests.AcmeLibTests
✅ test_always_pass
✅ test_always_skip
❌ test_always_fail
```

View File

@@ -3,12 +3,12 @@
exports[`dart-json tests matches report snapshot 1`] = ` exports[`dart-json tests matches report snapshot 1`] = `
TestRunResult { TestRunResult {
"path": "fixtures/dart-json.json", "path": "fixtures/dart-json.json",
"suites": Array [ "suites": [
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "Test 1", "name": "Test 1",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "Passing test", "name": "Passing test",
@@ -19,11 +19,11 @@ TestRunResult {
}, },
TestGroupResult { TestGroupResult {
"name": "Test 1 Test 1.1", "name": "Test 1 Test 1.1",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": Object { "error": {
"details": "package:test_api expect "details": "package:test_api expect
test\\\\main_test.dart 13:9 main.<fn>.<fn>.<fn> test\\main_test.dart 13:9 main.<fn>.<fn>.<fn>
", ",
"line": 13, "line": 13,
"message": "Expected: <2> "message": "Expected: <2>
@@ -36,9 +36,9 @@ test\\\\main_test.dart 13:9 main.<fn>.<fn>.<fn>
"time": 20, "time": 20,
}, },
TestCaseResult { TestCaseResult {
"error": Object { "error": {
"details": "package:darttest/main.dart 2:3 throwError "details": "package:darttest/main.dart 2:3 throwError
test\\\\main_test.dart 17:9 main.<fn>.<fn>.<fn> test\\main_test.dart 17:9 main.<fn>.<fn>.<fn>
", ",
"line": 17, "line": 17,
"message": "Exception: Some error", "message": "Exception: Some error",
@@ -52,10 +52,10 @@ test\\\\main_test.dart 17:9 main.<fn>.<fn>.<fn>
}, },
TestGroupResult { TestGroupResult {
"name": "Test 2", "name": "Test 2",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": Object { "error": {
"details": "test\\\\main_test.dart 24:7 main.<fn>.<fn> "details": "test\\main_test.dart 24:7 main.<fn>.<fn>
", ",
"line": 24, "line": 24,
"message": "Exception: Some error", "message": "Exception: Some error",
@@ -72,12 +72,12 @@ test\\\\main_test.dart 17:9 main.<fn>.<fn>.<fn>
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": null, "name": null,
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": Object { "error": {
"details": "dart:isolate _RawReceivePortImpl._handleMessage "details": "dart:isolate _RawReceivePortImpl._handleMessage
", ",
"line": 5, "line": 5,
@@ -108,12 +108,12 @@ test\\\\main_test.dart 17:9 main.<fn>.<fn>.<fn>
exports[`dart-json tests report from rrousselGit/provider test results matches snapshot 1`] = ` exports[`dart-json tests report from rrousselGit/provider test results matches snapshot 1`] = `
TestRunResult { TestRunResult {
"path": "fixtures/external/flutter/provider-test-results.json", "path": "fixtures/external/flutter/provider-test-results.json",
"suites": Array [ "suites": [
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "valueListenableProvider", "name": "valueListenableProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "rebuilds when value change", "name": "rebuilds when value change",
@@ -139,7 +139,7 @@ TestRunResult {
"time": 22, "time": 22,
}, },
TestCaseResult { TestCaseResult {
"error": Object { "error": {
"details": "══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════ "details": "══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test: The following TestFailure object was thrown running a test:
Expected: <2> Expected: <2>
@@ -178,10 +178,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "ListenableProvider", "name": "ListenableProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "works with MultiProvider", "name": "works with MultiProvider",
@@ -252,7 +252,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "ListenableProvider value constructor", "name": "ListenableProvider value constructor",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "pass down key", "name": "pass down key",
@@ -269,7 +269,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "ListenableProvider stateful constructor", "name": "ListenableProvider stateful constructor",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "called with context", "name": "called with context",
@@ -295,10 +295,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "consumer", "name": "consumer",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "obtains value from Provider<T>", "name": "obtains value from Provider<T>",
@@ -321,7 +321,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "consumer2", "name": "consumer2",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "obtains value from Provider<T>", "name": "obtains value from Provider<T>",
@@ -344,7 +344,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "consumer3", "name": "consumer3",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "obtains value from Provider<T>", "name": "obtains value from Provider<T>",
@@ -367,7 +367,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "consumer4", "name": "consumer4",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "obtains value from Provider<T>", "name": "obtains value from Provider<T>",
@@ -390,7 +390,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "consumer5", "name": "consumer5",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "obtains value from Provider<T>", "name": "obtains value from Provider<T>",
@@ -413,7 +413,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "consumer6", "name": "consumer6",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "obtains value from Provider<T>", "name": "obtains value from Provider<T>",
@@ -439,10 +439,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "Use builder property, not child", "name": "Use builder property, not child",
@@ -453,7 +453,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "ChangeNotifierProvider", "name": "ChangeNotifierProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "value", "name": "value",
@@ -515,10 +515,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "ChangeNotifierProvider", "name": "ChangeNotifierProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "default", "name": "default",
@@ -535,7 +535,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "ListenableProvider", "name": "ListenableProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "default", "name": "default",
@@ -552,7 +552,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "Provider", "name": "Provider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "default", "name": "default",
@@ -569,7 +569,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "ProxyProvider", "name": "ProxyProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "0", "name": "0",
@@ -616,7 +616,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "MultiProvider", "name": "MultiProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "with 1 ChangeNotifierProvider default", "name": "with 1 ChangeNotifierProvider default",
@@ -690,10 +690,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "MultiProvider", "name": "MultiProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "throw if providers is null", "name": "throw if providers is null",
@@ -719,10 +719,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "works with MultiProvider", "name": "works with MultiProvider",
@@ -763,7 +763,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "StreamProvider()", "name": "StreamProvider()",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "create and dispose stream with builder", "name": "create and dispose stream with builder",
@@ -783,10 +783,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "watch in layoutbuilder", "name": "watch in layoutbuilder",
@@ -827,7 +827,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "BuildContext", "name": "BuildContext",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "internal selected value is updated", "name": "internal selected value is updated",
@@ -985,10 +985,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "ReassembleHandler", "name": "ReassembleHandler",
@@ -1014,10 +1014,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "works with MultiProvider", "name": "works with MultiProvider",
@@ -1076,7 +1076,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "FutureProvider()", "name": "FutureProvider()",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "crashes if builder is null", "name": "crashes if builder is null",
@@ -1090,10 +1090,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "works with MultiProvider", "name": "works with MultiProvider",
@@ -1104,7 +1104,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "Provider.of", "name": "Provider.of",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "throws if T is dynamic", "name": "throws if T is dynamic",
@@ -1139,7 +1139,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "Provider", "name": "Provider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "throws if the provided value is a Listenable/Stream", "name": "throws if the provided value is a Listenable/Stream",
@@ -1177,10 +1177,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "regression test #377", "name": "regression test #377",
@@ -1371,7 +1371,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "diagnostics", "name": "diagnostics",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "InheritedProvider.value", "name": "InheritedProvider.value",
@@ -1406,7 +1406,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "InheritedProvider.value()", "name": "InheritedProvider.value()",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "markNeedsNotifyDependents during startListening is noop", "name": "markNeedsNotifyDependents during startListening is noop",
@@ -1459,7 +1459,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "InheritedProvider()", "name": "InheritedProvider()",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "hasValue", "name": "hasValue",
@@ -1614,7 +1614,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "DeferredInheritedProvider.value()", "name": "DeferredInheritedProvider.value()",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "hasValue", "name": "hasValue",
@@ -1667,7 +1667,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "DeferredInheritedProvider()", "name": "DeferredInheritedProvider()",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "create can't call inherited widgets", "name": "create can't call inherited widgets",
@@ -1699,10 +1699,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "ListenableProxyProvider", "name": "ListenableProxyProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "throws if update is missing", "name": "throws if update is missing",
@@ -1743,7 +1743,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "ListenableProxyProvider variants", "name": "ListenableProxyProvider variants",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "ListenableProxyProvider", "name": "ListenableProxyProvider",
@@ -1787,10 +1787,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "asserts that builder/selector are not null", "name": "asserts that builder/selector are not null",
@@ -1900,10 +1900,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "", "name": "",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "asserts", "name": "asserts",
@@ -1935,10 +1935,10 @@ Unexpected number of calls
"totalTime": undefined, "totalTime": undefined,
}, },
TestSuiteResult { TestSuiteResult {
"groups": Array [ "groups": [
TestGroupResult { TestGroupResult {
"name": "ProxyProvider", "name": "ProxyProvider",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "throws if the provided value is a Listenable/Stream", "name": "throws if the provided value is a Listenable/Stream",
@@ -2009,7 +2009,7 @@ Unexpected number of calls
}, },
TestGroupResult { TestGroupResult {
"name": "ProxyProvider variants", "name": "ProxyProvider variants",
"tests": Array [ "tests": [
TestCaseResult { TestCaseResult {
"error": undefined, "error": undefined,
"name": "ProxyProvider2", "name": "ProxyProvider2",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`swift-xunit tests report from swift test results matches snapshot 1`] = `
TestRunResult {
"path": "fixtures/swift-xunit.xml",
"suites": [
TestSuiteResult {
"groups": [
TestGroupResult {
"name": "AcmeLibTests.AcmeLibTests",
"tests": [
TestCaseResult {
"error": undefined,
"name": "test_always_pass",
"result": "success",
"time": 36.386333,
},
TestCaseResult {
"error": undefined,
"name": "test_always_skip",
"result": "success",
"time": 92.039167,
},
TestCaseResult {
"error": {
"details": undefined,
"line": undefined,
"message": undefined,
"path": undefined,
},
"name": "test_always_fail",
"result": "failed",
"time": 92.05175,
},
],
},
],
"name": "TestResults",
"totalTime": 220.47725000000003,
},
],
"totalTime": undefined,
}
`;

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="React components test" tests="1" failures="0" errors="0" time="1.0">
<testsuite name="&lt;Component /&gt;" errors="0" failures="0" skipped="0" timestamp="2021-01-24T19:21:45" time="0.798" tests="1">
<testcase classname="" name="&lt;Component /&gt; should render properly" time="0.704">
</testcase>
</testsuite>
</testsuites>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite name="TestResults" errors="0" tests="3" failures="1" time="0.22047725">
<testcase classname="AcmeLibTests.AcmeLibTests" name="test_always_pass" time="0.036386333">
</testcase>
<testcase classname="AcmeLibTests.AcmeLibTests" name="test_always_skip" time="0.092039167">
</testcase>
<testcase classname="AcmeLibTests.AcmeLibTests" name="test_always_fail" time="0.09205175">
<failure message="failed"></failure>
</testcase>
</testsuite>
</testsuites>

View File

@@ -82,4 +82,27 @@ describe('jest-junit tests', () => {
fs.mkdirSync(path.dirname(outputPath), {recursive: true}) fs.mkdirSync(path.dirname(outputPath), {recursive: true})
fs.writeFileSync(outputPath, report) fs.writeFileSync(outputPath, report)
}) })
it('report from #235 testing react components named <ComponentName />', async () => {
const fixturePath = path.join(__dirname, 'fixtures', 'external', 'jest', 'jest-react-component-test-results.xml')
const trackedFilesPath = path.join(__dirname, 'fixtures', 'external', 'jest', 'files.txt')
const outputPath = path.join(__dirname, '__outputs__', 'jest-react-component-test-results.md')
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
const trackedFiles = fs.readFileSync(trackedFilesPath, {encoding: 'utf8'}).split(/\n\r?/g)
const opts: ParseOptions = {
parseErrors: true,
trackedFiles
//workDir: '/home/dorny/dorny/jest/'
}
const parser = new JestJunitParser(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)
})
}) })

View File

@@ -0,0 +1,30 @@
import * as fs from 'fs'
import * as path from 'path'
import {SwiftXunitParser} from '../src/parsers/swift-xunit/swift-xunit-parser'
import {ParseOptions} from '../src/test-parser'
import {getReport} from '../src/report/get-report'
import {normalizeFilePath} from '../src/utils/path-utils'
describe('swift-xunit tests', () => {
it('report from swift test results matches snapshot', async () => {
const fixturePath = path.join(__dirname, 'fixtures', 'swift-xunit.xml')
const outputPath = path.join(__dirname, '__outputs__', 'swift-xunit.md')
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
const trackedFiles = ['Package.swift', 'Sources/AcmeLib/AcmeLib.swift', 'Tests/AcmeLibTests/AcmeLibTests.swift']
const opts: ParseOptions = {
parseErrors: true,
trackedFiles
}
const parser = new SwiftXunitParser(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)
})
})

View File

@@ -31,6 +31,7 @@ inputs:
- java-junit - java-junit
- jest-junit - jest-junit
- mocha-json - mocha-json
- swift-xunit
required: true required: true
list-suites: list-suites:
description: | description: |
@@ -94,7 +95,7 @@ outputs:
url_html: url_html:
description: Check run URL HTML description: Check run URL HTML
runs: runs:
using: 'node16' using: 'node20'
main: 'dist/index.js' main: 'dist/index.js'
branding: branding:
color: blue color: blue

34914
dist/index.js generated vendored

File diff suppressed because one or more lines are too long

1
dist/index.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

142
dist/licenses.txt generated vendored
View File

@@ -71,6 +71,28 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@fastify/busboy
MIT
Copyright Brian White. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
@nodelib/fs.scandir @nodelib/fs.scandir
MIT MIT
The MIT License (MIT) The MIT License (MIT)
@@ -1002,31 +1024,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
is-plain-object
MIT
The MIT License (MIT)
Copyright (c) 2014-2017, Jon Schlinkert.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
json-buffer json-buffer
MIT MIT
Copyright (c) 2013 Dominic Tarr Copyright (c) 2013 Dominic Tarr
@@ -1132,32 +1129,6 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
node-fetch
MIT
The MIT License (MIT)
Copyright (c) 2016 David Frank
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
normalize-url normalize-url
MIT MIT
MIT License MIT License
@@ -1458,9 +1429,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
tr46
MIT
tunnel tunnel
MIT MIT
The MIT License (MIT) The MIT License (MIT)
@@ -1486,6 +1454,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
undici
MIT
MIT License
Copyright (c) Matteo Collina and Undici contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
universal-user-agent universal-user-agent
ISC ISC
# [ISC License](https://spdx.org/licenses/ISC) # [ISC License](https://spdx.org/licenses/ISC)
@@ -1510,47 +1503,6 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
webidl-conversions
BSD-2-Clause
# The BSD 2-Clause License
Copyright (c) 2014, Domenic Denicola
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
whatwg-url
MIT
The MIT License (MIT)
Copyright (c) 20152016 Sebastian Mayr
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
wrappy wrappy
ISC ISC
The ISC License The ISC License

2967
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "test-check", "name": "test-check",
"version": "1.7.0", "version": "1.8.0",
"private": true, "private": true,
"description": "Presents test results from popular testing frameworks as Github check run", "description": "Presents test results from popular testing frameworks as Github check run",
"main": "lib/main.js", "main": "lib/main.js",
@@ -12,6 +12,7 @@
"package": "ncc build --license licenses.txt && eolConverter lf 'dist/*'", "package": "ncc build --license licenses.txt && eolConverter lf 'dist/*'",
"version": "npm run build && npm run package && git add dist/*", "version": "npm run build && npm run package && git add dist/*",
"test": "jest --ci --reporters=default --reporters=jest-junit", "test": "jest --ci --reporters=default --reporters=jest-junit",
"jest:updatesnapshot": "jest --updateSnapshot",
"all": "npm run build && npm run format && npm run lint && npm run package && npm test", "all": "npm run build && npm run format && npm run lint && npm run package && npm test",
"dart-fixture": "cd \"reports/dart\" && dart test --file-reporter=\"json:../../__tests__/fixtures/dart-json.json\"", "dart-fixture": "cd \"reports/dart\" && dart test --file-reporter=\"json:../../__tests__/fixtures/dart-json.json\"",
"dotnet-fixture": "dotnet test reports/dotnet/DotnetTests.XUnitTests --logger \"trx;LogFileName=../../../../__tests__/fixtures/dotnet-trx.trx\"", "dotnet-fixture": "dotnet test reports/dotnet/DotnetTests.XUnitTests --logger \"trx;LogFileName=../../../../__tests__/fixtures/dotnet-trx.trx\"",
@@ -31,42 +32,42 @@
"author": "Michal Dorner <dorner.michal@gmail.com>", "author": "Michal Dorner <dorner.michal@gmail.com>",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.10.0", "@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"@actions/github": "^5.0.3", "@actions/github": "^6.0.0",
"adm-zip": "^0.5.3", "adm-zip": "^0.5.10",
"fast-glob": "^3.2.5", "fast-glob": "^3.3.2",
"got": "^11.8.2", "got": "^11.8.2",
"picomatch": "^2.2.2", "picomatch": "^3.0.1",
"xml2js": "^0.5.0" "xml2js": "^0.6.2"
}, },
"devDependencies": { "devDependencies": {
"@octokit/types": "^7.1.0", "@octokit/types": "^12.4.0",
"@octokit/webhooks": "^10.1.5", "@octokit/webhooks": "^12.0.11",
"@octokit/webhooks-types": "^6.3.6", "@octokit/webhooks-types": "^7.3.1",
"@types/adm-zip": "^0.5.0", "@types/adm-zip": "^0.5.5",
"@types/github-slugger": "^1.3.0", "@types/github-slugger": "^1.3.0",
"@types/jest": "^28.1.7", "@types/jest": "^29.5.11",
"@types/node": "^18.7.7", "@types/node": "^20.11.9",
"@types/picomatch": "^2.2.1", "@types/picomatch": "^2.3.3",
"@types/xml2js": "^0.4.8", "@types/xml2js": "^0.4.14",
"@typescript-eslint/eslint-plugin": "^5.33.1", "@typescript-eslint/eslint-plugin": "^6.19.1",
"@typescript-eslint/parser": "^5.33.1", "@typescript-eslint/parser": "^6.19.1",
"@vercel/ncc": "^0.34.0", "@vercel/ncc": "^0.38.1",
"eol-converter-cli": "^1.0.8", "eol-converter-cli": "^1.0.8",
"eslint": "^8.22.0", "eslint": "^8.56.0",
"eslint-import-resolver-typescript": "^3.4.2", "eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-github": "^4.1.2", "eslint-plugin-github": "^4.10.1",
"eslint-plugin-import": "^2.26.0", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-jest": "^26.8.3", "eslint-plugin-jest": "^27.6.3",
"eslint-plugin-prettier": "^5.0.0", "eslint-plugin-prettier": "^5.1.3",
"jest": "^28.1.3", "jest": "^29.7.0",
"jest-circus": "^28.1.3", "jest-circus": "^29.7.0",
"jest-junit": "^14.0.0", "jest-junit": "^16.0.0",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"prettier": "^3.0.0", "prettier": "^3.2.4",
"ts-jest": "^28.0.8", "ts-jest": "^29.1.2",
"typescript": "^4.7.4" "typescript": "^5.3.3"
}, },
"jest-junit": { "jest-junit": {
"suiteName": "jest tests", "suiteName": "jest tests",

View File

@@ -64,24 +64,38 @@
} }
} }
}, },
"@babel/helper-function-name": { "@babel/helper-environment-visitor": {
"version": "7.10.4", "version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
"integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"dev": true, "dev": true
"requires": {
"@babel/helper-get-function-arity": "^7.10.4",
"@babel/template": "^7.10.4",
"@babel/types": "^7.10.4"
}
}, },
"@babel/helper-get-function-arity": { "@babel/helper-hoist-variables": {
"version": "7.10.4", "version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
"integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/types": "^7.10.4" "@babel/types": "^7.22.5"
},
"dependencies": {
"@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"dev": true
},
"@babel/types": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
"integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"dev": true,
"requires": {
"@babel/helper-string-parser": "^7.22.5",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
}
}
} }
}, },
"@babel/helper-member-expression-to-functions": { "@babel/helper-member-expression-to-functions": {
@@ -164,6 +178,12 @@
"@babel/types": "^7.11.0" "@babel/types": "^7.11.0"
} }
}, },
"@babel/helper-string-parser": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
"integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"dev": true
},
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.10.4", "version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
@@ -361,20 +381,159 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.12.1", "version": "7.23.2",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
"integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.10.4", "@babel/code-frame": "^7.22.13",
"@babel/generator": "^7.12.1", "@babel/generator": "^7.23.0",
"@babel/helper-function-name": "^7.10.4", "@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-split-export-declaration": "^7.11.0", "@babel/helper-function-name": "^7.23.0",
"@babel/parser": "^7.12.1", "@babel/helper-hoist-variables": "^7.22.5",
"@babel/types": "^7.12.1", "@babel/helper-split-export-declaration": "^7.22.6",
"@babel/parser": "^7.23.0",
"@babel/types": "^7.23.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0"
"lodash": "^4.17.19" },
"dependencies": {
"@babel/code-frame": {
"version": "7.22.13",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
"requires": {
"@babel/highlight": "^7.22.13",
"chalk": "^2.4.2"
}
},
"@babel/generator": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
"integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
"dev": true,
"requires": {
"@babel/types": "^7.23.0",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
}
},
"@babel/helper-function-name": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
"integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
"requires": {
"@babel/template": "^7.22.15",
"@babel/types": "^7.23.0"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
"integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dev": true,
"requires": {
"@babel/types": "^7.22.5"
}
},
"@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"dev": true
},
"@babel/highlight": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
"integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
"integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
"dev": true
},
"@babel/template": {
"version": "7.22.15",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
"integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.22.13",
"@babel/parser": "^7.22.15",
"@babel/types": "^7.22.15"
}
},
"@babel/types": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
"integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"dev": true,
"requires": {
"@babel/helper-string-parser": "^7.22.5",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
}
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
} }
}, },
"@babel/types": { "@babel/types": {
@@ -615,6 +774,45 @@
"chalk": "^4.0.0" "chalk": "^4.0.0"
} }
}, },
"@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
"integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
"dev": true,
"requires": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.9"
}
},
"@jridgewell/resolve-uri": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
"integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
"dev": true
},
"@jridgewell/set-array": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
"dev": true
},
"@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"dev": true
},
"@jridgewell/trace-mapping": {
"version": "0.3.19",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
"integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
"dev": true,
"requires": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"@sinonjs/commons": { "@sinonjs/commons": {
"version": "1.8.1", "version": "1.8.1",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz",

View File

@@ -15,10 +15,10 @@ import {DotnetTrxParser} from './parsers/dotnet-trx/dotnet-trx-parser'
import {JavaJunitParser} from './parsers/java-junit/java-junit-parser' import {JavaJunitParser} from './parsers/java-junit/java-junit-parser'
import {JestJunitParser} from './parsers/jest-junit/jest-junit-parser' import {JestJunitParser} from './parsers/jest-junit/jest-junit-parser'
import {MochaJsonParser} from './parsers/mocha-json/mocha-json-parser' import {MochaJsonParser} from './parsers/mocha-json/mocha-json-parser'
import {SwiftXunitParser} from './parsers/swift-xunit/swift-xunit-parser'
import {normalizeDirPath, normalizeFilePath} from './utils/path-utils' import {normalizeDirPath, normalizeFilePath} from './utils/path-utils'
import {getCheckRunContext} from './utils/github-utils' import {getCheckRunContext} from './utils/github-utils'
import {Icon} from './utils/markdown-utils'
async function main(): Promise<void> { async function main(): Promise<void> {
try { try {
@@ -182,7 +182,11 @@ class TestReporter {
const isFailed = this.failOnError && results.some(tr => tr.result === 'failed') const isFailed = this.failOnError && results.some(tr => tr.result === 'failed')
const conclusion = isFailed ? 'failure' : 'success' const conclusion = isFailed ? 'failure' : 'success'
const icon = isFailed ? Icon.fail : Icon.success
const passed = results.reduce((sum, tr) => sum + tr.passed, 0)
const failed = results.reduce((sum, tr) => sum + tr.failed, 0)
const skipped = results.reduce((sum, tr) => sum + tr.skipped, 0)
const shortSummary = `${passed} passed, ${failed} failed and ${skipped} skipped `
core.info(`Updating check run conclusion (${conclusion}) and output`) core.info(`Updating check run conclusion (${conclusion}) and output`)
const resp = await this.octokit.rest.checks.update({ const resp = await this.octokit.rest.checks.update({
@@ -190,7 +194,7 @@ class TestReporter {
conclusion, conclusion,
status: 'completed', status: 'completed',
output: { output: {
title: `${name} ${icon}`, title: shortSummary,
summary, summary,
annotations annotations
}, },
@@ -219,6 +223,8 @@ class TestReporter {
return new JestJunitParser(options) return new JestJunitParser(options)
case 'mocha-json': case 'mocha-json':
return new MochaJsonParser(options) return new MochaJsonParser(options)
case 'swift-xunit':
return new SwiftXunitParser(options)
default: default:
throw new Error(`Input variable 'reporter' is set to invalid value '${reporter}'`) throw new Error(`Input variable 'reporter' is set to invalid value '${reporter}'`)
} }

View File

@@ -29,7 +29,12 @@ import {
} from '../../test-results' } from '../../test-results'
class TestRun { class TestRun {
constructor(readonly path: string, readonly suites: TestSuite[], readonly success: boolean, readonly time: number) {} constructor(
readonly path: string,
readonly suites: TestSuite[],
readonly success: boolean,
readonly time: number
) {}
} }
class TestSuite { class TestSuite {
@@ -74,7 +79,10 @@ class TestCase {
export class DartJsonParser implements TestParser { export class DartJsonParser implements TestParser {
assumedWorkDir: string | undefined assumedWorkDir: string | undefined
constructor(readonly options: ParseOptions, readonly sdk: 'dart' | 'flutter') {} constructor(
readonly options: ParseOptions,
readonly sdk: 'dart' | 'flutter'
) {}
async parse(path: string, content: string): Promise<TestRunResult> { async parse(path: string, content: string): Promise<TestRunResult> {
const tr = this.getTestRun(path, content) const tr = this.getTestRun(path, content)

View File

@@ -37,7 +37,7 @@ export class JestJunitParser implements TestParser {
junit.testsuites.testsuite === undefined junit.testsuites.testsuite === undefined
? [] ? []
: junit.testsuites.testsuite.map(ts => { : junit.testsuites.testsuite.map(ts => {
const name = ts.$.name.trim() const name = this.escapeCharacters(ts.$.name.trim())
const time = parseFloat(ts.$.time) * 1000 const time = parseFloat(ts.$.time) * 1000
const sr = new TestSuiteResult(name, this.getGroups(ts), time) const sr = new TestSuiteResult(name, this.getGroups(ts), time)
return sr return sr
@@ -118,4 +118,8 @@ export class JestJunitParser implements TestParser {
(this.assumedWorkDir = getBasePath(path, this.options.trackedFiles)) (this.assumedWorkDir = getBasePath(path, this.options.trackedFiles))
) )
} }
private escapeCharacters(s: string): string {
return s.replace(/([<>])/g, '\\$1')
}
} }

View File

@@ -0,0 +1,8 @@
import {ParseOptions} from '../../test-parser'
import {JavaJunitParser} from '../java-junit/java-junit-parser'
export class SwiftXunitParser extends JavaJunitParser {
constructor(readonly options: ParseOptions) {
super(options)
}
}