diff --git a/.github/workflows/id-tests.yml b/.github/workflows/id-tests.yml new file mode 100644 index 0000000..41f0c4d --- /dev/null +++ b/.github/workflows/id-tests.yml @@ -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 diff --git a/tools/run-id-tests.js b/tools/run-id-tests.js new file mode 100644 index 0000000..2504e2e --- /dev/null +++ b/tools/run-id-tests.js @@ -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);