aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.github/workflows/test.yml115
1 files changed, 39 insertions, 76 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 5136072..b0c63ba 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -9,105 +9,68 @@ on:
workflow_dispatch:
jobs:
- test:
+ cygwin:
strategy:
- fail-fast: false
matrix:
platform: [x86, x64]
- cygwin: [0, 1]
hardlinks: [0, 1]
- os: [ubuntu-18.04, ubuntu-20.04, ubuntu-latest, windows-2016, windows-2019, windows-latest]
-
- include:
- # Prettier run names.
- - {os: ubuntu-18.04, name: Ubuntu 18.04}
- - {os: ubuntu-20.04, name: Ubuntu 20.04}
- - {os: ubuntu-latest, name: Ubuntu (latest)}
- - {os: windows-2016, name: Windows Server 2016}
- - {os: windows-2019, name: Windows Server 2019}
- - {os: windows-latest, name: Windows Server (latest)}
- - {cygwin: 1, name: Cygwin}
- exclude:
- # No Cygwin on Ubuntu.
- - {os: ubuntu-18.04, cygwin: 1}
- - {os: ubuntu-20.04, cygwin: 1}
- - {os: ubuntu-latest, cygwin: 1}
- # Cygwin is the same on all Windows Server versions.
- - {os: windows-2016, cygwin: 1}
- - {os: windows-2019, cygwin: 1}
- # Only test hardlinks on Cygwin.
- - {cygwin: 0, hardlinks: 1}
+ runs-on: windows-latest
+ name: 'Cygwin: ${{ matrix.platform }} / hardlinks${{ matrix.hardlinks }}'
+ defaults:
+ run:
+ shell: pwsh
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Install Cygwin
+ uses: egor-tensin/setup-cygwin@v3
+ - name: Set up MinGW
+ id: setup
+ uses: ./
+ with:
+ platform: '${{ matrix.platform }}'
+ cygwin: 1
+ cc: 1
+ hardlinks: '${{ matrix.hardlinks }}'
+ - name: Build foo.exe
+ run: |
+ & '${{ steps.setup.outputs.gxx }}' -std=c++14 -o foo foo.cpp
+ - name: Run foo.exe
+ uses: ./.github/actions/run-foo
+ - name: Check cc/c++
+ uses: ./.github/actions/check-cc
+ if: matrix.hardlinks
+ - name: Check cc/c++
+ uses: ./.github/actions/check-cc-cygwin
+ if: '!matrix.hardlinks'
+ test:
+ strategy:
+ matrix:
+ platform: [x86, x64]
+ os: [ubuntu-18.04, ubuntu-20.04, ubuntu-latest, windows-2016, windows-2019, windows-latest]
runs-on: '${{ matrix.os }}'
-
- name: '${{ matrix.name }} / ${{ matrix.platform }} / Hardlinks: ${{ matrix.hardlinks }}'
-
+ name: 'Test: ${{ matrix.os }} / ${{ 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@v3
- if: matrix.cygwin
-
- name: Set up MinGW
id: setup
uses: ./
with:
platform: '${{ matrix.platform }}'
- cygwin: '${{ matrix.cygwin }}'
cc: 1
- hardlinks: '${{ matrix.hardlinks }}'
-
- name: Build foo.exe
run: |
- $flags = '-std=c++14','-o','foo','foo.cpp'
- & '${{ steps.setup.outputs.gxx }}' $flags
-
+ & '${{ steps.setup.outputs.gxx }}' -std=c++14 -o foo foo.cpp
- name: Run foo.exe
- run: |
- $expected = @"
- Doing something #1
- Doing something #2
- Doing something #3
- "@
-
- $actual = & (Join-Path . foo.exe)
- $actual = $actual -join [Environment]::NewLine
-
- $($actual -eq $expected) -or $(throw @"
- Unexpected output:
- $actual
- "@)
+ uses: ./.github/actions/run-foo
if: runner.os == 'Windows'
-
- # Is this really the most stable piece of `gcc --version` output?
- name: Check cc/c++
- run: |
- echo (Get-Command cc).Path
- $cc = & cc --version
- echo $cc
- $($cc | Select-String -Pattern "This is free software; see the source for copying conditions." -SimpleMatch -Quiet) -or $(throw "Unexpected `cc --version` output")
- echo (Get-Command c++).Path
- $cxx = & c++ --version
- echo $cxx
- $($cxx | Select-String -Pattern "This is free software; see the source for copying conditions." -SimpleMatch -Quiet) -or $(throw "Unexpected `c++ --version` output")
- if: '!matrix.cygwin || matrix.hardlinks'
-
- - name: Check cc/c++ on Cygwin
- run: |
- $cc = bash.exe --login -o errexit -c 'cc --version'
- echo $cc
- $($cc | Select-String -Pattern "This is free software; see the source for copying conditions." -SimpleMatch -Quiet) -or $(throw "Unexpected `cc --version` output")
- $cxx = bash.exe --login -o errexit -c 'c++ --version'
- echo $cxx
- $($cxx | Select-String -Pattern "This is free software; see the source for copying conditions." -SimpleMatch -Quiet) -or $(throw "Unexpected `c++ --version` output")
- if: matrix.cygwin && !matrix.hardlinks
+ uses: ./.github/actions/check-cc