Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0d2afb6

Browse files
PackageManager: add unit tests
1 parentd8e0fc0 commit0d2afb6

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)forxinver1.split('.')]
170-
v2_parts= [int(x)forxinver2.split('.')]
169+
try:
170+
v1_parts= [int(x)forxinver1.split('.')]
171+
v2_parts= [int(x)forxinver2.split('.')]
172+
exceptValueErrorase:
173+
print(f"Invalid input, got error:{e}")
174+
returnFalse
171175
print(f"Version 1 parts:{v1_parts}")
172176
print(f"Version 2 parts:{v2_parts}")
173177
foriinrange(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+
importunittest
2+
3+
frommposimportPackageManager
4+
5+
classTestCompareVersions(unittest.TestCase):
6+
7+
deftest_lower_short(self):
8+
self.assertFalse(PackageManager.compare_versions("1" ,"4"))
9+
10+
deftest_lower(self):
11+
self.assertFalse(PackageManager.compare_versions("1.2.3" ,"4.5.6"))
12+
13+
deftest_equal(self):
14+
self.assertFalse(PackageManager.compare_versions("1.2.3" ,"1.2.3"))
15+
16+
deftest_higher(self):
17+
self.assertTrue(PackageManager.compare_versions("4.5.6","1.2.3"))
18+
19+
deftest_higher_medium_and_long(self):
20+
self.assertTrue(PackageManager.compare_versions("4.5","1.2.3"))
21+
22+
deftest_words(self):
23+
self.assertFalse(PackageManager.compare_versions("weird" ,"input"))
24+
25+
deftest_one_empty(self):
26+
self.assertFalse(PackageManager.compare_versions("1.2.3" ,""))
27+
28+
classTestPackageManager_is_installed_by_name(unittest.TestCase):
29+
30+
deftest_installed_builtin(self):
31+
self.assertTrue(PackageManager.is_installed_by_name("com.micropythonos.appstore"))
32+
33+
deftest_installed_not_builtin(self):
34+
self.assertTrue(PackageManager.is_installed_by_name("com.micropythonos.helloworld"))
35+
36+
deftest_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+
importunittest
2+
3+
classTestMath(unittest.TestCase):
4+
deftest_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+
whileread 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+
whileread 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)

[8]ページ先頭

©2009-2025 Movatter.jp