Home
Softono
gdUnit4-action

gdUnit4-action

Open source MIT JavaScript
60
Stars
10
Forks
0
Issues
1
Watchers
2 months
Last Commit

About gdUnit4-action

The official GdUnit4 GitHub Action automates running unit tests for Godot Engine 4.x projects in CI/CD pipelines. It supports both GDScript testing through GdUnit4 and C testing through GdUnit4Net, compatible with Godot standard and .NET versions 4.0.0 and above, including stable, RC, and dev builds. Key features include configurable Godot and GdUnit4 versions, custom test paths, adjustable timeouts and retry attempts, and support for both standard and mono Godot builds. It requires .NET SDK 7.0 or 8.0 for C testing and works best on Ubuntu GitHub Actions runners. Typical usage involves adding the action to a workflow YAML file, specifying the Godot version and test directory. The action handles environment setup, test execution, and reporting automatically. Use cases include automated testing on push and pull request events, integration with existing CI/CD pipelines, and enforcing code quality standards in game development teams working on Godot 4.x projects.

Platforms

Web Self-hosted

Languages

JavaScript

GdUnit4 Action

License GitHub release badge CI/CD Discord

This GitHub Action automates the execution of GdUnit4 (GDScript) and GdUnit4Net (CSharpScript) unit tests within the Godot Engine 4.x environment. It provides flexibility in configuring the Godot version, GdUnit4 version, test paths, and other parameters to suit your testing needs.

Table of Contents

Requirements

Godot Compatibility

  • Godot 4.x (4.0.0 and above)
  • Both standard and .NET versions supported
  • Tested with stable, RC, and dev builds

For C# Testing

  • .NET SDK 7.0 or 8.0
  • Godot .NET version

System Requirements

  • GitHub Actions runner (Ubuntu latest recommended)
  • Git with LFS support for larger projects

Quick Start

Basic GDScript testing:

name: GdUnit4 Tests
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: godot-gdunit-labs/gdUnit4-action@v1
        with:
          godot-version: '4.2.1'
          paths: 'res://tests'

Usage

The action can be configured using various inputs to suit your testing needs. Here's a basic usage pattern:

- uses: godot-gdunit-labs/gdUnit4-action@v1
  with:
    godot-version: '4.2.1'       # Required: Godot version to use
    paths: 'res://tests'         # Required: Test directory
    timeout: 10                  # Optional: Test timeout in minutes
    version: 'latest'            # Optional: GdUnit4 version

Configuration

Essential Parameters

Parameter Required Default Description
paths Yes Test directories (comma/newline-separated)

Godot Configuration

Parameter Required Default Description
godot-version Yes Godot version (e.g., "4.2.1")
godot-status No stable Godot status (stable/rc1/dev1)
godot-net No false Enable Godot .NET for C# tests
godot-force-mono No false Force using Godot Net to run GDScript tests

.NET Configuration

Parameter Required Default Description
dotnet-version No net8.0 .NET version (net7.0/net8.0)
console-verbosity No minimal Console logger verbosity for C# tests (quiet/minimal/normal/detailed/diagnostic)

Test Configuration

Parameter Required Default Description
version No latest The GdUnit4 version to use (GDScript plugin)
timeout No 10 Test timeout (minutes)
retries No 0 Number of retry attempts
arguments No Additional GdUnit4 arguments
warnings-as-errors No false Treat test warnings as errors

Reporting Configuration

Parameter Required Default Description
publish-report No true Enable test report publishing
upload-report No true Enable report artifact upload
report-name No test-report.xml Report filename

Examples

Basic GDScript Testing

- uses: godot-gdunit-labs/gdUnit4-action@v1
  with:
    godot-version: '4.2.1'
    paths: 'res://tests'

Testing with Warnings threaded as Errors

- uses: godot-gdunit-labs/gdUnit4-action@v1
  with:
     godot-version: '4.2.1'
     paths: 'res://tests'
     warnings-as-errors: true  # Fail the build on test warnings

C# Testing with .NET 8.0

- uses: godot-gdunit-labs/gdUnit4-action@v1
  with:
    godot-version: '4.2.1'
    godot-net: true
    paths: 'res://tests'
    console-verbosity: 'normal'  # Optional: increase output detail

Matrix Testing

jobs:
  test:
    strategy:
      matrix:
        godot-version: ['4.1.3', '4.2.1']
        dotnet-version: ['net7.0', 'net8.0']
    steps:
      - uses: godot-gdunit-labs/gdUnit4-action@v1
        with:
          godot-version: ${{ matrix.godot-version }}
          godot-net: true
          dotnet-version: ${{ matrix.dotnet-version }}
          paths: 'res://tests'

Testing with Retries and Custom Arguments

- uses: godot-gdunit-labs/gdUnit4-action@v1
  with:
    godot-version: '4.2.1'
    paths: 'res://tests'
    retries: 3
    arguments: '--verbose --fail-fast'

Custom Project Structure

For projects with non-standard layout:

root/
  ├── MyProject/
  │   ├── src/
  │   └── tests/
- uses: godot-gdunit-labs/gdUnit4-action@v1
  with:
    godot-version: '4.2.1'
    project_dir: './MyProject/'
    paths: 'res://tests'

Troubleshooting

Common Issues

  1. Test Discovery Failures

    • Ensure test paths are correct and use res:// prefix
    • Check file permissions on test directories
  2. C# Test Issues

    • Verify correct .NET SDK version
    • Check Godot .NET compatibility
    • Ensure proper project structure
  3. Timeout Issues

    • Increase timeout value for large test suites
    • Consider splitting tests across multiple jobs

Debug Logging

For GDScript tests, enable verbose output by adding --verbose to the arguments:

arguments: '--verbose'

For C# tests, control console output verbosity with console-verbosity (default: minimal):

godot-net: true
console-verbosity: 'normal'    # Options: quiet, minimal, normal, detailed, diagnostic
arguments: '--verbose'          # For Godot engine debug output

Performance Optimization

Caching

The action automatically caches:

  • Godot binaries
  • .NET packages
  • Project cache

Best Practices

  1. Use specific versions instead of 'latest'
  2. Optimize test discovery paths
  3. Implement parallel test execution where possible
  4. Use appropriate timeout values

Security

Fork Considerations

When running tests from forked repositories:

  1. Set publish-report: false to avoid permission issues
  2. Use custom report-name for artifact identification
  3. Be cautious with sensitive test data

FAQ

Q: Which Godot versions are supported?

A: All Godot 4.x versions are supported, including stable, RC, and dev builds.

Q: Can I test both GDScript and C# in the same workflow?

A: Yes, use separate jobs or matrix testing with different configurations.

Q: How do I handle flaky tests?

A: Use the retries parameter to automatically retry failed tests.

Q: How do I handle test warnings?

A: By default, warnings will be reported but won't fail the build. Use warnings-as-errors: true to treat warnings as failures.

Related Projects

Contributing

We welcome contributions! Please see our contribution guidelines for details.

You're Welcome To

License

This project is released under the MIT License.

Contributors

Contributors