mirror of
https://github.com/game-ci/unity-test-runner.git
synced 2026-01-29 14:39:33 +08:00
Compare commits
22 Commits
v2.0-alpha
...
v2.0-alpha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7563db4160 | ||
|
|
19201393f1 | ||
|
|
9488ba6d77 | ||
|
|
dfd8e1e91f | ||
|
|
c56b66a41b | ||
|
|
4d6a166cb7 | ||
|
|
6838fda7a4 | ||
|
|
cf55f1c921 | ||
|
|
ad11a10dc8 | ||
|
|
5aaa7eff53 | ||
|
|
19661e2da7 | ||
|
|
5eca106c01 | ||
|
|
0674feac28 | ||
|
|
6ec7057a28 | ||
|
|
f95bef8f16 | ||
|
|
4a3465923a | ||
|
|
1fcc491cbe | ||
|
|
73c6b8aa34 | ||
|
|
694c315276 | ||
|
|
fffbf11b2a | ||
|
|
a195213baa | ||
|
|
8033066291 |
12
.github/FUNDING.yml
vendored
Normal file
12
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: game-ci
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
23
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
23
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
**Bug description**
|
||||
|
||||
<!--A clear and concise description of what the bug is.-->
|
||||
|
||||
**How to reproduce**
|
||||
|
||||
<!--Steps to reproduce the behavior:-->
|
||||
|
||||
- **Expected behavior**
|
||||
|
||||
<!--A clear and concise description of what you expected to happen.-->
|
||||
|
||||
**Additional details**
|
||||
|
||||
<!--Please add context, links, reasons, screenshots, etc.-->
|
||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Discuss on Discord
|
||||
url: https://game.ci/discord
|
||||
about: Join our Discord community
|
||||
23
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
23
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an improvement, or a new feature
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
**Context**
|
||||
|
||||
<!--Please describe a proper context-->
|
||||
|
||||
**Suggested solution**
|
||||
|
||||
<!--Tell us what you would suggest-->
|
||||
|
||||
**Considered alternatives**
|
||||
|
||||
<!--Please add any alternative solutions that you have considered-->
|
||||
|
||||
**Additional details**
|
||||
|
||||
<!--Please add context, links, reasons, screenshots, etc.-->
|
||||
7
.github/ISSUE_TEMPLATE/other.md
vendored
Normal file
7
.github/ISSUE_TEMPLATE/other.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
name: Other
|
||||
about: Everything else
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
---
|
||||
7
.github/dependabot.yml
vendored
Normal file
7
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: github-actions
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
2
.github/pull_request_template.md
vendored
2
.github/pull_request_template.md
vendored
@@ -4,6 +4,8 @@
|
||||
|
||||
#### Checklist
|
||||
|
||||
<!-- please check all items and add your own -->
|
||||
|
||||
- [x] Read the contribution [guide](../CONTRIBUTING.md) and accept the [code](../CODE_OF_CONDUCT.md) of conduct
|
||||
- [ ] Readme (updated or not needed)
|
||||
- [ ] Tests (added, updated or not needed)
|
||||
|
||||
14
.github/workflows/versioning.yml
vendored
Normal file
14
.github/workflows/versioning.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
name: Versioning
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published, edited]
|
||||
|
||||
jobs:
|
||||
updateMajorTag:
|
||||
name: Update major tag
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: Actions-R-Us/actions-tagger@v2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
10
README.md
10
README.md
@@ -39,6 +39,14 @@ To help improve the documentation, please find the docs [repository](https://git
|
||||
|
||||
To contribute to this project, kindly read the [contribution guide](./CONTRIBUTING.md).
|
||||
|
||||
## Support us
|
||||
|
||||
GameCI is free for everyone forever.
|
||||
|
||||
You can support us at [OpenCollective](https://opencollective.com/game-ci).
|
||||
|
||||
## Licence
|
||||
|
||||
[MIT](./LICENSE)
|
||||
This repository is [MIT](./LICENSE) licensed.
|
||||
|
||||
This includes all contributions from the community.
|
||||
|
||||
@@ -21,13 +21,17 @@ inputs:
|
||||
required: false
|
||||
default: 'artifacts'
|
||||
description: 'Path where test artifacts should be stored.'
|
||||
useNetworkHost:
|
||||
useHostNetwork:
|
||||
required: false
|
||||
default: false
|
||||
description: 'Initialises Docker using the hosts network.'
|
||||
customParameters:
|
||||
required: false
|
||||
description: 'Extra parameters to configure the Unity editor run.'
|
||||
sshAgent:
|
||||
required: false
|
||||
default: ''
|
||||
description: 'SSH Agent path to forward to the container'
|
||||
githubToken:
|
||||
required: false
|
||||
default: ''
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Create directory for license activation
|
||||
#
|
||||
|
||||
ACTIVATE_LICENSE_PATH="$GITHUB_WORKSPACE/_activate-license"
|
||||
mkdir -p "$ACTIVATE_LICENSE_PATH"
|
||||
|
||||
#
|
||||
# Run steps
|
||||
#
|
||||
@@ -8,6 +15,12 @@ source /steps/activate.sh
|
||||
source /steps/run_tests.sh
|
||||
source /steps/return_license.sh
|
||||
|
||||
#
|
||||
# Remove license activation directory
|
||||
#
|
||||
|
||||
rm -r "$ACTIVATE_LICENSE_PATH"
|
||||
|
||||
#
|
||||
# Instructions for debugging
|
||||
#
|
||||
@@ -29,6 +42,6 @@ fi;
|
||||
# Exit with code from the build step.
|
||||
#
|
||||
|
||||
if [ $USE_EXIT_CODE = true ]; then
|
||||
if [[ $USE_EXIT_CODE == true || $TEST_RUNNER_EXIT_CODE -ne 2 ]]; then
|
||||
exit $TEST_RUNNER_EXIT_CODE
|
||||
fi;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -7,9 +7,13 @@
|
||||
{{#tests}}
|
||||
* {{summary}}
|
||||
{{#if annotation}}
|
||||
{{#if annotation.message}}
|
||||
{{indent annotation.message}}
|
||||
{{/if}}
|
||||
{{#if annotation.raw_details}}
|
||||
{{indent annotation.raw_details}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/tests}}
|
||||
{{/suites}}
|
||||
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Run in ACTIVATE_LICENSE_PATH directory
|
||||
echo "Changing to \"$ACTIVATE_LICENSE_PATH\" directory."
|
||||
pushd "$ACTIVATE_LICENSE_PATH"
|
||||
|
||||
if [[ -n "$UNITY_LICENSE" ]] || [[ -n "$UNITY_LICENSE_FILE" ]]; then
|
||||
#
|
||||
# PERSONAL LICENSE MODE
|
||||
@@ -102,3 +106,6 @@ else
|
||||
echo "Exit code was: $UNITY_EXIT_CODE"
|
||||
exit $UNITY_EXIT_CODE
|
||||
fi
|
||||
|
||||
# Return to previous working directory
|
||||
popd
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Run in ACTIVATE_LICENSE_PATH directory
|
||||
echo "Changing to \"$ACTIVATE_LICENSE_PATH\" directory."
|
||||
pushd "$ACTIVATE_LICENSE_PATH"
|
||||
|
||||
if [[ -n "$UNITY_SERIAL" ]]; then
|
||||
#
|
||||
# PROFESSIONAL (SERIAL) LICENSE MODE
|
||||
@@ -13,3 +17,6 @@ if [[ -n "$UNITY_SERIAL" ]]; then
|
||||
-quit \
|
||||
-returnlicense
|
||||
fi
|
||||
|
||||
# Return to previous working directory
|
||||
popd
|
||||
|
||||
81
artifacts/editmode-results.xml
Normal file
81
artifacts/editmode-results.xml
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<test-run id="2" testcasecount="6" result="Failed(Child)" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.1168037">
|
||||
<test-suite type="TestSuite" id="1012" name="sample-project" fullname="sample-project" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.116804" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-suite type="Assembly" id="1020" name="Editor.dll" fullname="/github/workspace/unity-project/Library/ScriptAssemblies/Editor.dll" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.087946" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties>
|
||||
<property name="_PID" value="78" />
|
||||
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||
<property name="platform" value="EditMode" />
|
||||
</properties>
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-suite type="TestSuite" id="1021" name="Editor" fullname="Editor" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.086212" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-suite type="TestFixture" id="1013" name="EditorModeTest" fullname="Editor.EditorModeTest" classname="Editor.EditorModeTest" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.076416" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<output><![CDATA[You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
|
||||
]]></output>
|
||||
<test-case id="1016" name="FailedTest" fullname="Editor.EditorModeTest.FailedTest" methodname="FailedTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="330279882" result="Failed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.023093" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[ Expected: True
|
||||
But was: False
|
||||
]]></message>
|
||||
<stack-trace><![CDATA[at Editor.EditorModeTest.FailedTest () [0x00000] in /github/workspace/unity-project/Assets/Editor/EditorModeTest.cs:21
|
||||
]]></stack-trace>
|
||||
</failure>
|
||||
</test-case>
|
||||
<test-case id="1019" name="FailedUnityTest" fullname="Editor.EditorModeTest.FailedUnityTest" methodname="FailedUnityTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="347277877" result="Failed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.014203" asserts="0">
|
||||
<properties>
|
||||
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||
</properties>
|
||||
<failure>
|
||||
<message><![CDATA[ Expected: True
|
||||
But was: False
|
||||
]]></message>
|
||||
<stack-trace><![CDATA[at Editor.EditorModeTest+<FailedUnityTest>d__5.MoveNext () [0x0002e] in /github/workspace/unity-project/Assets/Editor/EditorModeTest.cs:40
|
||||
at UnityEngine.TestTools.TestEnumerator+<Execute>d__6.MoveNext () [0x00038] in /github/workspace/unity-project/Library/PackageCache/com.unity.test-framework@1.1.19/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs:36
|
||||
]]></stack-trace>
|
||||
</failure>
|
||||
</test-case>
|
||||
<test-case id="1015" name="IgnoredTest" fullname="Editor.EditorModeTest.IgnoredTest" methodname="IgnoredTest" classname="Editor.EditorModeTest" runstate="Ignored" seed="1319288303" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.000218" asserts="0">
|
||||
<properties>
|
||||
<property name="_SKIPREASON" value="ignore" />
|
||||
</properties>
|
||||
<reason>
|
||||
<message><![CDATA[ignore]]></message>
|
||||
</reason>
|
||||
</test-case>
|
||||
<test-case id="1018" name="IgnoredUnityTest" fullname="Editor.EditorModeTest.IgnoredUnityTest" methodname="IgnoredUnityTest" classname="Editor.EditorModeTest" runstate="Ignored" seed="2034877647" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.000004" asserts="0">
|
||||
<properties>
|
||||
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||
<property name="_SKIPREASON" value="ignore" />
|
||||
</properties>
|
||||
<reason>
|
||||
<message><![CDATA[ignore]]></message>
|
||||
</reason>
|
||||
</test-case>
|
||||
<test-case id="1014" name="PassedTest" fullname="Editor.EditorModeTest.PassedTest" methodname="PassedTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="387558551" result="Passed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.000366" asserts="0">
|
||||
<properties />
|
||||
</test-case>
|
||||
<test-case id="1017" name="PassedUnityTest" fullname="Editor.EditorModeTest.PassedUnityTest" methodname="PassedUnityTest" classname="Editor.EditorModeTest" runstate="Runnable" seed="1069930397" result="Passed" start-time="2021-01-19 20:51:34Z" end-time="2021-01-19 20:51:34Z" duration="0.007903" asserts="0">
|
||||
<properties>
|
||||
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||
</properties>
|
||||
</test-case>
|
||||
</test-suite>
|
||||
</test-suite>
|
||||
</test-suite>
|
||||
</test-suite>
|
||||
</test-run>
|
||||
111
artifacts/playmode-results.xml
Normal file
111
artifacts/playmode-results.xml
Normal file
@@ -0,0 +1,111 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<test-run id="2" testcasecount="8" result="Failed(Child)" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.1055695">
|
||||
<test-suite type="TestSuite" id="1000" name="sample-project" fullname="sample-project" runstate="Runnable" testcasecount="8" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.105570" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-suite type="Assembly" id="1012" name="Assembly-CSharp.dll" fullname="/github/workspace/unity-project/Library/ScriptAssemblies/Assembly-CSharp.dll" runstate="Runnable" testcasecount="8" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.088008" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties>
|
||||
<property name="_PID" value="474" />
|
||||
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||
<property name="platform" value="PlayMode" />
|
||||
</properties>
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-suite type="TestSuite" id="1013" name="Tests" fullname="Tests" runstate="Runnable" testcasecount="8" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.084864" total="8" passed="2" failed="4" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-suite type="TestFixture" id="1001" name="PlayModeTest" fullname="Tests.PlayModeTest" classname="Tests.PlayModeTest" runstate="Runnable" testcasecount="6" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.074407" total="6" passed="2" failed="2" inconclusive="0" skipped="2" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-case id="1004" name="FailedTest" fullname="Tests.PlayModeTest.FailedTest" methodname="FailedTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="1067965392" result="Failed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.034377" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[ Expected: True
|
||||
But was: False
|
||||
]]></message>
|
||||
<stack-trace><![CDATA[at Tests.PlayModeTest.FailedTest () [0x00000] in /github/workspace/unity-project/Assets/Tests/PlayModeTest.cs:20
|
||||
]]></stack-trace>
|
||||
</failure>
|
||||
</test-case>
|
||||
<test-case id="1007" name="FailedUnityTest" fullname="Tests.PlayModeTest.FailedUnityTest" methodname="FailedUnityTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="318345342" result="Failed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.009524" asserts="0">
|
||||
<properties>
|
||||
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||
</properties>
|
||||
<failure>
|
||||
<message><![CDATA[ Expected: True
|
||||
But was: False
|
||||
]]></message>
|
||||
<stack-trace><![CDATA[at Tests.PlayModeTest+<FailedUnityTest>d__5.MoveNext () [0x0002e] in /github/workspace/unity-project/Assets/Tests/PlayModeTest.cs:39
|
||||
at UnityEngine.TestTools.TestEnumerator+<Execute>d__6.MoveNext () [0x00038] in /github/workspace/unity-project/Library/PackageCache/com.unity.test-framework@1.1.19/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs:36
|
||||
]]></stack-trace>
|
||||
</failure>
|
||||
</test-case>
|
||||
<test-case id="1003" name="IgnoredTest" fullname="Tests.PlayModeTest.IgnoredTest" methodname="IgnoredTest" classname="Tests.PlayModeTest" runstate="Ignored" seed="1914466070" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000211" asserts="0">
|
||||
<properties>
|
||||
<property name="_SKIPREASON" value="ignore" />
|
||||
</properties>
|
||||
<reason>
|
||||
<message><![CDATA[ignore]]></message>
|
||||
</reason>
|
||||
</test-case>
|
||||
<test-case id="1006" name="IgnoredUnityTest" fullname="Tests.PlayModeTest.IgnoredUnityTest" methodname="IgnoredUnityTest" classname="Tests.PlayModeTest" runstate="Ignored" seed="475291067" result="Skipped" label="Ignored" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000004" asserts="0">
|
||||
<properties>
|
||||
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||
<property name="_SKIPREASON" value="ignore" />
|
||||
</properties>
|
||||
<reason>
|
||||
<message><![CDATA[ignore]]></message>
|
||||
</reason>
|
||||
</test-case>
|
||||
<test-case id="1002" name="PassedTest" fullname="Tests.PlayModeTest.PassedTest" methodname="PassedTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="635988114" result="Passed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000400" asserts="0">
|
||||
<properties />
|
||||
</test-case>
|
||||
<test-case id="1005" name="PassedUnityTest" fullname="Tests.PlayModeTest.PassedUnityTest" methodname="PassedUnityTest" classname="Tests.PlayModeTest" runstate="Runnable" seed="881217608" result="Passed" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000736" asserts="0">
|
||||
<properties>
|
||||
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||
</properties>
|
||||
</test-case>
|
||||
</test-suite>
|
||||
<test-suite type="TestFixture" id="1008" name="SetupFailedTest" fullname="Tests.SetupFailedTest" classname="Tests.SetupFailedTest" runstate="Runnable" testcasecount="1" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.004318" total="1" passed="0" failed="1" inconclusive="0" skipped="0" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-case id="1009" name="PassedTest" fullname="Tests.SetupFailedTest.PassedTest" methodname="PassedTest" classname="Tests.SetupFailedTest" runstate="Runnable" seed="1423699315" result="Failed" label="Error" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.003206" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[SetUp : System.NullReferenceException : Object reference not set to an instance of an object]]></message>
|
||||
<stack-trace><![CDATA[--SetUp
|
||||
at Tests.SetupFailedTest.SetUp () [0x00000] in /github/workspace/unity-project/Assets/Tests/SetupFailedTest.cs:10
|
||||
at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
|
||||
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <9577ac7a62ef43179789031239ba8798>:0 ]]></stack-trace>
|
||||
</failure>
|
||||
</test-case>
|
||||
</test-suite>
|
||||
<test-suite type="TestFixture" id="1010" name="TearDownFailedTest" fullname="Tests.TearDownFailedTest" classname="Tests.TearDownFailedTest" runstate="Runnable" testcasecount="1" result="Failed" site="Child" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.001857" total="1" passed="0" failed="1" inconclusive="0" skipped="0" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[One or more child tests had errors]]></message>
|
||||
</failure>
|
||||
<test-case id="1011" name="PassedTest" fullname="Tests.TearDownFailedTest.PassedTest" methodname="PassedTest" classname="Tests.TearDownFailedTest" runstate="Runnable" seed="1384928637" result="Failed" label="Error" start-time="2021-01-19 20:51:44Z" end-time="2021-01-19 20:51:44Z" duration="0.000755" asserts="0">
|
||||
<properties />
|
||||
<failure>
|
||||
<message><![CDATA[TearDown : System.NullReferenceException : Object reference not set to an instance of an object]]></message>
|
||||
<stack-trace><![CDATA[--TearDown
|
||||
at Tests.TearDownFailedTest.TearDown () [0x00000] in /github/workspace/unity-project/Assets/Tests/TearDownFailedTest.cs:10
|
||||
at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
|
||||
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <9577ac7a62ef43179789031239ba8798>:0 ]]></stack-trace>
|
||||
</failure>
|
||||
</test-case>
|
||||
</test-suite>
|
||||
</test-suite>
|
||||
</test-suite>
|
||||
</test-suite>
|
||||
</test-run>
|
||||
@@ -13,6 +13,7 @@ async function action() {
|
||||
artifactsPath,
|
||||
useHostNetwork,
|
||||
customParameters,
|
||||
sshAgent,
|
||||
githubToken,
|
||||
checkName,
|
||||
} = Input.getFromUser();
|
||||
@@ -31,6 +32,7 @@ async function action() {
|
||||
artifactsPath,
|
||||
useHostNetwork,
|
||||
customParameters,
|
||||
sshAgent,
|
||||
githubToken,
|
||||
});
|
||||
} finally {
|
||||
|
||||
@@ -26,6 +26,7 @@ class Docker {
|
||||
artifactsPath,
|
||||
useHostNetwork,
|
||||
customParameters,
|
||||
sshAgent,
|
||||
githubToken,
|
||||
} = parameters;
|
||||
|
||||
@@ -42,7 +43,6 @@ class Docker {
|
||||
--env TEST_MODE="${testMode}" \
|
||||
--env ARTIFACTS_PATH="${artifactsPath}" \
|
||||
--env CUSTOM_PARAMETERS="${customParameters}" \
|
||||
--env HOME=/github/home \
|
||||
--env GITHUB_REF \
|
||||
--env GITHUB_SHA \
|
||||
--env GITHUB_REPOSITORY \
|
||||
@@ -58,10 +58,13 @@ class Docker {
|
||||
--env RUNNER_TOOL_CACHE \
|
||||
--env RUNNER_TEMP \
|
||||
--env RUNNER_WORKSPACE \
|
||||
${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
|
||||
--volume "/var/run/docker.sock":"/var/run/docker.sock" \
|
||||
--volume "/home/runner/work/_temp/_github_home":"/github/home" \
|
||||
--volume "/home/runner/work/_temp/_github_home":"/root" \
|
||||
--volume "/home/runner/work/_temp/_github_workflow":"/github/workflow" \
|
||||
--volume "${workspace}":"/github/workspace" \
|
||||
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
|
||||
${sshAgent ? '--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro' : ''} \
|
||||
${useHostNetwork ? '--net=host' : ''} \
|
||||
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
||||
${image}`;
|
||||
|
||||
@@ -8,7 +8,7 @@ class Input {
|
||||
}
|
||||
|
||||
static isValidFolderName(folderName) {
|
||||
const validFolderName = new RegExp(/^(\.|\.\/)?(\.?\w+([_-]?\w+)*\/?)*$/);
|
||||
const validFolderName = new RegExp(/^(\.|\.\/)?(\.?[\w~]+([_-]?[\w~]+)*\/?)*$/);
|
||||
|
||||
return validFolderName.test(folderName);
|
||||
}
|
||||
@@ -17,11 +17,12 @@ class Input {
|
||||
// Input variables specified in workflow using "with" prop.
|
||||
const rawUnityVersion = getInput('unityVersion') || 'auto';
|
||||
const customImage = getInput('customImage') || '';
|
||||
const testMode = getInput('testMode') || 'all';
|
||||
const testMode = (getInput('testMode') || 'all').toLowerCase();
|
||||
const rawProjectPath = getInput('projectPath') || '.';
|
||||
const rawArtifactsPath = getInput('artifactsPath') || 'artifacts';
|
||||
const rawUseHostNetwork = getInput('useHostNetwork') || 'false';
|
||||
const customParameters = getInput('customParameters') || '';
|
||||
const sshAgent = getInput('sshAgent') || '';
|
||||
const githubToken = getInput('githubToken') || '';
|
||||
const checkName = getInput('checkName') || 'Test Results';
|
||||
|
||||
@@ -58,6 +59,7 @@ class Input {
|
||||
artifactsPath,
|
||||
useHostNetwork,
|
||||
customParameters,
|
||||
sshAgent,
|
||||
githubToken,
|
||||
checkName,
|
||||
};
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import Input from './input';
|
||||
|
||||
jest.mock('./unity-version-parser');
|
||||
|
||||
describe('Input', () => {
|
||||
describe('getFromUser', () => {
|
||||
it('does not throw', () => {
|
||||
|
||||
@@ -9,7 +9,7 @@ import { RunMeta } from './ts/results-meta.ts';
|
||||
class ResultsCheck {
|
||||
static async createCheck(artifactsPath, githubToken, checkName) {
|
||||
// Validate input
|
||||
if (!artifactsPath || !checkName || !githubToken) {
|
||||
if (!fs.existsSync(artifactsPath) || !githubToken || !checkName) {
|
||||
throw new Error(
|
||||
`Missing input! {"artifactsPath": "${artifactsPath}", "githubToken": "${githubToken}, "checkName": "${checkName}"`,
|
||||
);
|
||||
@@ -46,24 +46,35 @@ class ResultsCheck {
|
||||
core.info('Analyze result:');
|
||||
core.info(runSummary.summary);
|
||||
|
||||
// Call GitHub API
|
||||
await ResultsCheck.requestGitHubCheck(checkName, githubToken, runs, runSummary);
|
||||
return runSummary.failed;
|
||||
}
|
||||
|
||||
static async requestGitHubCheck(checkName, githubToken, runs, runSummary) {
|
||||
const pullRequest = github.context.payload.pull_request;
|
||||
const headSha = (pullRequest && pullRequest.head.sha) || github.context.sha;
|
||||
|
||||
// Format output
|
||||
const title = runSummary.summary;
|
||||
const summary = await ResultsCheck.renderSummary(runs);
|
||||
core.debug(`Summary view: ${summary}`);
|
||||
const details = await ResultsCheck.renderDetails(runs);
|
||||
core.debug(`Details view: ${details}`);
|
||||
const rawAnnotations = runSummary.extractAnnotations();
|
||||
core.debug(`Raw annotations: ${rawAnnotations}`);
|
||||
const annotations = rawAnnotations.map(rawAnnotation => {
|
||||
const annotation = rawAnnotation;
|
||||
annotation.path = rawAnnotation.path.replace('/github/workspace/', '');
|
||||
return annotation;
|
||||
});
|
||||
core.debug(`Annotations: ${annotations}`);
|
||||
const output = {
|
||||
title,
|
||||
summary,
|
||||
text: details,
|
||||
annotations: annotations.slice(0, 50),
|
||||
};
|
||||
|
||||
// Call GitHub API
|
||||
await ResultsCheck.requestGitHubCheck(githubToken, checkName, output);
|
||||
return runSummary.failed;
|
||||
}
|
||||
|
||||
static async requestGitHubCheck(githubToken, checkName, output) {
|
||||
const pullRequest = github.context.payload.pull_request;
|
||||
const headSha = (pullRequest && pullRequest.head.sha) || github.context.sha;
|
||||
|
||||
core.info(`Posting results for ${headSha}`);
|
||||
const createCheckRequest = {
|
||||
@@ -72,12 +83,7 @@ class ResultsCheck {
|
||||
head_sha: headSha,
|
||||
status: 'completed',
|
||||
conclusion: 'neutral',
|
||||
output: {
|
||||
title,
|
||||
summary,
|
||||
text: details,
|
||||
annotations: annotations.slice(0, 50),
|
||||
},
|
||||
output,
|
||||
};
|
||||
|
||||
const octokit = github.getOctokit(githubToken);
|
||||
|
||||
@@ -23,13 +23,15 @@ class ResultsParser {
|
||||
|
||||
const run = filedata['test-run'];
|
||||
const runMeta = new RunMeta(filename);
|
||||
const tests = ResultsParser.convertSuite(run['test-suite']);
|
||||
core.debug(tests);
|
||||
|
||||
runMeta.total = Number(run._attributes.total);
|
||||
runMeta.failed = Number(run._attributes.failed);
|
||||
runMeta.skipped = Number(run._attributes.skipped);
|
||||
runMeta.passed = Number(run._attributes.passed);
|
||||
runMeta.duration = Number(run._attributes.duration);
|
||||
runMeta.addTests(ResultsParser.convertSuite(run['test-suite']));
|
||||
runMeta.addTests(tests);
|
||||
|
||||
return runMeta;
|
||||
}
|
||||
@@ -38,7 +40,7 @@ class ResultsParser {
|
||||
if (Array.isArray(suites)) {
|
||||
const innerResult = [];
|
||||
suites.forEach(suite => {
|
||||
innerResult.push(ResultsParser.convertSuite(suite));
|
||||
innerResult.push(...ResultsParser.convertSuite(suite));
|
||||
});
|
||||
return innerResult;
|
||||
}
|
||||
@@ -100,7 +102,7 @@ class ResultsParser {
|
||||
end_line: point.line,
|
||||
annotation_level: 'failure',
|
||||
title: fullname,
|
||||
message: failure.message._cdata,
|
||||
message: failure.message._cdata ? failure.message._cdata : 'Test Failed!',
|
||||
raw_details: trace,
|
||||
};
|
||||
core.info(
|
||||
@@ -110,6 +112,25 @@ class ResultsParser {
|
||||
}
|
||||
|
||||
static findAnnotationPoint(trace) {
|
||||
// Find first entry with non-zero line number in stack trace
|
||||
const items = trace.match(/at .* in ((?<path>[^:]+):(?<line>\d+))/g);
|
||||
if (Array.isArray(items)) {
|
||||
const result = [];
|
||||
items.forEach(item => {
|
||||
const match = item.match(/at .* in ((?<path>[^:]+):(?<line>\d+))/);
|
||||
const point = {
|
||||
path: match ? match.groups.path : '',
|
||||
line: match ? Number(match.groups.line) : 0,
|
||||
};
|
||||
if (point.line > 0) {
|
||||
result.push(point);
|
||||
}
|
||||
});
|
||||
if (result.length > 0) {
|
||||
return result[0];
|
||||
}
|
||||
}
|
||||
// If all entries have zero line number match fallback pattern
|
||||
const match = trace.match(/at .* in ((?<path>[^:]+):(?<line>\d+))/);
|
||||
return {
|
||||
path: match ? match.groups.path : '',
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import * as xmljs from 'xml-js';
|
||||
import * as fs from 'fs';
|
||||
import ResultsParser from './results-parser';
|
||||
|
||||
describe('ResultsParser', () => {
|
||||
@@ -5,6 +7,30 @@ describe('ResultsParser', () => {
|
||||
it('throws for missing file', () => {
|
||||
expect(() => ResultsParser.parseResults('')).rejects.toEqual(Error);
|
||||
});
|
||||
|
||||
it('parses editmode-results.xml', () => {
|
||||
expect(() => ResultsParser.parseResults('./artifacts/editmode-results.xml')).not.toThrow();
|
||||
});
|
||||
|
||||
it('parses playmode-results.xml', () => {
|
||||
expect(() => ResultsParser.parseResults('./artifacts/playmode-results.xml')).not.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
describe('convertResults', () => {
|
||||
it('converts editmode-results.xml', () => {
|
||||
const file = fs.readFileSync('./artifacts/editmode-results.xml');
|
||||
const filedata = xmljs.xml2js(file, { compact: true });
|
||||
const result = ResultsParser.convertResults('editmode-results.xml', filedata);
|
||||
expect(result.suites.length).toEqual(1);
|
||||
});
|
||||
|
||||
it('converts playmode-results.xml', () => {
|
||||
const file = fs.readFileSync('./artifacts/playmode-results.xml');
|
||||
const filedata = xmljs.xml2js(file, { compact: true });
|
||||
const result = ResultsParser.convertResults('playmode-results.xml', filedata);
|
||||
expect(result.suites.length).toEqual(3);
|
||||
});
|
||||
});
|
||||
|
||||
describe('convertSuite', () => {
|
||||
@@ -27,15 +53,13 @@ describe('ResultsParser', () => {
|
||||
const result = ResultsParser.convertSuite(targetSuite);
|
||||
|
||||
expect(result).toMatchObject([
|
||||
[
|
||||
{
|
||||
annotation: undefined,
|
||||
duration: Number.NaN,
|
||||
result: undefined,
|
||||
suite: 'Inner Suite Full Name',
|
||||
title: 'testC',
|
||||
},
|
||||
],
|
||||
{
|
||||
annotation: undefined,
|
||||
duration: Number.NaN,
|
||||
result: undefined,
|
||||
suite: 'Inner Suite Full Name',
|
||||
title: 'testC',
|
||||
},
|
||||
{
|
||||
annotation: undefined,
|
||||
duration: Number.NaN,
|
||||
@@ -171,6 +195,16 @@ at UnityEngine.TestTools.TestEnumerator+<Execute>d__6.MoveNext () [0x00038] in /
|
||||
expect(result.line).toBe(39);
|
||||
});
|
||||
|
||||
test('first entry with non-zero line number annotation point', () => {
|
||||
const result = ResultsParser.findAnnotationPoint(`at FluentAssertions.Execution.LateBoundTestFramework.Throw (System.String message) [0x00044] in <527a5493e59e45679b35c1e8d65350b3>:0
|
||||
at FluentAssertions.Execution.TestFrameworkProvider.Throw (System.String message) [0x00011] in <527a5493e59e45679b35c1e8d65350b3>:0
|
||||
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure (System.String message) [0x00005] in <527a5493e59e45679b35c1e8d65350b3>:0
|
||||
at Tests.PlayModeTest+<FailedUnityTest>d__5.MoveNext () [0x0002e] in /github/workspace/unity-project/Assets/Tests/PlayModeTest.cs:39
|
||||
at UnityEngine.TestTools.TestEnumerator+<Execute>d__6.MoveNext () [0x00038] in /github/workspace/unity-project/Library/PackageCache/com.unity.test-framework@1.1.19/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs:36`);
|
||||
expect(result.path).toBe('/github/workspace/unity-project/Assets/Tests/PlayModeTest.cs');
|
||||
expect(result.line).toBe(39);
|
||||
});
|
||||
|
||||
test('setup annotation point', () => {
|
||||
const result = ResultsParser.findAnnotationPoint(`SetUp
|
||||
at Tests.SetupFailedTest.SetUp () [0x00000] in /github/workspace/unity-project/Assets/Tests/SetupFailedTest.cs:10`);
|
||||
|
||||
@@ -41,8 +41,8 @@ export class RunMeta extends Meta {
|
||||
return result;
|
||||
}
|
||||
|
||||
addTests(testsToAdd: TestMeta[]): void {
|
||||
testsToAdd.forEach(test => {
|
||||
addTests(testSuite: TestMeta[]): void {
|
||||
testSuite.forEach(test => {
|
||||
this.addTest(test);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -17,7 +17,9 @@ class UnityVersionParser {
|
||||
static read(projectPath) {
|
||||
const filePath = path.join(projectPath, 'ProjectSettings', 'ProjectVersion.txt');
|
||||
if (!fs.existsSync(filePath)) {
|
||||
return 'auto';
|
||||
throw new Error(
|
||||
`Project settings file not found at "${filePath}". Have you correctly set the projectPath?`,
|
||||
);
|
||||
}
|
||||
return UnityVersionParser.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ describe('UnityVersionParser', () => {
|
||||
});
|
||||
|
||||
describe('read', () => {
|
||||
it('does not throw', () => {
|
||||
expect(() => UnityVersionParser.read('')).not.toThrow();
|
||||
it('throws for invalid path', () => {
|
||||
expect(() => UnityVersionParser.read('')).toThrow(Error);
|
||||
});
|
||||
|
||||
it('reads from unity-project-with-correct-tests', () => {
|
||||
|
||||
@@ -7,9 +7,13 @@
|
||||
{{#tests}}
|
||||
* {{summary}}
|
||||
{{#if annotation}}
|
||||
{{#if annotation.message}}
|
||||
{{indent annotation.message}}
|
||||
{{/if}}
|
||||
{{#if annotation.raw_details}}
|
||||
{{indent annotation.raw_details}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/tests}}
|
||||
{{/suites}}
|
||||
|
||||
|
||||
70
yarn.lock
70
yarn.lock
@@ -1912,15 +1912,15 @@ browser-process-hrtime@^1.0.0:
|
||||
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
|
||||
|
||||
browserslist@^4.14.5, browserslist@^4.16.0:
|
||||
version "4.16.1"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766"
|
||||
integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==
|
||||
version "4.16.6"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2"
|
||||
integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001173"
|
||||
colorette "^1.2.1"
|
||||
electron-to-chromium "^1.3.634"
|
||||
caniuse-lite "^1.0.30001219"
|
||||
colorette "^1.2.2"
|
||||
electron-to-chromium "^1.3.723"
|
||||
escalade "^3.1.1"
|
||||
node-releases "^1.1.69"
|
||||
node-releases "^1.1.71"
|
||||
|
||||
bser@2.1.1:
|
||||
version "2.1.1"
|
||||
@@ -1972,10 +1972,10 @@ camelcase@^6.0.0:
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
|
||||
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
|
||||
|
||||
caniuse-lite@^1.0.30001173:
|
||||
version "1.0.30001173"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz#3c47bbe3cd6d7a9eda7f50ac016d158005569f56"
|
||||
integrity sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw==
|
||||
caniuse-lite@^1.0.30001219:
|
||||
version "1.0.30001230"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz#8135c57459854b2240b57a4a6786044bdc5a9f71"
|
||||
integrity sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==
|
||||
|
||||
capture-exit@^2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -2124,10 +2124,10 @@ color-name@~1.1.4:
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
colorette@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
|
||||
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
|
||||
colorette@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
|
||||
integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
|
||||
|
||||
combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||
version "1.0.8"
|
||||
@@ -2400,10 +2400,10 @@ ecc-jsbn@~0.1.1:
|
||||
jsbn "~0.1.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
electron-to-chromium@^1.3.634:
|
||||
version "1.3.634"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz#82ea400f520f739c4f6ff00c1f7524827a917d25"
|
||||
integrity sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw==
|
||||
electron-to-chromium@^1.3.723:
|
||||
version "1.3.738"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.738.tgz#aec24b091c82acbfabbdcce08076a703941d17ca"
|
||||
integrity sha512-vCMf4gDOpEylPSLPLSwAEsz+R3ShP02Y3cAKMZvTqule3XcPp7tgc/0ESI7IS6ZeyBlGClE50N53fIOkcIVnpw==
|
||||
|
||||
emittery@^0.7.1:
|
||||
version "0.7.2"
|
||||
@@ -3209,9 +3209,9 @@ has@^1.0.3:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hosted-git-info@^2.1.4:
|
||||
version "2.8.8"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
|
||||
integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
|
||||
version "2.8.9"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
|
||||
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
|
||||
|
||||
html-encoding-sniffer@^2.0.1:
|
||||
version "2.0.1"
|
||||
@@ -4273,9 +4273,9 @@ lodash.zip@^4.2.0:
|
||||
integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=
|
||||
|
||||
lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20:
|
||||
version "4.17.20"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
||||
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
log-symbols@^4.0.0:
|
||||
version "4.0.0"
|
||||
@@ -4485,10 +4485,10 @@ node-notifier@^8.0.0:
|
||||
uuid "^8.3.0"
|
||||
which "^2.0.2"
|
||||
|
||||
node-releases@^1.1.69:
|
||||
version "1.1.69"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6"
|
||||
integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==
|
||||
node-releases@^1.1.71:
|
||||
version "1.1.72"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe"
|
||||
integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==
|
||||
|
||||
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
|
||||
version "2.5.0"
|
||||
@@ -4791,9 +4791,9 @@ path-key@^3.0.0, path-key@^3.1.0:
|
||||
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
|
||||
|
||||
path-parse@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
||||
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
path-type@^2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -6110,9 +6110,9 @@ write-file-atomic@^3.0.0:
|
||||
typedarray-to-buffer "^3.1.5"
|
||||
|
||||
ws@^7.2.3:
|
||||
version "7.4.2"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
|
||||
integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
|
||||
version "7.4.6"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
|
||||
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
|
||||
|
||||
xml-js@1.6.11:
|
||||
version "1.6.11"
|
||||
|
||||
Reference in New Issue
Block a user