feat: Add ID tests to CI (#456)

* tools: Add script to run ID tests

* ci: Add game ID tests

* tools/id-tests: Import games directly from file

* ci/id: Update ID tests to official repo

* ci/id: Cache rust deps even if tests fail

* Add newlines
This commit is contained in:
Tom 2024-01-14 21:17:11 +00:00 committed by GitHub
parent 6ecb809512
commit 68f9c01886
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 0 deletions

36
.github/workflows/id-tests.yml vendored Normal file
View File

@ -0,0 +1,36 @@
name: ID tests
on:
push:
paths:
- "lib/games.js"
- ".github/workflows/id-tests.yml" # This action
pull_request:
paths:
- "lib/games.js"
- ".github/workflows/id-tests.yml" # This action
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Cache rust dependencies
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: 'true'
- name: Install ID tester
run: cargo install --git https://github.com/gamedig/rust-gamedig.git gamedig-id-tests
- name: Run ID tests
run: node tools/run-id-tests.js

18
tools/run-id-tests.js Normal file
View File

@ -0,0 +1,18 @@
import { spawnSync } from 'node:child_process';
import process from 'node:process';
// Import directly from file so that this script works without dependencies installed.
import { games } from './../lib/games.js';
const ID_TEST_BIN = process.env["GAMEDIG_ID_TESTER"] || "gamedig-id-tests";
const result = spawnSync(ID_TEST_BIN, {
input: JSON.stringify(games),
stdio: ['pipe', 'inherit', 'inherit'],
});
if (result.error) {
throw result.error;
}
process.exit(result.status);