Skip to content

joergbrech/moxunit-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

MOxUnit action

GitHub Marketplace Test codecov

This action performs unit tests for GNU Octave and Matlab using the unit testing framework MOxUnit. Documentation tests and coverage reports are supported via MOdox and MOCov.

Container

This action uses the qmrlab/octaveci:latest docker image which contains GNU-Octave 5.2.0 and the following packages/versions:

Package Name    | Version | Installation directory
----------------+---------+-----------------------
       control  |   3.2.0 | /usr/share/octave/packages/control-3.2.0
data-smoothing  |   1.3.0 | /usr/share/octave/packages/data-smoothing-1.3.0
     dataframe  |   1.2.0 | /usr/share/octave/packages/dataframe-1.2.0
         dicom  |   0.2.2 | /usr/share/octave/packages/dicom-0.2.2
     financial  |   0.5.3 | /usr/share/octave/packages/financial-0.5.3
         image  |  2.12.0 | /usr/share/octave/packages/image-2.12.0
            io  |  2.4.13 | /usr/share/octave/packages/io-2.4.13
         optim  |   1.6.0 | /usr/share/octave/packages/optim-1.6.0
      parallel  |   3.1.3 | /usr/share/octave/packages/parallel-3.1.3
    statistics  |   1.4.1 | /usr/share/octave/packages/statistics-1.4.1
       strings  |   1.2.0 | /usr/share/octave/packages/strings-1.2.0
        struct  |  1.0.16 | /usr/share/octave/packages/struct-1.0.16

Usage

CI-beginner github example

  1. at your github repo click on the "Actions" button or go to https://github.com/[user]/[repo]/actions
  2. add a new workflow by clicking on "New workflow"
  3. click on "set up a workflow yourself" to create you .yml configuration file
  4. paste this: (where mySimpleTest1.m is a test script of function placed in your repo)
name: moxunittest

on:
 push:
   branches: [ main ]
 pull_request:
   branches: [ main ]

jobs:
 build:
   runs-on: ubuntu-latest
   steps:
     - uses: actions/checkout@v2
     - uses: joergbrech/moxunit-action@v1
       with:
         tests: mySimpleTest1.m
  1. commit the change and go back to actions to check the build status.

CI-non-beginner user

In the simplest case

steps:
 - uses: actions/checkout@v2
 - uses: joergbrech/moxunit-action@v1

runs all MOxUnit test cases found in this repository. A more complex use case could look like this:

steps:
- uses: actions/checkout@v2
 - uses: joergbrech/moxunit-action@v1
  with:
    tests: tests my_extra_testfile.m
    src: src thirdparty util
    with_coverage: true
    doc_tests: true
    cover_xml_file: coverage.xml
- uses: codecov/codecov-action@v1
  with:
    file: ./coverage.xml

To use your test data along with Octave packages, you can see this example configuration file.

Arguments

All file and directory paths are interpreted as relative to the working directory, which defaults to the Github Workspace. Optionally, the working-directory can be changed with the argument working_directory, see below.

Input Description Usage
tests files or directories containing the MOxUnit test cases Optional, defaults to the root directory of the repo. All subdirectories are added recursively.
src directories to be added to the Octave search path before running the tests. These directories will be considered in the coverage reports, if coverage is enabled. Optional
data Directory for test data Optional
pkg Octave packages to load. Available options: image io optim parallel statistics struct Optional
ext External resources to add to the search put (excluded from coverage) Optional
log_file store the output in file output Optional
doc_tests set to true to run documentation tests with MOdox Optional
with_coverage set to true to record coverage using MOCov Optional
cover_xml_file store coverage XML output in file Optional
cover_html_dir store coverage HTML output in directory Optional
cover_junit_xml_file store test results in junit XML file Optional
cover_json_file store coverage report in json file for processing by coveralls.io Optional
working_directory relative path to a working directory under the github workspace, defaults to .. Optional