|
| 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