tests #681
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
# Workflow for testing Spoon. | |
# | |
# Note that actions are specified by commit hash. This is to avoid the security | |
# risk of someone injecting malicious code into a release and then simply | |
# changing a tag. | |
name: tests | |
on: | |
pull_request: | |
branches: | |
- master | |
push: | |
branches: | |
- master | |
schedule: | |
- cron: "0 0 * * *" | |
env: | |
JAVA_DISTRIBUTION: temurin | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
java: [11, 17, 19, 20-ea] | |
os: [ubuntu-latest, windows-latest] | |
exclude: | |
- os: windows-latest | |
java: 17 | |
- os: windows-latest | |
java: 19 | |
- os: windows-latest | |
java: 20-ea | |
env: | |
MAVEN_OPTS: -Djava.src.version=${{ matrix.java }} -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false | |
name: Tests with Java ${{ matrix.java }} on ${{ matrix.os }} | |
steps: | |
- name: Disable Git's autocrlf | |
run: git config --global core.autocrlf false | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
- uses: actions/setup-java@3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98 # v3.10.0 | |
with: | |
java-version: ${{ matrix.java }} | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
- name: Get date for cache # see https://github.com/actions/cache README | |
id: get-date | |
run: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Use Maven dependency cache | |
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/pom.xml') }} | |
restore-keys: ${{ runner.os }}-maven- | |
- name: Use silent log config | |
run: mv chore/logback.xml src/test/resources/ | |
- name: Build | |
run: | | |
mvn -B test-compile | |
- name: Fetch final dependencies | |
# this is a hack to download the final test dependencies required to actually run the tests | |
run: timeout 20 mvn -B test || echo "Done fetching dependencies" | |
shell: bash | |
- name: Test | |
run: | |
mvn test | |
- name: print run tests | |
run: cat testResults.spoon | |
coverage: | |
runs-on: ubuntu-latest | |
env: | |
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false | |
name: Test with coverage | |
steps: | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
- uses: actions/setup-java@3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98 # v3.10.0 | |
with: | |
java-version: 17 | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
- name: Get date for cache # see https://github.com/actions/cache README | |
id: get-date | |
run: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Use Maven dependency cache | |
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/pom.xml') }} | |
restore-keys: ${{ runner.os }}-maven- | |
- name: Use silent log config | |
run: mv chore/logback.xml src/test/resources/ | |
- name: Build | |
run: | | |
mvn -B test-compile | |
- name: Test with coverage | |
run: mvn -Pcoveralls test jacoco:report coveralls:report -DrepoToken=$GITHUB_TOKEN -DserviceName=github -DpullRequest=$PR_NUMBER --fail-never | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PR_NUMBER: ${{ github.event.number }} | |
extra: | |
runs-on: ubuntu-latest | |
env: | |
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false | |
name: Extra checks | |
steps: | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98 # v3.10.0 | |
with: | |
java-version: 11 | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
- uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 | |
with: | |
python-version: 3.11 | |
- name: Get date for cache # see https://github.com/actions/cache README | |
id: get-date | |
run: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Use Maven dependency cache | |
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/pom.xml') }} | |
restore-keys: ${{ runner.os }}-maven- | |
- name: Use silent log config | |
run: mv chore/logback.xml src/test/resources/ | |
- name: Run extra checks | |
run: ./chore/ci-extra.sh | |
- name: Run Javadoc quality check | |
run: ./chore/check-javadoc-regressions.py COMPARE_WITH_MASTER | |
reproducible-builds: | |
runs-on: ubuntu-latest | |
env: | |
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false | |
name: reproducible-builds | |
steps: | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98 # v3.10.0 | |
with: | |
java-version: 17 | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
- name: Check status | |
run: chore/check-reproducible-builds.sh |