diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 393d4c4..d5ae20b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,9 +13,10 @@ jobs: test: name: CI strategy: + fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macOS-latest] - dc: [dmd-latest, ldc-latest] + dc: [dmd-latest, ldc-latest, dmd-2.079.0, ldc-1.9.0, ldc-1.17.0] arch: [x86_64] config: [select, epoll, cfrunloop, winapi] exclude: @@ -25,6 +26,14 @@ jobs: - {os: macOS-latest, config: winapi} - {os: windows-latest, config: cfrunloop} - {os: windows-latest, config: epoll} + # macOS fails up to FE 2.086.x, so we test on a slightly newer + # version instead + # "dyld: lazy symbol binding failed: Symbol not found: _dyld_enumerate_tlv_storage" + - {os: macOS-latest, dc: dmd-2.079.0} + - {os: macOS-latest, dc: ldc-1.9.0} + - {os: windows-latest, dc: ldc-1.9.0, config: select} + - {os: windows-latest, dc: ldc-1.17.0} + - {os: ubuntu-latest, dc: ldc-1.17.0} runs-on: ${{ matrix.os }} steps: @@ -38,5 +47,6 @@ jobs: - name: Run tests env: CONFIG: ${{matrix.config}} + ARCH: ${{matrix.arch}} shell: bash - run: ./travis-ci.sh + run: ./run-ci.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7c6062d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,50 +0,0 @@ -language: d - -os: - - linux - - osx - -d: - # order: latest DMD, oldest DMD, LDC/GDC, remaining DMD versions - # this way the overall test time gets cut down (GDC/LDC are a lot - # slower tham DMD, so they should be started early), while still - # catching most DMD version related build failures early - # latest 4 versions plus the oldest supported version should be present - - dmd-2.087.1 - - dmd-2.078.3 - - ldc-1.17.0 - - ldc-1.16.0 - - ldc-1.15.0 - - ldc-1.14.0 - - ldc-1.9.0 - - dmd-2.086.1 - - dmd-2.085.1 - - dmd-2.084.1 - - dmd-2.079.0 - - dmd-beta - -env: - - CONFIG=select - - CONFIG=epoll - - CONFIG=cfrunloop - - CONFIG=libasync - -matrix: - allow_failures: - - d: dmd-beta - include: - - os: osx - d: ldc - env: CONFIG=kqueue - exclude: - - env: CONFIG=libasync - - os: osx - env: CONFIG=epoll - - os: linux - env: CONFIG=cfrunloop - - os: osx - d: dmd-beta - -script: ./travis-ci.sh - -sudo: false diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 8f73b8f..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,156 +0,0 @@ -platform: x64 -environment: - matrix: - - DC: dmd - DVersion: 2.087.1 - arch: x64 - config: winapi - - DC: dmd - DVersion: 2.087.1 - arch: x86 - config: winapi-optlink - - DC: dmd - DVersion: 2.087.1 - arch: x86_mscoff - config: winapi - - DC: dmd - DVersion: 2.086.1 - arch: x64 - config: winapi - - DC: dmd - DVersion: 2.085.1 - arch: x86_mscoff - config: winapi - - DC: dmd - DVersion: 2.084.1 - arch: x86 - config: winapi-optlink - - DC: dmd - DVersion: 2.083.1 - arch: x64 - config: winapi - - DC: dmd - DVersion: 2.079.0 - arch: x64 - config: winapi - - DC: ldc - DVersion: 1.17.0 - arch: x64 - config: winapi - - DC: ldc - DVersion: 1.16.0 - arch: x64 - config: winapi - - DC: ldc - DVersion: 1.15.0 - arch: x64 - config: winapi - - DC: ldc - DVersion: 1.14.0 - arch: x86 - config: winapi - - DC: ldc - DVersion: 1.9.0 - arch: x64 - config: winapi - -matrix: - allow_failures: - - CONFIG: libasync - -skip_tags: false -branches: - only: - - master - -install: - - ps: function SetUpDCompiler - { - if($env:DC -eq "dmd"){ - if($env:arch -eq "x86"){ - $env:DConf = "m32"; - } - elseif($env:arch -eq "x64"){ - $env:DConf = "m64"; - } - echo "downloading ..."; - $env:toolchain = "msvc"; - $version = $env:DVersion; - Invoke-WebRequest "http://downloads.dlang.org/releases/2.x/$($version)/dmd.$($version).windows.7z" -OutFile "c:\dmd.7z"; - echo "finished."; - pushd c:\\; - 7z x dmd.7z > $null; - popd; - } - elseif($env:DC -eq "ldc"){ - echo "downloading ..."; - if($env:arch -eq "x86"){ - $env:DConf = "m32"; - } - elseif($env:arch -eq "x64"){ - $env:DConf = "m64"; - } - $env:toolchain = "msvc"; - $version = $env:DVersion; - if ([System.Version]$version -lt [System.Version]"1.7.0") { - Invoke-WebRequest "https://github.com/ldc-developers/ldc/releases/download/v$($version)/ldc2-$($version)-win64-msvc.zip" -OutFile "c:\ldc.zip"; - echo "finished."; - pushd c:\\; - 7z x ldc.zip > $null; - popd; - } - else { - Invoke-WebRequest "https://github.com/ldc-developers/ldc/releases/download/v$($version)/ldc2-$($version)-windows-multilib.7z" -OutFile "c:\ldc.7z"; - echo "finished."; - pushd c:\\; - 7z x ldc.7z > $null; - popd; - } - } - } - - ps: SetUpDCompiler - - powershell -Command [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest "https://github.com/dlang/dub/releases/download/v1.7.2/dub-1.7.2-windows-x86.zip" -OutFile dub.zip - - 7z x dub.zip -odub > nul - - set PATH=%CD%\%binpath%;%CD%\dub;%PATH% - - dub --version - -before_build: - - ps: if($env:arch -eq "x86"){ - $env:compilersetupargs = "x86"; - $env:Darch = "x86"; - } - elseif($env:arch -eq "x86_mscoff"){ - $env:compilersetupargs = "x86"; - $env:Darch = "x86_mscoff"; - } - elseif($env:arch -eq "x64"){ - $env:compilersetupargs = "amd64"; - $env:Darch = "x86_64"; - } - - ps : if($env:DC -eq "dmd"){ - $env:PATH += ";C:\dmd2\windows\bin;"; - } - elseif($env:DC -eq "ldc"){ - $version = $env:DVersion; - if ([System.Version]$version -lt [System.Version]"1.7.0") { - $env:PATH += ";C:\ldc2-$($version)-win64-msvc\bin"; - } else { - $env:PATH += ";C:\ldc2-$($version)-windows-multilib\bin"; - } - $env:DC = "ldc2"; - } - - ps: $env:compilersetup = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall"; - - '"%compilersetup%" %compilersetupargs%' - -build_script: - - dub build -b release --arch=%Darch% --compiler=%DC% --config=%CONFIG% - - echo dummy build script - dont remove me - -test_script: - - echo %PLATFORM% - - echo %Darch% - - echo %DC% - - echo %PATH% - - '%DC% --version' - - dub test --arch=%Darch% --compiler=%DC% --config=%CONFIG% - - for %%i in (tests\*.d) do echo %%i && dub --single %%i --arch=%Darch% --compiler=%DC% --override-config eventcore/%CONFIG% || exit /B 1 diff --git a/travis-ci.sh b/run-ci.sh similarity index 51% rename from travis-ci.sh rename to run-ci.sh index 83bbb4a..f2b1f44 100755 --- a/travis-ci.sh +++ b/run-ci.sh @@ -3,19 +3,19 @@ set -e -x -o pipefail # test for successful release build -dub build -b release --compiler=$DC -c $CONFIG +dub build -b release --arch=$ARCH --compiler=$DC -c $CONFIG # test for successful 32-bit build if [ "$DC" == "ldc2" ]; then dub build --arch=x86 --compiler=ldc2 -c $CONFIG fi -dub test --compiler=$DC -c $CONFIG +dub test --arch=$ARCH --compiler=$DC -c $CONFIG if [ ${BUILD_EXAMPLE=1} -eq 1 ]; then for ex in $(\ls -1 examples/*.d); do echo "[INFO] Building example $ex" - dub build --compiler=$DC --override-config eventcore/$CONFIG --single $ex + dub build --arch=$ARCH --compiler=$DC --override-config eventcore/$CONFIG --single $ex done rm -rf examples/.dub/ rm -f examples/*-example @@ -24,6 +24,8 @@ fi if [ ${RUN_TEST=1} -eq 1 ]; then for ex in `\ls -1 tests/*.d`; do echo "[INFO] Running test $ex" - dub --temp-build --compiler=$DC --override-config eventcore/$CONFIG --single $ex + # NOTE: timer and directory watcher tests tend to be flaky on macOS VMs + dub --temp-build --arch=$ARCH --compiler=$DC --override-config eventcore/$CONFIG --single $ex \ + || dub --temp-build --arch=$ARCH --compiler=$DC --override-config eventcore/$CONFIG --single $ex done fi