Skip to content

Commit 0d2afb6

Browse files
PackageManager: add unit tests
1 parent d8e0fc0 commit 0d2afb6

File tree

8 files changed

+134
-2
lines changed

8 files changed

+134
-2
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ conf.json*
44

55
# auto created when running on desktop:
66
internal_filesystem/SDLPointer_2
7+
internal_filesystem/SDLPointer_3
78

89
# config files etc:
910
internal_filesystem/data

internal_filesystem/lib/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ This /lib folder contains:
77
- mip.install("aiohttp") # easy websockets
88
- mip.install("base64") # for nostr etc
99
- mip.install("collections") # used by aiohttp
10+
- mip.install("unittest")
1011

internal_filesystem/lib/mpos/content/package_manager.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,12 @@ def compare_versions(ver1: str, ver2: str) -> bool:
166166
"""Compare two version numbers (e.g., '1.2.3' vs '4.5.6').
167167
Returns True if ver1 is greater than ver2, False otherwise."""
168168
print(f"Comparing versions: {ver1} vs {ver2}")
169-
v1_parts = [int(x) for x in ver1.split('.')]
170-
v2_parts = [int(x) for x in ver2.split('.')]
169+
try:
170+
v1_parts = [int(x) for x in ver1.split('.')]
171+
v2_parts = [int(x) for x in ver2.split('.')]
172+
except ValueError as e:
173+
print(f"Invalid input, got error: {e}")
174+
return False
171175
print(f"Version 1 parts: {v1_parts}")
172176
print(f"Version 2 parts: {v2_parts}")
173177
for i in range(max(len(v1_parts), len(v2_parts))):
5.72 KB
Binary file not shown.

tests/package_manager.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import unittest
2+
3+
from mpos import PackageManager
4+
5+
class TestCompareVersions(unittest.TestCase):
6+
7+
def test_lower_short(self):
8+
self.assertFalse(PackageManager.compare_versions("1" , "4"))
9+
10+
def test_lower(self):
11+
self.assertFalse(PackageManager.compare_versions("1.2.3" , "4.5.6"))
12+
13+
def test_equal(self):
14+
self.assertFalse(PackageManager.compare_versions("1.2.3" , "1.2.3"))
15+
16+
def test_higher(self):
17+
self.assertTrue(PackageManager.compare_versions("4.5.6", "1.2.3"))
18+
19+
def test_higher_medium_and_long(self):
20+
self.assertTrue(PackageManager.compare_versions("4.5", "1.2.3"))
21+
22+
def test_words(self):
23+
self.assertFalse(PackageManager.compare_versions("weird" , "input"))
24+
25+
def test_one_empty(self):
26+
self.assertFalse(PackageManager.compare_versions("1.2.3" , ""))
27+
28+
class TestPackageManager_is_installed_by_name(unittest.TestCase):
29+
30+
def test_installed_builtin(self):
31+
self.assertTrue(PackageManager.is_installed_by_name("com.micropythonos.appstore"))
32+
33+
def test_installed_not_builtin(self):
34+
self.assertTrue(PackageManager.is_installed_by_name("com.micropythonos.helloworld"))
35+
36+
def test_not_installed(self):
37+
self.assertFalse(PackageManager.is_installed_by_name("com.micropythonos.badname"))

tests/simple.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import unittest
2+
3+
class TestMath(unittest.TestCase):
4+
def test_add(self):
5+
self.assertEqual(1 + 1, 2)
6+

tests/tests/check_syntax.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/bin/bash
2+
mydir=$(readlink -f "$0")
3+
mydir=$(dirname "$mydir")
4+
fs="$mydir"/../../internal_filesystem/
5+
cross="$mydir"/../../lvgl_micropython/lib/micropython/mpy-cross/build/mpy-cross
6+
7+
failed=0
8+
while read file; do
9+
"$cross" -march=x64 -o /dev/null "$file"
10+
exitcode="$?"
11+
if [ $exitcode -ne 0 ]; then
12+
echo "$file got exitcode $exitcode"
13+
failed=$(expr $failed \+ 1)
14+
fi
15+
done < <(find "$fs" -iname "*.py")
16+
17+
if [ $failed -ne 0 ]; then
18+
echo "ERROR: $failed .py files have syntax errors"
19+
exit 1
20+
fi

tests/unittest.sh

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/bin/bash
2+
3+
mydir=$(readlink -f "$0")
4+
mydir=$(dirname "$mydir")
5+
testdir="$mydir"
6+
scriptdir=$(readlink -f "$mydir"/../scripts/)
7+
fs="$mydir"/../internal_filesystem/
8+
onetest="$1"
9+
10+
11+
# print os and set binary
12+
os_name=$(uname -s)
13+
if [ "$os_name" = "Darwin" ]; then
14+
echo "Running on macOS"
15+
binary="$scriptdir"/../lvgl_micropython/build/lvgl_micropy_macOS
16+
else
17+
# other cases can be added here
18+
echo "Running on $os_name"
19+
binary="$scriptdir"/../lvgl_micropython/build/lvgl_micropy_unix
20+
fi
21+
22+
one_test() {
23+
file="$1"
24+
pushd "$fs"
25+
echo "Testing $file"
26+
"$binary" -X heapsize=8M -c "import sys ; sys.path.append('lib')
27+
$(cat $file)
28+
result = unittest.main() ; sys.exit(0 if result.wasSuccessful() else 1) "
29+
result=$?
30+
popd
31+
return "$result"
32+
}
33+
34+
failed=0
35+
36+
if [ -z "$onetest" ]; then
37+
echo "Usage: $0 [one_test_to_run.py]"
38+
echo "Example: $0 tests/simple.py"
39+
echo
40+
echo "If no test is specified: run all tests from $testdir"
41+
while read file; do
42+
one_test "$file"
43+
result=$?
44+
if [ $result -ne 0 ]; then
45+
echo "test $file got error $result"
46+
failed=$(expr $failed \+ 1)
47+
fi
48+
49+
done < <( find "$testdir" -iname "*.py" )
50+
else
51+
one_test $(readlink -f "$onetest")
52+
[ $? -ne 0 ] && failed=1
53+
fi
54+
55+
56+
if [ $failed -ne 0 ]; then
57+
echo "ERROR: $failed .py files have failing unit tests"
58+
exit 1
59+
else
60+
echo "GOOD: no .py files have failing unit tests"
61+
exit 0
62+
fi
63+

0 commit comments

Comments
 (0)