Skip to content

Commit 5f2db73

Browse files
committed
add CI tests
1 parent 258b598 commit 5f2db73

3 files changed

Lines changed: 109 additions & 0 deletions

File tree

.github/scripts/run_tests.sh

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#!/bin/sh -eu
2+
3+
case "$RUNNER_OS" in
4+
Linux)
5+
ug_build=UltraGrid-continuous-x86_64.AppImage
6+
prepare() {
7+
chmod +x "$ug_build"
8+
./"$ug_build" --appimage-extract
9+
}
10+
run=squashfs-root/AppRun
11+
;;
12+
Windows)
13+
ug_build=UltraGrid-continuous-win64.zip
14+
prepare() {
15+
unzip "$ug_build"
16+
}
17+
run=UltraGrid-continuous-win64/uv.exe
18+
;;
19+
macOS)
20+
ug_build=UltraGrid-continuous-arm64.dmg
21+
prepare() {
22+
hdiutil mount "$ug_build"
23+
}
24+
brew install coreutils
25+
alias timeout=gtimeout
26+
run=/Volumes/ULTRAGRID/uv-qt.app/Contents/MacOS/uv
27+
esac
28+
29+
curl -LOf https://github.com/CESNET/UltraGrid/releases/download/continuous/\
30+
"$ug_build"
31+
32+
prepare
33+
34+
## used by run_test_data.sh
35+
## @param $1 args
36+
## @param $2 timeout (optional, default 5)
37+
## @param $3 opts (optional) - should_fail
38+
add_test() {
39+
eval "test_${test_count}_args=\${1?}"
40+
eval "test_${test_count}_timeout=\${2:-5}"
41+
eval "test_${test_count}_opts=\${3-}"
42+
test_count=$((test_count + 1))
43+
}
44+
45+
test_count=0
46+
. "$(dirname "$0")"/run_tests_data.sh
47+
48+
set +e
49+
i=0
50+
while [ $i -lt $test_count ]; do
51+
eval "args=\$test_${i}_args"
52+
eval "timeout=\$test_${i}_timeout"
53+
eval "opts=\$test_${i}_opts"
54+
55+
timeout "$timeout" "$run" "$args"
56+
rc=$?
57+
58+
if [ $rc = 124 ]; then
59+
printf "UG with arguments %s timeout (limit: %d sec)!\n" \
60+
"$args" "$timeout"
61+
exit 1
62+
fi
63+
64+
if expr -- "$opts" : '.*should_fail' >/dev/null; then
65+
if [ $rc -eq 0 ]; then
66+
printf "UG with arguments %s should have failed but\
67+
returned 0!\n" "$args"
68+
exit 1
69+
fi
70+
else
71+
if [ $rc -ne 0 ]; then
72+
printf "UG with arguments %s returned %d but should have\
73+
succeeeded!\n" "$args" "$rc"
74+
exit 1
75+
fi
76+
77+
fi
78+
79+
i=$((i + 1))
80+
done
81+

.github/scripts/run_tests_data.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
add_test -v # basic sanity test
2+
add_test --nonexistent-param 5 should_fail
3+

.github/workflows/daily_tests.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Continuous daily build tests
2+
3+
on:
4+
push:
5+
branches:
6+
- run_tests
7+
schedule:
8+
- cron: '30 4 * * *' # every day at 4:30 UTC
9+
10+
jobs:
11+
run_tests:
12+
strategy:
13+
matrix:
14+
os: [ubuntu-latest, windows-latest, macos-latest]
15+
16+
runs-on: ${{ matrix.os }}
17+
defaults:
18+
run:
19+
shell: ${{ matrix.os == 'windows-latest' && 'C:\shells\msys2bash.cmd {0}' || 'bash {0}' }}
20+
21+
steps:
22+
- uses: actions/checkout@v4
23+
- name: Run
24+
shell: bash
25+
run: .github/scripts/run_tests.sh

0 commit comments

Comments
 (0)