diff --git a/.github/workflows/d.yml b/.github/workflows/d.yml index 62d8bb5..abd8c60 100644 --- a/.github/workflows/d.yml +++ b/.github/workflows/d.yml @@ -15,20 +15,42 @@ permissions: jobs: build: - - runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + dc: [dmd, ldc] + include: + - { os: ubuntu-latest, dc: gdc-14 } + runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 - - uses: dlang-community/setup-dlang@4c99aa991ce7d19dd3064de0a4f2f6b2f152e2d7 + - uses: actions/checkout@v4 + - uses: dlang-community/setup-dlang@v2 + with: + compiler: ${{ matrix.dc }} + dub: latest + + - name: Setup gdc specific environment + if: ${{ startsWith(matrix.dc, 'gdc') }} + run: | + tee -a ${GITHUB_ENV} <<<"DC=${DMD}" + # Linking errors without -allinst + # No other easy way to pass this to dub, using DFLAGS in the + # environment disables unittests + cat <<-EOF | sudo tee -a /etc/dmd.conf + [Environment] + DFLAGS=-allinst + EOF - - name: 'Build & Test' - run: | - # Build the project, with its main file included, without unittests - dub build --compiler=$DC - # Build and run tests, as defined by `unittest` configuration - # In this mode, `mainSourceFile` is excluded and `version (unittest)` are included - # See https://dub.pm/package-format-json.html#configurations - dub test --compiler=$DC - # Run tests - cd tests && rdmd test + - name: 'Build & Test' + shell: bash + run: | + # Build the project, with its main file included, without unittests + dub build + # Build and run tests, as defined by `unittest` configuration + # In this mode, `mainSourceFile` is excluded and `version (unittest)` are included + # See https://dub.pm/package-format-json.html#configurations + dub test + # Run tests + cd tests && "${DMD}" -run test.d