Files
steipete--codexbar/Scripts/test_package_product_paths.sh
2026-07-13 12:22:33 +08:00

92 lines
3.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT=$(cd "$(dirname "$0")/.." && pwd)
source "$ROOT/Scripts/package_product_paths.sh"
TEMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/codexbar-package-paths.XXXXXX")
trap 'rm -rf "$TEMP_DIR"' EXIT
NATIVE_DIR="$TEMP_DIR/.build/arm64-apple-macosx/release"
SWIFTBUILD_DIR="$TEMP_DIR/.build/out/Products/Release"
STAGE_ROOT="$TEMP_DIR/.build/package-products/release"
mkdir -p "$NATIVE_DIR/CodexBar.dSYM" "$SWIFTBUILD_DIR/Sparkle.framework" "$SWIFTBUILD_DIR/CodexBar.dSYM"
touch "$NATIVE_DIR/CodexBar" "$SWIFTBUILD_DIR/CodexBar"
native=$(codexbar_require_product_file "$NATIVE_DIR" CodexBar arm64)
[[ "$native" == "$NATIVE_DIR/CodexBar" ]]
swiftbuild=$(codexbar_require_product_file "$SWIFTBUILD_DIR" CodexBar arm64)
[[ "$swiftbuild" == "$SWIFTBUILD_DIR/CodexBar" ]]
framework=$(codexbar_require_product_directory "$SWIFTBUILD_DIR" Sparkle.framework packaging)
[[ "$framework" == "$SWIFTBUILD_DIR/Sparkle.framework" ]]
dsym=$(codexbar_require_product_directory "$SWIFTBUILD_DIR" CodexBar.dSYM release)
[[ "$dsym" == "$SWIFTBUILD_DIR/CodexBar.dSYM" ]]
resolved=$(codexbar_resolve_staged_or_reported_file "$STAGE_ROOT" "$SWIFTBUILD_DIR" CodexBar arm64)
[[ "$resolved" == "$SWIFTBUILD_DIR/CodexBar" ]]
resolved_dsym=$(codexbar_resolve_dsym_path "$STAGE_ROOT" "$SWIFTBUILD_DIR" CodexBar arm64)
[[ "$resolved_dsym" == "$SWIFTBUILD_DIR/CodexBar.dSYM" ]]
mkdir -p "$STAGE_ROOT/arm64/CodexBar.dSYM"
touch "$STAGE_ROOT/arm64/CodexBar"
staged=$(codexbar_resolve_staged_or_reported_file "$STAGE_ROOT" "$SWIFTBUILD_DIR" CodexBar arm64)
[[ "$staged" == "$STAGE_ROOT/arm64/CodexBar" ]]
staged_dsym=$(codexbar_resolve_dsym_path "$STAGE_ROOT" "$SWIFTBUILD_DIR" CodexBar arm64)
[[ "$staged_dsym" == "$STAGE_ROOT/arm64/CodexBar.dSYM" ]]
rm -rf "$STAGE_ROOT"
rm "$SWIFTBUILD_DIR/CodexBar"
if codexbar_resolve_staged_or_reported_file "$STAGE_ROOT" "$SWIFTBUILD_DIR" CodexBar arm64 \
2>"$TEMP_DIR/missing-file.log"; then
echo "ERROR: Missing reported product unexpectedly fell back to legacy output." >&2
exit 1
fi
grep -Fq "$SWIFTBUILD_DIR/CodexBar" "$TEMP_DIR/missing-file.log"
rm -rf "$SWIFTBUILD_DIR/Sparkle.framework"
if codexbar_require_product_directory "$SWIFTBUILD_DIR" Sparkle.framework packaging \
2>"$TEMP_DIR/missing-directory.log"; then
echo "ERROR: Missing reported framework was accepted." >&2
exit 1
fi
grep -Fq "$SWIFTBUILD_DIR/Sparkle.framework" "$TEMP_DIR/missing-directory.log"
rm -rf "$SWIFTBUILD_DIR/CodexBar.dSYM"
if codexbar_resolve_dsym_path "$STAGE_ROOT" "$SWIFTBUILD_DIR" CodexBar arm64 \
2>"$TEMP_DIR/missing-dsym.log"; then
echo "ERROR: Missing reported dSYM unexpectedly fell back to legacy output." >&2
exit 1
fi
grep -Fq "$SWIFTBUILD_DIR/CodexBar.dSYM" "$TEMP_DIR/missing-dsym.log"
swift() {
[[ "$*" == "build --show-bin-path -c release --arch arm64" ]]
printf '%s\n' "$SWIFTBUILD_DIR"
}
reported=$(codexbar_swiftpm_bin_path release arm64)
[[ "$reported" == "$SWIFTBUILD_DIR" ]]
swift() {
return 23
}
if codexbar_swiftpm_bin_path release arm64 2>"$TEMP_DIR/query.log"; then
echo "ERROR: SwiftPM bin-path query failure was ignored." >&2
exit 1
fi
grep -Fq "SwiftPM failed to report" "$TEMP_DIR/query.log"
swift() {
return 0
}
if codexbar_swiftpm_bin_path release arm64 2>"$TEMP_DIR/empty.log"; then
echo "ERROR: Empty SwiftPM bin path was accepted." >&2
exit 1
fi
grep -Fq "SwiftPM reported an empty" "$TEMP_DIR/empty.log"
echo "Package product path tests passed."