Merge pull request #2909 from OpenC3/sessions #5511
This file contains hidden or 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
| # Copyright 2026 OpenC3, Inc. | |
| # All Rights Reserved. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
| # See LICENSE.md for more details. | |
| # This file may also be used under the terms of a commercial license | |
| # if purchased from OpenC3, Inc. | |
| name: API Tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - "**" | |
| env: | |
| RUBYOPT: --disable=frozen_string_literal | |
| RUBYGEMS_URL: https://rubygems.org | |
| BUNDLE_WITHOUT: development | |
| OPENC3_REDIS_USERNAME: openc3 | |
| OPENC3_REDIS_PASSWORD: openc3password | |
| OPENC3_REDIS_HOSTNAME: 127.0.0.1 | |
| OPENC3_REDIS_PORT: 6379 | |
| OPENC3_REDIS_EPHEMERAL_HOSTNAME: 127.0.0.1 | |
| OPENC3_REDIS_EPHEMERAL_PORT: 6380 | |
| OPENC3_SERVICE_PASSWORD: openc3service | |
| jobs: | |
| cmd-tlm-api: | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| ruby-version: ["3.4"] | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| # Only needed for SonarQube Scan | |
| # with: | |
| # fetch-depth: 0 # all history for all branches and tags | |
| - name: Set up Ruby ${{ matrix.ruby-version }} | |
| uses: ruby/setup-ruby@v1 | |
| env: | |
| OPENC3_DEVEL: ../openc3 | |
| with: | |
| ruby-version: ${{ matrix.ruby-version }} | |
| bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
| working-directory: openc3-cosmos-cmd-tlm-api | |
| - name: Build OpenC3 | |
| run: bundle install; bundle exec rake build | |
| working-directory: openc3 | |
| env: | |
| OPENC3_DEVEL: ${GITHUB_WORKSPACE}/openc3 | |
| - name: Run cmd-tlm-api tests | |
| run: bundle exec rspec | |
| working-directory: openc3-cosmos-cmd-tlm-api | |
| env: | |
| OPENC3_DEVEL: ../openc3 | |
| - uses: codecov/codecov-action@v5 | |
| with: | |
| directory: openc3-cosmos-cmd-tlm-api/coverage | |
| flags: ruby-api # See codecov.yml | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| # Attempt at using separate SonarQube Scan task | |
| # - name: Store coverage report | |
| # uses: actions/upload-artifact@v6 | |
| # with: | |
| # name: cmd-tlm-api-${{ matrix.ruby-version }} | |
| # path: openc3-cosmos-cmd-tlm-api/coverage/coverage.json | |
| script-runner-api-ruby: | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| # Note that the report-coverage job needs this value hard coded | |
| ruby-version: ["3.4"] | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| # Only needed for SonarQube Scan | |
| # with: | |
| # fetch-depth: 0 | |
| - name: Set up Ruby ${{ matrix.ruby-version }} | |
| uses: ruby/setup-ruby@v1 | |
| env: | |
| OPENC3_DEVEL: ../openc3 | |
| with: | |
| ruby-version: ${{ matrix.ruby-version }} | |
| bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
| working-directory: openc3-cosmos-script-runner-api | |
| - name: Build OpenC3 | |
| run: bundle install; bundle exec rake build | |
| working-directory: openc3 | |
| - name: Run script-runner-api tests | |
| run: bundle exec rspec | |
| working-directory: openc3-cosmos-script-runner-api | |
| env: | |
| OPENC3_DEVEL: ../openc3 | |
| - uses: codecov/codecov-action@v5 | |
| with: | |
| directory: openc3-cosmos-script-runner-api/coverage | |
| flags: ruby-api # See codecov.yml | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| # - name: Store coverage report | |
| # uses: actions/upload-artifact@v6 | |
| # with: | |
| # name: script-runner-api-ruby-${{ matrix.ruby-version }} | |
| # path: openc3-cosmos-script-runner-api/coverage/coverage.json | |
| script-runner-api-python: | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.11", "3.12", "3.13"] | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| # Only needed for SonarQube Scan | |
| # with: | |
| # fetch-depth: 0 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7 | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ matrix.python-version }} | |
| - name: Set up Python ${{ matrix.python-version }} | |
| run: uv python install ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: uv sync --frozen | |
| working-directory: openc3/python | |
| - name: Run unit tests | |
| run: | | |
| uv run --frozen coverage run -m pytest ../../openc3-cosmos-script-runner-api/test/ | |
| uv run --frozen coverage xml -i | |
| working-directory: openc3/python | |
| - uses: codecov/codecov-action@v5 | |
| with: | |
| working-directory: openc3/python | |
| flags: python # See codecov.yml | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| # - name: Store coverage report | |
| # uses: actions/upload-artifact@v6 | |
| # with: | |
| # name: script-runner-api-python-${{ matrix.python-version }} | |
| # path: openc3/python/coverage.xml | |
| # This was an attempt to use SonarQube to report coverage | |
| # It is currently disabled because we reverted to Automatic Analysis | |
| # report-coverage: | |
| # needs: [cmd-tlm-api, script-runner-api-ruby, script-runner-api-python] | |
| # runs-on: ubuntu-latest | |
| # permissions: | |
| # contents: read | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # with: | |
| # fetch-depth: 0 | |
| # - name: Download coverage reports | |
| # uses: actions/download-artifact@v4 | |
| # - name: SonarQube Scan | |
| # uses: SonarSource/sonarqube-scan-action@v5 | |
| # with: | |
| # args: > | |
| # -Dsonar.organization=openc3 | |
| # -Dsonar.projectKey=OpenC3_cosmos | |
| # -Dsonar.python.coverage.reportPaths=script-runner-api-python-3.12/coverage.xml | |
| # -Dsonar.ruby.coverage.reportPaths=cmd-tlm-api-3.3/coverage.json,script-runner-api-ruby-3.3/coverage.json | |
| # -Dsonar.sources=openc3/lib,openc3/python,openc3-cosmos-cmd-tlm-api/app,openc3-cosmos-script-runner-api/app,openc3-cosmos-script-runner-api/scripts | |
| # -Dsonar.tests=openc3-cosmos-cmd-tlm-api/spec,openc3-cosmos-script-runner-api/spec,openc3-cosmos-script-runner-api/test | |
| # -Dsonar.test.exclusions=openc3-cosmos-cmd-tlm-api/spec/fixtures/**/* | |
| # env: | |
| # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} |