Compare commits

..

No commits in common. "main" and "v4.2.0" have entirely different histories.
main ... v4.2.0

8 changed files with 1355 additions and 1400 deletions

View File

@ -45,7 +45,7 @@ GameCI is free for everyone forever.
You can support us at [OpenCollective](https://opencollective.com/game-ci). You can support us at [OpenCollective](https://opencollective.com/game-ci).
## License ## Licence
This repository is [MIT](./LICENSE) licensed. This repository is [MIT](./LICENSE) licensed.

2669
dist/index.js generated vendored

File diff suppressed because it is too large Load Diff

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -65,14 +65,7 @@ elif [[ -n "$UNITY_LICENSING_SERVER" ]]; then
FLOATING_LICENSE=$(sed -n 2p <<< "$PARSEDFILE") FLOATING_LICENSE=$(sed -n 2p <<< "$PARSEDFILE")
FLOATING_LICENSE_TIMEOUT=$(sed -n 4p <<< "$PARSEDFILE") FLOATING_LICENSE_TIMEOUT=$(sed -n 4p <<< "$PARSEDFILE")
if [[ -z "$FLOATING_LICENSE" || -z "$FLOATING_LICENSE_TIMEOUT" ]]; then echo "Acquired floating license: \"$FLOATING_LICENSE\" with timeout $FLOATING_LICENSE_TIMEOUT"
echo "::error ::Failed to acquire floating license from Unity Licensing Server."
echo "Check the activation log below for more details."
cat license.txt
else
echo "Acquired floating license: \"$FLOATING_LICENSE\" with timeout $FLOATING_LICENSE_TIMEOUT"
fi
# Store the exit code from the verify command # Store the exit code from the verify command
else else
# #

View File

@ -36,25 +36,6 @@ echo "Using custom parameters $CUSTOM_PARAMETERS."
echo "Using Unity version \"$UNITY_VERSION\" to test." echo "Using Unity version \"$UNITY_VERSION\" to test."
#
# Setup token for private package registry.
#
if [ -n "$PRIVATE_REGISTRY_TOKEN" ]; then
echo "Private registry token detected, creating .upmconfig.toml"
UPM_CONFIG_TOML_PATH="$HOME/.upmconfig.toml"
echo "Creating toml at path: $UPM_CONFIG_TOML_PATH"
touch $UPM_CONFIG_TOML_PATH
cat > "$UPM_CONFIG_TOML_PATH" <<EOF
[npmAuth."$SCOPED_REGISTRY_URL"]
token = "$PRIVATE_REGISTRY_TOKEN"
alwaysAuth = true
EOF
fi
# #
# Create an empty project for testing if in package mode # Create an empty project for testing if in package mode
# #
@ -139,6 +120,20 @@ if [ "$PACKAGE_MODE" = "true" ]; then
UNITY_PROJECT_PATH="$TEMP_PROJECT_PATH" UNITY_PROJECT_PATH="$TEMP_PROJECT_PATH"
if [ -n "$PRIVATE_REGISTRY_TOKEN" ]; then
echo "Private registry token detected, creating .upmconfig.toml"
UPM_CONFIG_TOML_PATH="$HOME/.upmconfig.toml"
echo "Creating toml at path: $UPM_CONFIG_TOML_PATH"
touch $UPM_CONFIG_TOML_PATH
cat > "$UPM_CONFIG_TOML_PATH" <<EOF
[npmAuth."$SCOPED_REGISTRY_URL"]
token = "$PRIVATE_REGISTRY_TOKEN"
alwaysAuth = true
EOF
fi
fi fi
@ -285,4 +280,4 @@ if [ -d "$FULL_COVERAGE_RESULTS_PATH" ]; then
chmod -R a+r "$FULL_COVERAGE_RESULTS_PATH" chmod -R a+r "$FULL_COVERAGE_RESULTS_PATH"
else else
echo "Coverage results directory does not exist. If you are expecting coverage results, please make sure the Code Coverage package is installed in your unity project and that it is set up correctly." echo "Coverage results directory does not exist. If you are expecting coverage results, please make sure the Code Coverage package is installed in your unity project and that it is set up correctly."
fi fi

View File

@ -22,18 +22,9 @@ const ResultsCheck = {
files.map(async filepath => { files.map(async filepath => {
if (!filepath.endsWith('.xml')) return; if (!filepath.endsWith('.xml')) return;
core.info(`Processing file ${filepath}...`); core.info(`Processing file ${filepath}...`);
try { const fileData = await ResultsParser.parseResults(path.join(artifactsPath, filepath));
const content = fs.readFileSync(path.join(artifactsPath, filepath), 'utf8'); core.info(fileData.summary);
if (!content.includes('<test-run')) { runs.push(fileData);
// noinspection ExceptionCaughtLocallyJS
throw new Error('File does not appear to be a NUnit XML file');
}
const fileData = await ResultsParser.parseResults(path.join(artifactsPath, filepath));
core.info(fileData.summary);
runs.push(fileData);
} catch (error: any) {
core.warning(`Failed to parse ${filepath}: ${error.message}`);
}
}), }),
); );
@ -85,12 +76,10 @@ const ResultsCheck = {
const pullRequest = github.context.payload.pull_request; const pullRequest = github.context.payload.pull_request;
const headSha = (pullRequest && pullRequest.head.sha) || github.context.sha; const headSha = (pullRequest && pullRequest.head.sha) || github.context.sha;
// Check max length for https://github.com/game-ci/unity-test-runner/issues/214
const maxLength = 65_534; const maxLength = 65_534;
if (output.text.length > maxLength) { if (output.length > maxLength) {
core.warning(`Test details of ${output.text.length} surpass limit of ${maxLength}`); core.warning(`Output too long (${output.length}) truncating to ${maxLength}`);
output.text = output = output.slice(0, maxLength);
'Test details omitted from GitHub UI due to length. See console logs for details.';
} }
core.info(`Posting results for ${headSha}`); core.info(`Posting results for ${headSha}`);

View File

@ -248,13 +248,5 @@ at Tests.SetupFailedTest.SetUp () [0x00000] in /github/workspace/unity-project/A
expect(result.path).toBe('/github/workspace/unity-project/Assets/Tests/SetupFailedTest.cs'); expect(result.path).toBe('/github/workspace/unity-project/Assets/Tests/SetupFailedTest.cs');
expect(result.line).toBe(10); expect(result.line).toBe(10);
}); });
test('Debug.LogError annotation point', () => {
const result = ResultsParser.findAnnotationPoint(
`FMODUnity.RuntimeUtils:DebugLogError (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:580)`,
);
expect(result.path).toBe('Assets/Plugins/FMOD/src/RuntimeUtils.cs');
expect(result.line).toBe(580);
});
}); });
}); });

