Merge pull request #47 from matlab-actions/bash_issue_fix #393
This file contains 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
name: Build and Test | |
on: [push] | |
jobs: | |
bat: | |
name: Build and Test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
- name: Perform npm tasks | |
run: npm run ci | |
- name: Perform 'setup-matlab' | |
uses: matlab-actions/setup-matlab@v2 | |
- name: Create buildfile.m in project root for tests | |
run: | | |
cat <<'_EOF' >> "buildfile.m" | |
function plan = buildfile | |
plan = buildplan(localfunctions); | |
plan("test").Dependencies = "build"; | |
plan("deploy").Dependencies = "test"; | |
plan.DefaultTasks = "test"; | |
function buildTask(~) | |
f = fopen('buildlog.txt', 'a+'); fprintf(f, 'building\n'); fclose(f); | |
function testTask(~,tests,options) | |
arguments | |
~ | |
tests string = "tests" | |
options.OutputDetail (1,1) string = "terse" | |
end | |
f = fopen('buildlog.txt', 'a+'); | |
fprintf(f, 'testing\n'); | |
fprintf(f, '%s\n', tests); | |
fprintf(f, '%s\n', options.OutputDetail); | |
fclose(f); | |
function deployTask(~) | |
f = fopen('buildlog.txt', 'a+'); fprintf(f, 'deploying\n'); fclose(f); | |
function checkTask(~) | |
f = fopen('buildlog.txt', 'a+'); fprintf(f, 'checking\n'); fclose(f); | |
function errorTask(~) | |
f = fopen('buildlog.txt', 'a+'); fprintf(f, 'erroring\n'); fclose(f); | |
error('Error occured in errorTask'); | |
_EOF | |
- name: Run build with default tasks | |
uses: ./ | |
- name: Verify correct tasks appear in buildlog.txt | |
run: | | |
set -e | |
grep "building" buildlog.txt | |
grep "testing" buildlog.txt | |
grep "tests" buildlog.txt | |
grep "terse" buildlog.txt | |
! grep "deploying" buildlog.txt | |
! grep "checking" buildlog.txt | |
rm buildlog.txt | |
- name: Run build with specified task | |
uses: ./ | |
with: | |
tasks: deploy | |
- name: Verify correct tasks appear in buildlog.txt | |
run: | | |
set -e | |
grep "building" buildlog.txt | |
grep "testing" buildlog.txt | |
grep "tests" buildlog.txt | |
grep "terse" buildlog.txt | |
grep "deploying" buildlog.txt | |
! grep "checking" buildlog.txt | |
rm buildlog.txt | |
- name: Run build with multiple specified tasks | |
uses: ./ | |
with: | |
tasks: deploy check | |
- name: Verify correct tasks appear in buildlog.txt | |
run: | | |
set -e | |
grep "building" buildlog.txt | |
grep "testing" buildlog.txt | |
grep "tests" buildlog.txt | |
grep "terse" buildlog.txt | |
grep "deploying" buildlog.txt | |
grep "checking" buildlog.txt | |
rm buildlog.txt | |
- name: Run build with task args | |
uses: ./ | |
with: | |
tasks: test("myTests", OutputDetail="concise") | |
- name: Verify correct tasks appear in buildlog.txt | |
run: | | |
set -e | |
grep "building" buildlog.txt | |
grep "testing" buildlog.txt | |
grep "myTests" buildlog.txt | |
grep "concise" buildlog.txt | |
! grep "deploying" buildlog.txt | |
! grep "checking" buildlog.txt | |
rm buildlog.txt | |
- name: Run build with startup options | |
uses: ./ | |
with: | |
startup-options: -logfile console.log | |
- name: Verify tasks appear in buildlog.txt and console.log | |
run: | | |
set -e | |
grep "building" buildlog.txt | |
grep "build" console.log | |
grep "testing" buildlog.txt | |
grep "tests" buildlog.txt | |
grep "terse" buildlog.txt | |
grep "test" console.log | |
! grep "deploying" buildlog.txt | |
! grep "deploy" console.log | |
! grep "checking" buildlog.txt | |
! grep "check" console.log | |
rm buildlog.txt | |
rm console.log | |
- name: Run build with task skipping | |
uses: ./ | |
with: | |
tasks: deploy | |
build-options: -skip test | |
- name: Verify correct tasks appear in buildlog.txt | |
run: | | |
set -e | |
grep "building" buildlog.txt | |
! grep "testing" buildlog.txt | |
! grep "tests" buildlog.txt | |
! grep "terse" buildlog.txt | |
grep "deploying" buildlog.txt | |
! grep "checking" buildlog.txt | |
rm buildlog.txt | |
- name: Run build with continue on failure | |
continue-on-error: true | |
uses: ./ | |
with: | |
tasks: error deploy | |
build-options: -continueOnFailure | |
- name: Verify correct tasks appear in buildlog.txt | |
run: | | |
set -e | |
grep "erroring" buildlog.txt | |
grep "building" buildlog.txt | |
grep "testing" buildlog.txt | |
grep "tests" buildlog.txt | |
grep "terse" buildlog.txt | |
grep "deploying" buildlog.txt | |
! grep "checking" buildlog.txt | |
rm buildlog.txt | |
- name: Run build with startup options | |
continue-on-error: true | |
uses: ./ | |
with: | |
tasks: deploy error | |
build-options: -continueOnFailure | |
startup-options: -logfile console.log | |
- name: Verify workflow command is added | |
run: | | |
grep "::group::deploy" console.log | |
grep "::error::error task failed" console.log | |
rm console.log | |
- name: Run build with invalid task | |
continue-on-error: true | |
uses: ./ | |
with: | |
tasks: badTask | |
build-options: -continueOnFailure | |
startup-options: -logfile console.log | |
- name: Verify summary exception for invalid task | |
run: | | |
set -e | |
! grep "while reading the build summary file:" console.log | |
! grep "trying to delete the build summary" console.log | |
rm console.log |