sal/docs/rhai/ci_workflow.md
Mahmoud Emad 4578b10acb
Some checks failed
Rhai Tests / Run Rhai Tests (push) Waiting to run
Rhai Tests / Run Rhai Tests (pull_request) Has been cancelled
ci: Add CI workflow for Rhai tests
- Added a GitHub Actions workflow to automatically run Rhai tests on
  push and pull request events.
- Created documentation for the CI workflow.
- Improved test runner script to log output to a file and check for
  test failures.
2025-05-08 15:09:16 +03:00

2.7 KiB

Continuous Integration for Rhai Tests

This document describes the continuous integration (CI) workflow for running Rhai tests in the SAL library.

GitHub Actions Workflow

The SAL project includes a GitHub Actions workflow that automatically runs all Rhai tests whenever changes are made to relevant files. This ensures that the Rhai integration continues to work correctly as the codebase evolves.

Workflow File

The workflow is defined in .github/workflows/rhai-tests.yml.

Trigger Events

The workflow runs automatically when:

  1. Changes are pushed to the main or master branch that affect:

    • Rhai test scripts (src/rhai_tests/**)
    • Rhai module code (src/rhai/**)
    • Git module code (src/git/**)
    • OS module code (src/os/**)
    • The test runner script (run_rhai_tests.sh)
    • The workflow file itself (.github/workflows/rhai-tests.yml)
  2. A pull request is opened or updated that affects the same files.

  3. The workflow is manually triggered using the GitHub Actions interface.

Workflow Steps

The workflow performs the following steps:

  1. Checkout Code: Checks out the repository code.
  2. Set up Rust: Installs the Rust toolchain.
  3. Cache Dependencies: Caches Rust dependencies to speed up builds.
  4. Build herodo: Builds the herodo binary used to run Rhai scripts.
  5. Install Dependencies: Installs system dependencies like Git and curl.
  6. Run Rhai Tests: Runs the run_rhai_tests.sh script to execute all Rhai tests.
  7. Check for Failures: Verifies that all tests passed.

Test Results

The workflow will fail if any Rhai test fails. This prevents changes that break the Rhai integration from being merged.

Local Testing

Before pushing changes, you can run the same tests locally using the run_rhai_tests.sh script:

./run_rhai_tests.sh

This will produce the same test results as the CI workflow, allowing you to catch and fix issues before pushing your changes.

Logs

The test runner script creates a log file (run_rhai_tests.log) that contains the output of all tests. This log is used by the CI workflow to check for test failures.

Adding New Tests

When adding new tests, make sure they are included in the appropriate module's test runner script (run_all_tests.rhai). The CI workflow will automatically run the new tests.

Troubleshooting

If the CI workflow fails, check the GitHub Actions logs for details. Common issues include:

  1. Missing Dependencies: Ensure all required dependencies are installed.
  2. Test Failures: Fix any failing tests.
  3. Build Errors: Fix any errors in the Rust code.

If you need to modify the workflow, edit the .github/workflows/rhai-tests.yml file.