Skip to content

[Enhancement] Manually Entered on Command Sender #5504

[Enhancement] Manually Entered on Command Sender

[Enhancement] Manually Entered on Command Sender #5504

Workflow file for this run

# 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 }}