88 lines
3.1 KiB
YAML
88 lines
3.1 KiB
YAML
name: SOP interoperability test suite
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
jobs:
|
|
|
|
test-suite:
|
|
name: Run interoperability test suite
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: ghcr.io/protonmail/openpgp-interop-test-docker:v1.1.1
|
|
credentials:
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.github_token }}
|
|
steps:
|
|
# check out repo for scripts
|
|
- uses: actions/checkout@v3
|
|
# check out pull request branch
|
|
- name: Checkout openpgpjs-branch
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: openpgpjs-branch
|
|
- name: Install openpgpjs-branch
|
|
run: cd openpgpjs-branch && npm install
|
|
- name: Print openpgpjs-branch version
|
|
run: $SOP_OPENPGPJS version --extended
|
|
env:
|
|
OPENPGPJS_PATH: ${{ github.workspace }}/openpgpjs-branch
|
|
# check out main branch
|
|
- name: Checkout openpgpjs-main
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: main
|
|
path: openpgpjs-main
|
|
- name: Install openpgpjs-main
|
|
run: cd openpgpjs-main && npm install
|
|
- name: Print openpgpjs-main version
|
|
run: $SOP_OPENPGPJS version --extended
|
|
env:
|
|
OPENPGPJS_PATH: ${{ github.workspace }}/openpgpjs-main
|
|
# Run test suite
|
|
- name: Prepare test configuration
|
|
run: ./.github/test-suite/prepare_config.sh $CONFIG_TEMPLATE $CONFIG_OUTPUT $GITHUB_WORKSPACE/openpgpjs-branch $GITHUB_WORKSPACE/openpgpjs-main
|
|
env:
|
|
CONFIG_TEMPLATE: .github/test-suite/config.json.template
|
|
CONFIG_OUTPUT: .github/test-suite/config.json
|
|
- name: Display configuration
|
|
run: cat .github/test-suite/config.json
|
|
- name: Run interoperability test suite
|
|
run: cd $TEST_SUITE_DIR && $TEST_SUITE --config $GITHUB_WORKSPACE/$CONFIG --json-out $GITHUB_WORKSPACE/$RESULTS_JSON --html-out $GITHUB_WORKSPACE/$RESULTS_HTML
|
|
env:
|
|
CONFIG: .github/test-suite/config.json
|
|
RESULTS_JSON: .github/test-suite/test-suite-results.json
|
|
RESULTS_HTML: .github/test-suite/test-suite-results.html
|
|
# Upload results
|
|
- name: Upload test results json artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-suite-results.json
|
|
path: .github/test-suite/test-suite-results.json
|
|
- name: Upload test results html artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-suite-results.html
|
|
path: .github/test-suite/test-suite-results.html
|
|
|
|
compare-with-main:
|
|
name: Compare with main
|
|
runs-on: ubuntu-latest
|
|
needs: test-suite
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Download test results json artifact
|
|
id: download-test-results
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: test-suite-results.json
|
|
- name: Compare with baseline
|
|
uses: ProtonMail/openpgp-interop-test-analyzer@v1
|
|
with:
|
|
results: ${{ steps.download-test-results.outputs.download-path }}/test-suite-results.json
|
|
output: baseline-comparison.json
|
|
baseline: sop-openpgpjs-main
|
|
target: sop-openpgpjs-main
|