-
Notifications
You must be signed in to change notification settings - Fork 4
/
action.yml
81 lines (72 loc) · 2.81 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
name: 'Run package tests'
description: 'Run package tests'
inputs:
NO_COVERAGE:
description: 'set to a non-empty string to suppress gathering coverage'
required: false
type: string
default: ''
GAP_TESTFILE:
description: 'Name of the GAP file to be read for executing the package tests (overrides TestFile in PackageInfo.g)'
required: false
type: string
default: ''
only-needed:
description: 'If set to true then only needed dependencies of the package being tested are loaded'
required: false
type: boolean
default: false
env:
CHERE_INVOKING: 1
runs:
using: "composite"
steps:
- name: "Run tests"
run: |
set -ex
GAPROOT=${GAPROOT-$HOME/gap}
# set up a custom GAP root containing only this package, so that
# we can force GAP to load the correct version of this package
# (we already did that in build_pkg.sh, but we do it again here,
# to allow the occasional instance where a package wants to also
# run the tests of others packages, by invoking this script multiple
# times in different directories)
mkdir -p /tmp/gaproot/pkg/
ln -f -s $PWD /tmp/gaproot/pkg/
# start GAP with custom GAP root, to ensure correct package version is loaded
GAP="$GAPROOT/gap -l /tmp/gaproot; --quitonbreak"
if ${{ inputs.only-needed }} = 'true' ; then
GAP="$GAP -A"
fi
# Unless explicitly turned off by setting the NO_COVERAGE environment variable,
# we collect coverage data
if [[ -z "${{ inputs.NO_COVERAGE }}" ]]; then
mkdir -p ${COVDIR-coverage}
GAP="$GAP --cover ${COVDIR-coverage}/$(mktemp XXXXXX).coverage"
fi
cat > __TEST_RUNNNER__.g <<EOF
GAP_TESTFILE:="${{ inputs.GAP_TESTFILE }}";
Read("PackageInfo.g");
info := GAPInfo.PackageInfoCurrent;
if IsEmpty(GAP_TESTFILE) or not IsExistingFile(GAP_TESTFILE) then
GAP_TESTFILE := info.TestFile;
fi;
# Load the package with debug info
SetInfoLevel(InfoPackageLoading, PACKAGE_DEBUG);
SetPackagePath(info.PackageName, "/tmp/gaproot/pkg/$(basename $PWD)");
if ${{ inputs.only-needed }} = true then
LoadPackage(info.PackageName : OnlyNeeded);
else
LoadPackage(info.PackageName);
fi;
SetInfoLevel(InfoPackageLoading, PACKAGE_ERROR);
Print("Now running tests from ", GAP_TESTFILE, "\n");
if EndsWith(GAP_TESTFILE, ".tst") then
QUIT_GAP(Test(GAP_TESTFILE, rec(compareFunction := "uptowhitespace")));
else
Read(GAP_TESTFILE);
Error("Package TestFile did not exit gap");
fi;
EOF
$GAP __TEST_RUNNNER__.g
shell: bash