# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: D on: push: branches: [ "master" ] pull_request: branches: [ "master" ] permissions: contents: read jobs: build: 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@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' 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