Skip to content

Adjust codegen to allow custom mainargs.TokensReaders and exercise it via example tests for Bundle Libraries docs #93

Adjust codegen to allow custom mainargs.TokensReaders and exercise it via example tests for Bundle Libraries docs

Adjust codegen to allow custom mainargs.TokensReaders and exercise it via example tests for Bundle Libraries docs #93

Workflow file for this run

name: Run Tests
# We run full CI on push builds to main and on all pull requests
#
# Manual builds (workflow_dispatch) to the main branch are also published
#
# To maximize bug-catching changes while keeping CI times reasonable, we run:
# - All tests on Linux/Java17
# - Fewer tests on Linux/Java11 and Windows/Java17
# - Fewest tests on Windows/Java11
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
# cancel older runs of a pull request;
# this will not cancel anything for normal git pushes
concurrency:
group: cancel-old-pr-runs-${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
# Jobs are listed in rough order of priority: if multiple jobs fail, the first job
# in the list should be the one that's most worth looking into
build-linux:
uses: ./.github/workflows/run-mill-action.yml
with:
java-version: '11'
millargs: __.compile
populate_cache: true
build-windows:
uses: ./.github/workflows/run-mill-action.yml
with:
os: windows-latest
java-version: '11'
millargs: __.compile
populate_cache: true
test-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- run: ./mill -i docs.githubPages
linux:
needs: build-linux
strategy:
fail-fast: false
matrix:
include:
# For most tests, run them arbitrarily on Java 11 or Java 17 on Linux, and
# on the opposite version on Windows below, so we get decent coverage of
# each test on each Java version and each operating system
# We also try to group tests together to manuaully balance out the runtimes of each jobs
- java-version: 17
millargs: "'{main,scalalib,testrunner,bsp,testkit}.__.testCached'"
- java-version: '11'
millargs: "'{scalajslib,scalanativelib}.__.testCached'"
- java-version: 17
millargs: "contrib.__.testCached"
- java-version: 17
millargs: "'example.javalib.__.local.testCached'"
- java-version: 17
millargs: "'example.scalalib.__.local.testCached'"
- java-version: '11'
millargs: "'example.thirdparty[{mockito,acyclic,commons-io}].local.testCached'"
- java-version: 17
millargs: "'example.thirdparty[{fansi,jimfs,netty,gatling}].local.testCached'"
- java-version: '11'
millargs: "'example.{depth,extending}.__.local.testCached'"
# Most of these integration tests should not depend on which mode they
# are run in, so just run them in `local`
- java-version: '11'
millargs: "'integration.{failure,feature,ide}.__.local.testCached'"
# These invalidation tests need to be exercised in both execution modes
# to make sure they work with and without -i/--no-server being passed
- java-version: 17
millargs: "'integration.invalidation.__.fork.testCached'"
- java-version: 17
millargs: "'integration.invalidation.__.server.testCached'"
uses: ./.github/workflows/run-mill-action.yml
with:
java-version: ${{ matrix.java-version }}
millargs: ${{ matrix.millargs }}
windows:
needs: build-windows
strategy:
fail-fast: false
matrix:
include:
# just run a subset of examples/ on Windows, because for some reason running
# the whole suite can take hours on windows v.s. half an hour on linux
- java-version: '11'
millargs: '"{main,scalalib,bsp}.__.testCached"'
- java-version: '11'
millargs: '"example.scalalib.{basic,web}.__.fork.testCached"'
- java-version: 17
millargs: "'integration.{feature,failure}[_].fork.testCached'"
- java-version: '11'
millargs: "'integration.invalidation[_].server.testCached'"
- java-version: '11'
millargs: "contrib.__.testCached"
uses: ./.github/workflows/run-mill-action.yml
with:
os: windows-latest
java-version: ${{ matrix.java-version }}
millargs: ${{ matrix.millargs }}
itest:
needs: build-linux
strategy:
fail-fast: false
matrix:
include:
# bootstrap tests
- java-version: '11' # Have one job on oldest JVM
buildcmd: ci/test-mill-dev.sh && ci/test-mill-release.sh && ./mill -i -k __.ivyDepsTree && ./mill -i -k __.ivyDepsTree --withRuntime
- java-version: 17 # Have one job on default JVM
buildcmd: ci/test-mill-bootstrap.sh
uses: ./.github/workflows/run-mill-action.yml
with:
java-version: ${{ matrix.java-version }}
buildcmd: ${{ matrix.buildcmd }}
# Rarely breaks so run it near the end
compiler-bridge:
needs: build-linux
uses: ./.github/workflows/run-mill-action.yml
with:
java-version: '11'
millargs: bridge.__.publishLocal
env-bridge-versions: 'essential'
# Scalafmt, Mima, and Scalafix job runs last because it's the least important:
# usually just a automated or mechanical manual fix to do before merging
lint-autofix:
needs: build-linux
uses: ./.github/workflows/run-mill-action.yml
with:
java-version: '11'
buildcmd: ./mill -i mill.scalalib.scalafmt.ScalafmtModule/checkFormatAll __.sources + __.mimaReportBinaryIssues + __.fix --check