name: Test on: workflow_call: inputs: dfhack_ref: type: string scripts_ref: type: string structures_ref: type: string jobs: build-windows: name: Windows MSVC uses: ./.github/workflows/build-windows.yml with: dfhack_ref: ${{ inputs.dfhack_ref }} scripts_ref: ${{ inputs.scripts_ref }} structures_ref: ${{ inputs.structures_ref }} artifact-name: test-msvc cache-id: test docs: true html: false tests: true build-linux: name: Linux gcc-${{ matrix.gcc }} uses: ./.github/workflows/build-linux.yml with: dfhack_ref: ${{ inputs.dfhack_ref }} scripts_ref: ${{ inputs.scripts_ref }} structures_ref: ${{ inputs.structures_ref }} artifact-name: test-gcc-${{ matrix.gcc }} cache-id: test stonesense: ${{ matrix.plugins == 'all' }} extras: ${{ matrix.plugins == 'all' }} docs: true html: false tests: true gcc-ver: ${{ matrix.gcc }} secrets: inherit strategy: fail-fast: false matrix: include: - gcc: 10 plugins: "default" - gcc: 12 plugins: "all" run-tests: name: Test (${{ matrix.os }}, ${{ matrix.compiler }}, ${{ matrix.plugins }} plugins, ${{ matrix.config }} config) needs: - build-windows - build-linux runs-on: ${{ matrix.os }}-latest strategy: fail-fast: false matrix: include: - os: windows compiler: msvc plugins: "default" config: "default" - os: windows compiler: msvc plugins: "default" config: "empty" # TODO: uncomment once we have a linux build we can download from bay12 # - os: ubuntu # compiler: gcc-10 # plugins: "default" # config: "default" # - os: ubuntu # compiler: gcc-12 # plugins: "all" # config: "default" steps: - name: Set env shell: bash run: echo "DF_FOLDER=DF" >> $GITHUB_ENV - name: Clone DFHack uses: actions/checkout@v3 with: repository: ${{ inputs.dfhack_ref && github.repository || 'DFHack/dfhack' }} ref: ${{ inputs.dfhack_ref }} - name: Detect DF version shell: bash run: echo DF_VERSION="$(sh ci/get-df-version.sh)" >> $GITHUB_ENV - name: Fetch DF cache id: restore-df uses: actions/cache/restore@v3 with: path: ${{ env.DF_FOLDER }} key: df-${{ matrix.os }}-${{ env.DF_VERSION }}-${{ hashFiles('ci/download-df.sh') }} - name: Download DF if: steps.restore-df.outputs.cache-hit != 'true' run: sh ci/download-df.sh ${{ env.DF_FOLDER }} ${{ matrix.os }} ${{ env.DF_VERSION }} - name: Save DF cache if: steps.restore-df.outputs.cache-hit != 'true' uses: actions/cache/save@v3 with: path: ${{ env.DF_FOLDER }} key: df-${{ matrix.os }}-${{ env.DF_VERSION }}-${{ hashFiles('ci/download-df.sh') }} - name: Install blank DFHack init scripts if: matrix.config == 'empty' shell: bash run: | mkdir -p ${{ env.DF_FOLDER }}/dfhack-config/init cd data/dfhack-config/init for fname in *.init; do touch ../../../${{ env.DF_FOLDER }}/dfhack-config/init/$fname; done - name: Install DFHack uses: actions/download-artifact@v3 with: name: test-${{ matrix.compiler }} path: ${{ env.DF_FOLDER }} - name: Run lua tests timeout-minutes: 10 run: python ci/run-tests.py --keep-status "${{ env.DF_FOLDER }}" - name: Check RPC interface run: python ci/check-rpc.py "${{ env.DF_FOLDER }}/dfhack-rpc.txt" - name: Upload test artifacts uses: actions/upload-artifact@v3 if: always() continue-on-error: true with: name: test-output-${{ matrix.compiler }}-${{ matrix.plugins }}_plugins-${{ matrix.config }}_config path: | ${{ env.DF_FOLDER }}/dfhack-rpc.txt ${{ env.DF_FOLDER }}/test*.json ${{ env.DF_FOLDER }}/*.log