all repos — min @ e83858037a0cfda0e8157051ed24821d0d6d7ffe

A small but practical concatenative programming language.

.github/workflows/test.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
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-13
                    - 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-13' && '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-13' || 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-13'

            # UPX compress (linux) 
            - name: UPX
              uses: svenstaro/upx-action@v2
              with:
                files: |
                  min
                args: --best --force
              if: matrix.os == 'ubuntu-latest'
            
            # UPX compress (macosx) 
            - name: UPX
              uses: svenstaro/upx-action@v2
              with:
                files: |
                  min
                args: --best --force-macos
              if: matrix.os == 'macos-13'

            # 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-13' || matrix.os == 'ubuntu-latest'

            # Test (Windows)
            - name: Test
              run: .\min.exe tests/all.min
              if: matrix.os == 'windows-latest'