agmission/.gitea/workflows/run-tests.yaml
Devin Major d99ffa9b40
All checks were successful
Server Tests / Mocha – Unit & Utility Tests (push) Successful in 1m0s
fix cache error in build
2026-04-23 15:03:54 -04:00

90 lines
3.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Gitea Actions Server Tests
#
# Two jobs run on every push to any branch:
# 1. jest-integration Jest tests against the server's data methods (needs MongoDB)
# 2. mocha-unit Existing Mocha/Chai tests in tests/ and tests/utils/
#
# Prerequisites (Gitea repository secrets):
# DB_HOSTS MongoDB host(s), e.g. "127.0.0.1:27017"
# DB_NAME Must contain "test", e.g. "agmission_test"
# DB_USR MongoDB username
# DB_PWD MongoDB password
# DB_AUTH_SRC MongoDB auth source (default: "admin")
# TOKEN_SECRET JWT secret used by the server's auth helpers
name: Server Tests
on:
push:
branches:
- '**'
# ── Shared env-file step (inline, re-used by both jobs via heredoc) ──────────
jobs:
# ══════════════════════════════════════════════════════════════════════════
# Job 2: Mocha/Chai tests tests/ and tests/utils/
# These tests are self-contained unit tests that do not require MongoDB.
# ══════════════════════════════════════════════════════════════════════════
mocha-unit:
name: Mocha Unit & Utility Tests
runs-on: self-hosted
defaults:
run:
working-directory: Development/server
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
# Redirect the npm cache away from /root/.npm (root-owned on this runner)
# to a writable temp directory. Also clears any stale node_modules left
# by a previous run that the root-owned cache could not clean up.
- name: Fix npm cache permissions
run: |
mkdir -p /tmp/npm-cache
rm -rf node_modules || true
- name: Install dependencies
env:
NPM_CONFIG_CACHE: /tmp/npm-cache
run: npm ci
# Write a minimal env file so dotenv does not error on startup.
# These tests do not hit the database; DB_* values are placeholders.
- name: Write test environment file
run: |
cat > environment.env <<'EOF'
NODE_ENV=test
DB_HOSTS=127.0.0.1:27017
DB_NAME=agmission_test
DB_USR=
DB_PWD=
TOKEN_SECRET=${{ secrets.TOKEN_SECRET || 'ci-test-secret-not-for-production' }}
PRODUCTION=false
NO_EMAIL_MODE=true
ENABLE_SUBSCRIPTION=false
STRIPE_SEC_KEY=sk_test_placeholder
STRIPE_API_VERSION=2022-11-15
EOF
# Run all top-level test_*.js files (skips integration/ and satloc/ sub-dirs
# which are covered by the jest-integration job or need live connections).
- name: Run Mocha unit tests (tests/)
run: |
npx mocha --exit --timeout 120000 \
--require tests/setup.js \
'tests/test_*.js'
continue-on-error: false
# Run Mocha tests in tests/utils/
- name: Run Mocha utility tests (tests/utils/)
run: npm run test:utils
continue-on-error: false