View File

@ -127,13 +127,12 @@ const ResultsParser = {
}, },
findAnnotationPoint(trace) { findAnnotationPoint(trace) {
const regex = /at(?: .* in)? ((?<path>[^:]+):(?<line>\d+))/;
// Find first entry with non-zero line number in stack trace // Find first entry with non-zero line number in stack trace
const items = trace.match(new RegExp(regex, 'g')); const items = trace.match(/at .* in ((?<path>[^:]+):(?<line>\d+))/g);
if (Array.isArray(items)) { if (Array.isArray(items)) {
const result: { path: any; line: number }[] = []; const result: { path: any; line: number }[] = [];
for (const item of items) { for (const item of items) {
const match = item.match(regex); const match = item.match(/at .* in ((?<path>[^:]+):(?<line>\d+))/);
const point = { const point = {
path: match ? match.groups.path : '', path: match ? match.groups.path : '',
line: match ? Number(match.groups.line) : 0, line: match ? Number(match.groups.line) : 0,
@ -147,7 +146,7 @@ const ResultsParser = {
} }
} }
// If all entries have zero line number match fallback pattern // If all entries have zero line number match fallback pattern
const match = trace.match(regex); const match = trace.match(/at .* in ((?<path>[^:]+):(?<line>\d+))/);
return { return {
path: match ? match.groups.path : '', path: match ? match.groups.path : '',
line: match ? Number(match.groups.line) : 0, line: match ? Number(match.groups.line) : 0,