mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-21 11:31:14 +00:00
9a53bff92e
Batch 24 of 03-code-quality-refactoring run; closes the run. AZ-375 (C22): GoogleMapsDownloaderV2.DownloadTilesGridAsync now builds a HashSet<(int X, int Y, int Z)> once from existingTiles and tests Contains((x, y, zoomLevel)) per cell. Removes the per-cell FirstOrDefault tolerance scan and the unused _processingConfig .LatLonTolerance reference at this site. AZ-377 (C24): promote Earth + tile-pixel constants to a single home. GeoUtils now exposes EarthRadiusMeters, EarthEquatorial CircumferenceMeters, MetersPerDegreeLatitude as public const. MapConfig adds DefaultTileSizePixels (const) wired as the TileSizePixels property default. TileRepository and Google MapsDownloaderV2 read those constants instead of duplicating the literals 6378137, 40075016.686, 111000.0, and 256. Tests: +6 new (DownloaderRefactorTests, extended GeoUtils RefactorTests). 200/200 unit tests pass. Cumulative K=3 review (batches 22-24): PASS_WITH_WARNINGS, 4 Low findings only — see _docs/03_implementation/reviews/cumulative_review_22-24.md. Tooling fix: scripts/run-tests.sh --unit-only path now restores before testing (was failing on SixLabors resolution in clean container). Stripped stray BOM from MapConfig.cs to satisfy the .editorconfig charset gate. Updates _dependencies_table.md to reflect all 27 03-code-quality- refactoring tasks done; updates _autodev_state.md to refactor phase 5 (test-sync). Co-authored-by: Cursor <cursoragent@cursor.com>
94 lines
3.4 KiB
Bash
Executable File
94 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
|
|
cleanup() {
|
|
docker compose -f "$PROJECT_ROOT/docker-compose.yml" -f "$PROJECT_ROOT/docker-compose.tests.yml" down --remove-orphans || true
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
Usage: $(basename "$0") [--unit-only | --smoke | --full] [--skip-format]
|
|
|
|
Modes:
|
|
--unit-only Run only the .NET unit test project (no Docker Compose, no integration tests)
|
|
--smoke Run unit tests + a fast integration subset (~2 min target, tightened timeouts)
|
|
--full Run unit tests + the full integration suite (default if no flag is provided)
|
|
|
|
Flags:
|
|
--skip-format Skip the dotnet format --verify-no-changes check (use only for emergency runs)
|
|
|
|
Environment:
|
|
GOOGLE_MAPS_API_KEY Required for any integration test mode (loaded from .env or shell env).
|
|
EOF
|
|
}
|
|
|
|
mode="full"
|
|
skip_format="false"
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--unit-only) mode="unit"; ;;
|
|
--smoke) mode="smoke"; ;;
|
|
--full) mode="full"; ;;
|
|
--skip-format) skip_format="true"; ;;
|
|
-h|--help) usage; exit 0; ;;
|
|
"") ;;
|
|
*) echo "Unknown argument: $arg"; usage; exit 2; ;;
|
|
esac
|
|
done
|
|
|
|
echo "=== Satellite Provider Test Suite ==="
|
|
echo "Mode: $mode"
|
|
echo ""
|
|
|
|
if [[ "$skip_format" == "true" ]]; then
|
|
echo "Step 0: Skipping dotnet format check (--skip-format)"
|
|
else
|
|
echo "Step 0: dotnet format whitespace --verify-no-changes"
|
|
if ! docker run --rm -v "$PROJECT_ROOT:/src" -w /src mcr.microsoft.com/dotnet/sdk:8.0 \
|
|
dotnet format whitespace SatelliteProvider.sln --verify-no-changes; then
|
|
echo ""
|
|
echo "ERROR: Whitespace violations detected. Run 'dotnet format whitespace SatelliteProvider.sln' to fix."
|
|
exit 4
|
|
fi
|
|
echo ""
|
|
fi
|
|
|
|
if [[ "$mode" == "unit" ]]; then
|
|
echo "Running unit tests only..."
|
|
docker run --rm -v "$PROJECT_ROOT:/src" -w /src mcr.microsoft.com/dotnet/sdk:8.0 \
|
|
sh -c "dotnet restore SatelliteProvider.sln && dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --collect:'XPlat Code Coverage' --results-directory /src/TestResults --logger 'console;verbosity=normal'"
|
|
echo ""
|
|
echo "=== Unit tests complete (coverage written to ./TestResults/) ==="
|
|
exit 0
|
|
fi
|
|
|
|
if [[ -z "${GOOGLE_MAPS_API_KEY:-}" ]] && [[ -f "$PROJECT_ROOT/.env" ]]; then
|
|
set -o allexport
|
|
# shellcheck disable=SC1091
|
|
source "$PROJECT_ROOT/.env"
|
|
set +o allexport
|
|
fi
|
|
|
|
if [[ -z "${GOOGLE_MAPS_API_KEY:-}" ]]; then
|
|
echo "ERROR: GOOGLE_MAPS_API_KEY is not set (export it or add to .env). Integration tests will fail."
|
|
exit 3
|
|
fi
|
|
|
|
echo "Step 1: Unit tests"
|
|
docker run --rm -v "$PROJECT_ROOT:/src" -w /src mcr.microsoft.com/dotnet/sdk:8.0 \
|
|
sh -c "dotnet restore SatelliteProvider.sln && dotnet test SatelliteProvider.Tests/SatelliteProvider.Tests.csproj --no-restore --configuration Release --collect:'XPlat Code Coverage' --results-directory /src/TestResults --logger 'console;verbosity=normal'"
|
|
|
|
echo ""
|
|
echo "Step 2: Integration tests (Docker Compose, mode=$mode)"
|
|
INTEGRATION_TESTS_MODE="$mode" docker compose \
|
|
-f "$PROJECT_ROOT/docker-compose.yml" \
|
|
-f "$PROJECT_ROOT/docker-compose.tests.yml" \
|
|
up --build --abort-on-container-exit --exit-code-from integration-tests
|
|
|
|
echo ""
|
|
echo "=== All tests passed (mode=$mode) ==="
|