Skip to content

Commit 785c354

Browse files
committed
Add tests for package manager and common utilities
- pacman_install.bats: Tests for JSON config parsing - apply.bats: Tests for common package installer
1 parent e309206 commit 785c354

2 files changed

Lines changed: 101 additions & 0 deletions

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env bats
2+
3+
load '../support/test_helper'
4+
load '../support/mocks'
5+
6+
setup() {
7+
setup_sdcard
8+
cleanup_test_data
9+
mock_system_commands
10+
mkdir -p "$TEST_DATA/TestPackage/App/TestApp"
11+
}
12+
13+
@test "pacman_install.sh copies package files to SDCARD" {
14+
echo '{"label": "New App"}' > "$TEST_DATA/TestPackage/App/TestApp/config.json"
15+
16+
run sh "$PROJECT/src/packageManager/script/pacman_install.sh" "$TEST_DATA" TestPackage
17+
18+
assert_success
19+
assert_file_exists "$SDCARD/App/TestApp/config.json"
20+
}
21+
22+
@test "pacman_install.sh preserves existing label and imgpath" {
23+
# IMPORTANT: Use multi-line JSON - script parser is fragile with single-line
24+
cat > "$TEST_DATA/TestPackage/App/TestApp/config.json" <<EOF
25+
{
26+
"label": "Default",
27+
"imgpath": "/default.png"
28+
}
29+
EOF
30+
31+
mkdir -p "$SDCARD/App/TestApp"
32+
cat > "$SDCARD/App/TestApp/config.json" <<EOF
33+
{
34+
"label": "My Custom Name",
35+
"imgpath": "/my/icon.png"
36+
}
37+
EOF
38+
39+
run sh "$PROJECT/src/packageManager/script/pacman_install.sh" "$TEST_DATA" TestPackage
40+
41+
assert_success
42+
assert_file_contains "$SDCARD/App/TestApp/config.json" '"label": "My Custom Name"'
43+
assert_file_contains "$SDCARD/App/TestApp/config.json" '"imgpath": "/my/icon.png"'
44+
}
45+
46+
@test "pacman_install.sh handles missing existing config gracefully" {
47+
echo '{"label": "Fresh Install"}' > "$TEST_DATA/TestPackage/App/TestApp/config.json"
48+
49+
run sh "$PROJECT/src/packageManager/script/pacman_install.sh" "$TEST_DATA" TestPackage
50+
51+
assert_success
52+
assert_file_contains "$SDCARD/App/TestApp/config.json" '"label": "Fresh Install"'
53+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env bats
2+
3+
load '../../support/test_helper'
4+
load '../../support/mocks'
5+
6+
setup() {
7+
setup_sdcard
8+
cleanup_test_data
9+
mock_system_commands
10+
11+
# Create mock source directory
12+
# apply.sh expects a folder named the same as the target's basename in its own directory
13+
mkdir -p "$TEST_DATA/common/App"
14+
touch "$TEST_DATA/common/App/common_script.sh"
15+
cp "$PROJECT/static/packages/common/apply.sh" "$TEST_DATA/common/apply.sh"
16+
17+
# Create target structure on SDCARD
18+
mkdir -p "$SDCARD/App/Package1"
19+
mkdir -p "$SDCARD/App/Package2"
20+
mkdir -p "$SDCARD/App/NoConfig"
21+
22+
echo '{"name": "p1"}' > "$SDCARD/App/Package1/config.json"
23+
echo '{"name": "p2"}' > "$SDCARD/App/Package2/config.json"
24+
}
25+
26+
@test "apply.sh copies scripts to directories with config.json" {
27+
run sh "$TEST_DATA/common/apply.sh" "$SDCARD/App"
28+
29+
assert_success
30+
assert_file_exists "$SDCARD/App/Package1/common_script.sh"
31+
assert_file_exists "$SDCARD/App/Package2/common_script.sh"
32+
}
33+
34+
@test "apply.sh skips directories without config.json" {
35+
run sh "$TEST_DATA/common/apply.sh" "$SDCARD/App"
36+
37+
assert_success
38+
assert_file_not_exists "$SDCARD/App/NoConfig/common_script.sh"
39+
}
40+
41+
@test "apply.sh exits gracefully if source directory missing" {
42+
rm -rf "$TEST_DATA/common/App"
43+
44+
run sh "$TEST_DATA/common/apply.sh" "$SDCARD/App"
45+
46+
assert_success # Script just exits, no error code
47+
assert_file_not_exists "$SDCARD/App/Package1/common_script.sh"
48+
}

0 commit comments

Comments
 (0)