Run automated tests #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run automated tests | |
# Controls when the action will run. | |
on: | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
release: | |
name: "Run all tests" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
env: | |
CHOOSENIM_CHOOSE_VERSION: stable | |
CHOOSENIM_NO_ANALYTICS: 1 | |
steps: | |
# Cancel other actions of the same type that might be already running | |
- name: "Cancel similar actions in progress" | |
uses: styfle/cancel-workflow-action@0.9.1 | |
with: | |
access_token: ${{ github.token }} | |
# Detects OS and provide Nim-friendly OS identifiers | |
- name: Detect current OS | |
id: os | |
run: echo "os=${{matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-latest' && 'macosx' || matrix.os == 'windows-latest' && 'windows'}}" >> $GITHUB_OUTPUT | |
# Checks out the repository | |
- uses: actions/checkout@v2 | |
# Installs libraries | |
- name: install musl-gcc | |
run: sudo apt-get install -y musl-tools | |
if: matrix.os == 'ubuntu-latest' | |
# Sets path (Linux, macOS) | |
- name: Update $PATH | |
run: echo "$HOME/.nimble/bin" >> $GITHUB_PATH | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' | |
# Sets path (Windows) | |
- name: Update %PATH% | |
run: echo "${HOME}/.nimble/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
if: matrix.os == 'windows-latest' | |
- name: Setup Msys2 | |
if: matrix.os == 'windows-latest' | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
release: true | |
update: true | |
path-type: inherit | |
install: >- | |
base-devel | |
autotools | |
mingw-w64-x86_64-perl-locale-maketext | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-autotools | |
# Install the Nim compiler and dependencies | |
- name: Install Nim and deps | |
run: | | |
curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh | |
sh init.sh -y | |
# Build for Linux | |
- name: Build (Linux) | |
run: nimble build -y -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc -d:ssl -d:useOpenSsl3 --opt:size | |
if: matrix.os == 'ubuntu-latest' | |
# Build for Windows | |
- name: Build (Windows) | |
shell: msys2 {0} | |
run: nimble build -v -y -d:release --mm:refc --opt:size -d:ssl --gcc.exe:x86_64-w64-mingw32-gcc --gcc.linkerexe:x86_64-w64-mingw32-gcc min | |
if: matrix.os == 'windows-latest' | |
# Build for macOS | |
- name: Build (macOS) | |
run: nimble build -y -d:release -d:ssl -d:useOpenSsl3 --opt:size | |
if: matrix.os == 'macos-latest' | |
# UPX compress (*nix) | |
- name: UPX | |
uses: svenstaro/upx-action@v2 | |
with: | |
files: | | |
min | |
args: --best --force | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' | |
# UPX compress (Windows) | |
- name: UPX | |
uses: svenstaro/upx-action@v2 | |
with: | |
files: | | |
min.exe | |
args: --best --force | |
if: matrix.os == 'windows-latest' | |
- uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9 # 1.6.0 | |
id: downloadCaCertPem # Remember to give an ID if you need the output filename | |
name: Fix Windows certs issue https://forum.nim-lang.org/t/7551 | |
with: | |
url: "https://curl.se/ca/cacert.pem" | |
target: . | |
if: matrix.os == 'windows-latest' | |
# Install tests deps | |
- name: Install tests deps | |
run: cd ./tests && ../min install | |
# Test (*nix) | |
- name: Test | |
run: ./min tests/all.min | |
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' | |
# Test (Windows) | |
- name: Test | |
run: .\min.exe tests/all.min | |
if: matrix.os == 'windows-latest' |