Skip to content

Commit 98f8a7e

Browse files
committed
github/workflows: Add workflow to run package tests.
All of the runable package tests are run together in the new `tools/ci.sh` function called `ci_package_tests_run`. This is added to a new GitHub workflow to test the packages as part of CI. Some packages use `unittest` while others use an ad-hoc test script. Eventually it would be good to unify all the package tests to use `unittest`. Signed-off-by: Damien George <damien@micropython.org>
1 parent 8834023 commit 98f8a7e

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

.github/workflows/package_tests.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Package tests
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v3
10+
- uses: actions/setup-python@v4
11+
- name: Setup environment
12+
run: source tools/ci.sh && ci_package_tests_setup_micropython
13+
- name: Setup libraries
14+
run: source tools/ci.sh && ci_package_tests_setup_lib
15+
- name: Run tests
16+
run: source tools/ci.sh && ci_package_tests_run

tools/ci.sh

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/bin/bash
22

3+
CP=/bin/cp
4+
35
########################################################################################
46
# commit formatting
57

@@ -12,6 +14,92 @@ function ci_commit_formatting_run {
1214
tools/verifygitlog.py -v upstream/master..HEAD --no-merges
1315
}
1416

17+
########################################################################################
18+
# package tests
19+
20+
MICROPYTHON=/tmp/micropython/ports/unix/build-standard/micropython
21+
22+
function ci_package_tests_setup_micropython {
23+
git clone https://github.com/micropython/micropython.git /tmp/micropython
24+
25+
# build mpy-cross and micropython (use -O0 to speed up the build)
26+
make -C /tmp/micropython/mpy-cross -j CFLAGS_EXTRA=-O0
27+
make -C /tmp/micropython/ports/unix submodules
28+
make -C /tmp/micropython/ports/unix -j CFLAGS_EXTRA=-O0
29+
}
30+
31+
function ci_package_tests_setup_lib {
32+
mkdir -p ~/.micropython/lib
33+
$CP micropython/ucontextlib/ucontextlib.py ~/.micropython/lib/
34+
$CP python-stdlib/fnmatch/fnmatch.py ~/.micropython/lib/
35+
$CP -r python-stdlib/hashlib-core/hashlib ~/.micropython/lib/
36+
$CP -r python-stdlib/hashlib-sha224/hashlib ~/.micropython/lib/
37+
$CP -r python-stdlib/hashlib-sha256/hashlib ~/.micropython/lib/
38+
$CP -r python-stdlib/hashlib-sha384/hashlib ~/.micropython/lib/
39+
$CP -r python-stdlib/hashlib-sha512/hashlib ~/.micropython/lib/
40+
$CP python-stdlib/shutil/shutil.py ~/.micropython/lib/
41+
$CP python-stdlib/tempfile/tempfile.py ~/.micropython/lib/
42+
$CP -r python-stdlib/unittest/unittest ~/.micropython/lib/
43+
$CP -r python-stdlib/unittest-discover/unittest ~/.micropython/lib/
44+
$CP unix-ffi/ffilib/ffilib.py ~/.micropython/lib/
45+
tree ~/.micropython
46+
}
47+
48+
function ci_package_tests_run {
49+
for test in \
50+
micropython/drivers/storage/sdcard/sdtest.py \
51+
micropython/xmltok/test_xmltok.py \
52+
python-ecosys/requests/test_requests.py \
53+
python-stdlib/argparse/test_argparse.py \
54+
python-stdlib/base64/test_base64.py \
55+
python-stdlib/binascii/test_binascii.py \
56+
python-stdlib/collections-defaultdict/test_defaultdict.py \
57+
python-stdlib/functools/test_partial.py \
58+
python-stdlib/functools/test_reduce.py \
59+
python-stdlib/heapq/test_heapq.py \
60+
python-stdlib/hmac/test_hmac.py \
61+
python-stdlib/itertools/test_itertools.py \
62+
python-stdlib/operator/test_operator.py \
63+
python-stdlib/os-path/test_path.py \
64+
python-stdlib/pickle/test_pickle.py \
65+
python-stdlib/string/test_translate.py \
66+
unix-ffi/gettext/test_gettext.py \
67+
unix-ffi/pwd/test_getpwnam.py \
68+
unix-ffi/re/test_re.py \
69+
unix-ffi/time/test_strftime.py \
70+
; do
71+
echo "Running test $test"
72+
(cd `dirname $test` && $MICROPYTHON `basename $test`)
73+
if [ $? -ne 0 ]; then
74+
false # make this function return an error code
75+
return
76+
fi
77+
done
78+
79+
for path in \
80+
micropython/ucontextlib \
81+
python-stdlib/contextlib \
82+
python-stdlib/datetime \
83+
python-stdlib/fnmatch \
84+
python-stdlib/hashlib \
85+
python-stdlib/pathlib \
86+
python-stdlib/quopri \
87+
python-stdlib/shutil \
88+
python-stdlib/tempfile \
89+
python-stdlib/time \
90+
python-stdlib/unittest-discover/tests \
91+
; do
92+
(cd $path && $MICROPYTHON -m unittest)
93+
if [ $? -ne 0 ]; then false; return; fi
94+
done
95+
96+
(cd micropython/usb/usb-device && $MICROPYTHON -m tests.test_core_buffer)
97+
if [ $? -ne 0 ]; then false; return; fi
98+
99+
(cd python-ecosys/cbor2 && $MICROPYTHON -m examples.cbor_test)
100+
if [ $? -ne 0 ]; then false; return; fi
101+
}
102+
15103
########################################################################################
16104
# build packages
17105

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy