diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/test.yml | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..dc8e74f --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,78 @@ +name: Test + +on: + push: + pull_request: + schedule: + # Weekly, at 5:45 AM on Friday (somewhat randomly chosen). + - cron: '45 5 * * 5' + workflow_dispatch: + +jobs: + test: + strategy: + fail-fast: false + matrix: + platform: [x86, x64] + cygwin: [0, 1] + os: [ubuntu-18.04, windows-2019, windows-2016] + + include: + # Prettier run names. + - {os: ubuntu-18.04, name: Ubuntu} + - {os: windows-2019, name: Windows Server 2019} + - {os: windows-2016, name: Windows Server 2016} + - {cygwin: 1, name: Cygwin} + exclude: + # No Cygwin on Ubuntu. + - {os: ubuntu-18.04, cygwin: 1} + # Cygwin is the same on Windows Server 2016 & 2019. + - {os: windows-2016, cygwin: 1} + + runs-on: '${{ matrix.os }}' + + name: '${{ matrix.name }} / ${{ matrix.platform }}' + + defaults: + run: + shell: pwsh + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Clean up PATH + uses: egor-tensin/cleanup-path@v1 + if: runner.os == 'Windows' + + - name: Install Cygwin + uses: egor-tensin/setup-cygwin@master + with: + platform: '${{ matrix.platform }}' + if: matrix.cygwin + + - name: Set up Clang + id: setup + uses: ./ + with: + platform: '${{ matrix.platform }}' + cygwin: '${{ matrix.cygwin }}' + + - name: Build foo.exe + run: | + $flags = @() + if ('${{ matrix.platform }}' -eq 'x86') { + $flags += '-m32' + } + $flags += @( + '-x', 'c++', + '-std=c++14', + '-o', 'foo', + 'foo.cpp', + '-lstdc++' + ) + if ('${{ runner.os }}' -eq 'Linux') { + $flags += '-lpthread' + } + & '${{ steps.setup.outputs.clangxx }}' $flags + & (Join-Path . foo) |