From e31dcb3f90c4a4ede48a7669dfa1e41cc2ffe3e8 Mon Sep 17 00:00:00 2001 From: Naoto Ono Date: Mon, 29 Jan 2024 11:35:15 +0900 Subject: [PATCH] Add launchable integration --- .github/workflows/protocol.yml | 37 ++++++++++++++++++++++++++++++- .github/workflows/ruby-macos.yaml | 37 ++++++++++++++++++++++++++++++- .github/workflows/ruby.yml | 37 ++++++++++++++++++++++++++++++- .github/workflows/test_test.yml | 37 ++++++++++++++++++++++++++++++- Gemfile | 1 + test/support/test_case.rb | 2 ++ 6 files changed, 147 insertions(+), 4 deletions(-) diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index 755557039..984819287 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -6,6 +6,17 @@ on: pull_request: branches: [ master ] +env: + # GITHUB_PULL_REQUEST_URL are used for commenting test reports in Launchable Github App. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/link.py#L42 + GITHUB_PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }} + # The following envs are necessary in Launchable tokenless authentication. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L20 + LAUNCHABLE_ORGANIZATION: "ruby" + LAUNCHABLE_WORKSPACE: "debug" + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L71 + GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + jobs: test: @@ -18,6 +29,27 @@ jobs: steps: - uses: actions/checkout@v4 + with: + # Set fetch-depth: 0 so that Launchable can receive commits information. + fetch-depth: 0 + # Launchable requires Python and Java + # https://www.launchableinc.com/docs/resources/cli-reference/ + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Set up JDK 1.8 + uses: actions/setup-java@v3 + with: + distribution: 'adopt' + java-version: '8' + # Setup Launchable + - name: Launchable - install command + run: pip install launchable + - name: Launchable - verify + run: launchable verify + - name: Launchable - record build + run: launchable record build --name ${GITHUB_PR_HEAD_SHA} + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -27,4 +59,7 @@ jobs: run: | bundle exec rake clobber bundle exec rake compile - bundle exec rake test_protocol + TESTOPTS="--runner=junitxml --junitxml-output-file=protocol.xml" bundle exec rake test_protocol + - name: Launchable - record tests + run: launchable record tests --flavor test=protocol --flavor os=ubuntu-latest --flavor ruby=${{ matrix.ruby-version }} file protocol.xml + if: always() diff --git a/.github/workflows/ruby-macos.yaml b/.github/workflows/ruby-macos.yaml index 4b04e8647..97a072686 100644 --- a/.github/workflows/ruby-macos.yaml +++ b/.github/workflows/ruby-macos.yaml @@ -6,6 +6,17 @@ on: pull_request: branches: [ master ] +env: + # GITHUB_PULL_REQUEST_URL are used for commenting test reports in Launchable Github App. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/link.py#L42 + GITHUB_PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }} + # The following envs are necessary in Launchable tokenless authentication. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L20 + LAUNCHABLE_ORGANIZATION: "ruby" + LAUNCHABLE_WORKSPACE: "debug" + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L71 + GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + jobs: test: @@ -18,6 +29,27 @@ jobs: steps: - uses: actions/checkout@v4 + with: + # Set fetch-depth: 0 so that Launchable can receive commits information. + fetch-depth: 0 + # Launchable requires Python and Java + # https://www.launchableinc.com/docs/resources/cli-reference/ + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Set up JDK 1.8 + uses: actions/setup-java@v3 + with: + distribution: 'adopt' + java-version: '8' + # Setup Launchable + - name: Launchable - install command + run: pip install launchable + - name: Launchable - verify + run: launchable verify + - name: Launchable - record build + run: launchable record build --name ${GITHUB_PR_HEAD_SHA} + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -27,4 +59,7 @@ jobs: run: | bundle exec rake clobber bundle exec rake compile - bundle exec rake test_console + TESTOPTS="--runner=junitxml --junitxml-output-file=ruby-macos.xml" bundle exec rake test_console + - name: launchable record tests + run: launchable record tests --flavor test=console --flavor os=macos-latest --flavor ruby=${{ matrix.ruby-version }} file ruby-macos.xml + if: always() diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index dd76ced54..c5052e5fd 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -6,6 +6,17 @@ on: pull_request: branches: [ master ] +env: + # GITHUB_PULL_REQUEST_URL are used for commenting test reports in Launchable Github App. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/link.py#L42 + GITHUB_PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }} + # The following envs are necessary in Launchable tokenless authentication. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L20 + LAUNCHABLE_ORGANIZATION: "ruby" + LAUNCHABLE_WORKSPACE: "debug" + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L71 + GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + jobs: test: @@ -18,6 +29,27 @@ jobs: steps: - uses: actions/checkout@v4 + with: + # Set fetch-depth: 0 so that Launchable can receive commits information. + fetch-depth: 0 + # Launchable requires Python and Java + # https://www.launchableinc.com/docs/resources/cli-reference/ + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Set up JDK 1.8 + uses: actions/setup-java@v3 + with: + distribution: 'adopt' + java-version: '8' + # Setup Launchable + - name: Launchable - install command + run: pip install launchable + - name: Launchable - verify + run: launchable verify + - name: Launchable - record build + run: launchable record build --name ${GITHUB_PR_HEAD_SHA} + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -27,4 +59,7 @@ jobs: run: | bundle exec rake clobber bundle exec rake compile - bundle exec rake test_console + TESTOPTS="--runner=junitxml --junitxml-output-file=ruby.xml" bundle exec rake test_console + - name: launchable record tests + run: launchable record tests --flavor test=console --flavor os=ubuntu-latest --flavor ruby=${{ matrix.ruby-version }} file ruby.xml + if: always() diff --git a/.github/workflows/test_test.yml b/.github/workflows/test_test.yml index 3123697fe..ab6d90c74 100644 --- a/.github/workflows/test_test.yml +++ b/.github/workflows/test_test.yml @@ -6,6 +6,17 @@ on: pull_request: branches: [ master ] +env: + # GITHUB_PULL_REQUEST_URL are used for commenting test reports in Launchable Github App. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/link.py#L42 + GITHUB_PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }} + # The following envs are necessary in Launchable tokenless authentication. + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L20 + LAUNCHABLE_ORGANIZATION: "ruby" + LAUNCHABLE_WORKSPACE: "debug" + # https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L71 + GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + jobs: test: @@ -18,6 +29,27 @@ jobs: steps: - uses: actions/checkout@v4 + with: + # Set fetch-depth: 0 so that Launchable can receive commits information. + fetch-depth: 0 + # Launchable requires Python and Java + # https://www.launchableinc.com/docs/resources/cli-reference/ + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Set up JDK 1.8 + uses: actions/setup-java@v3 + with: + distribution: 'adopt' + java-version: '8' + # Setup Launchable + - name: Launchable - install command + run: pip install launchable + - name: Launchable - verify + run: launchable verify + - name: Launchable - record build + run: launchable record build --name ${GITHUB_PR_HEAD_SHA} + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -27,4 +59,7 @@ jobs: run: | bundle exec rake clobber bundle exec rake compile - bundle exec rake test_test + TESTOPTS="--runner=junitxml --junitxml-output-file=test_test.xml" bundle exec rake test_test + - name: launchable record tests + run: launchable record tests --flavor test=test-framework --flavor os=ubuntu-latest --flavor ruby=${{ matrix.ruby-version }} file test_test.xml + if: always() diff --git a/Gemfile b/Gemfile index c59ccbe1a..50630d1e8 100644 --- a/Gemfile +++ b/Gemfile @@ -7,3 +7,4 @@ gem "rake-compiler" gem "test-unit", "~> 3.0" gem "test-unit-rr" gem "json-schema" +gem "test-unit-runner-junitxml" diff --git a/test/support/test_case.rb b/test/support/test_case.rb index fae5b9f58..5725e8df2 100644 --- a/test/support/test_case.rb +++ b/test/support/test_case.rb @@ -7,6 +7,8 @@ require 'timeout' require 'json' require 'rbconfig' +# "test/unit/runner/junitxml" is used for reporting test result in JUnit XML format. +require "test/unit/runner/junitxml" require_relative '../../lib/debug/client' require_relative 'assertions'