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