From 64766a129c1115dc415ab475f96f84aa306b94e2 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 18 Jun 2025 18:46:20 +0100 Subject: [PATCH] Version prop fix + test (#3764) # Description of Changes Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details. --- build.gradle | 17 +++------- testing/test.sh | 88 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 90 insertions(+), 15 deletions(-) diff --git a/build.gradle b/build.gradle index 819a63980..20933193e 100644 --- a/build.gradle +++ b/build.gradle @@ -170,19 +170,10 @@ subprojects { test { useJUnitPlatform() } - - // Ensure all packaging tasks depend on writeVersion from root project - tasks.withType(org.springframework.boot.gradle.tasks.bundling.BootJar) { - dependsOn(rootProject.tasks.writeVersion) - } - - tasks.withType(Jar) { - dependsOn(rootProject.tasks.writeVersion) - } - - tasks.withType(org.gradle.api.tasks.bundling.Zip) { - dependsOn(rootProject.tasks.writeVersion) - } + + tasks.named("processResources") { + dependsOn(rootProject.tasks.writeVersion) + } } tasks.withType(JavaCompile).configureEach { diff --git a/testing/test.sh b/testing/test.sh index c7fb49d91..4658edeb5 100644 --- a/testing/test.sh +++ b/testing/test.sh @@ -169,6 +169,50 @@ compare_file_lists() { return 0 } +# Get the expected version from Gradle once +get_expected_version() { + ./gradlew printVersion --quiet | tail -1 +} + +# Function to verify the application version +verify_app_version() { + local service_name=$1 + local base_url=$2 + + echo "Checking version for $service_name (expecting $EXPECTED_VERSION)..." + + # Try to access the homepage and extract the version + local response + response=$(curl -s "$base_url") + + # Extract version from pixel tracking tag + local actual_version + actual_version=$(echo "$response" | grep -o 'appVersion=[0-9.]*' | head -1 | sed 's/appVersion=//') + + # If we couldn't find the version in the pixel tag, try other approaches + if [ -z "$actual_version" ]; then + # Check for "App Version:" format + if echo "$response" | grep -q "App Version:"; then + actual_version=$(echo "$response" | grep -o "App Version: [0-9.]*" | sed 's/App Version: //') + else + echo "❌ Version verification failed: Could not find version information" + return 1 + fi + fi + + # Check if the extracted version matches expected version + if [ "$actual_version" = "$EXPECTED_VERSION" ]; then + echo "✅ Version verification passed: $actual_version" + return 0 + elif [ "$actual_version" = "0.0.0" ]; then + echo "❌ Version verification failed: Found placeholder version 0.0.0" + return 1 + else + echo "❌ Version verification failed: Found $actual_version, expected $EXPECTED_VERSION" + return 1 + fi +} + # Function to test a Docker Compose configuration test_compose() { local compose_file=$1 @@ -206,20 +250,27 @@ run_tests() { fi } + # Main testing routine main() { SECONDS=0 cd "$PROJECT_ROOT" - export DOCKER_CLI_EXPERIMENTAL=enabled - export COMPOSE_DOCKER_CLI_BUILD=0 + export DOCKER_CLI_EXPERIMENTAL=enabled + export COMPOSE_DOCKER_CLI_BUILD=0 export DISABLE_ADDITIONAL_FEATURES=true + # Run the gradlew build command and check if it fails if ! ./gradlew clean build; then echo "Gradle build failed with security disabled, exiting script." exit 1 fi + + # Get expected version after the build to ensure version.properties is created + echo "Getting expected version from Gradle..." + EXPECTED_VERSION=$(get_expected_version) + echo "Expected version: $EXPECTED_VERSION" # Building Docker images # docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile . @@ -237,6 +288,16 @@ main() { echo "Webpage accessibility lite tests failed" fi cd "$PROJECT_ROOT" + + echo "Testing version verification..." + if verify_app_version "Stirling-PDF-Ultra-Lite" "http://localhost:8080"; then + passed_tests+=("Stirling-PDF-Ultra-Lite-Version-Check") + echo "Version verification passed for Stirling-PDF-Ultra-Lite" + else + failed_tests+=("Stirling-PDF-Ultra-Lite-Version-Check") + echo "Version verification failed for Stirling-PDF-Ultra-Lite" + fi + docker-compose -f "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml" down # run_tests "Stirling-PDF" "./exampleYmlFiles/docker-compose-latest.yml" @@ -248,6 +309,11 @@ main() { echo "Gradle build failed with security enabled, exiting script." exit 1 fi + + # Get expected version after the security-enabled build + echo "Getting expected version from Gradle (security enabled)..." + EXPECTED_VERSION=$(get_expected_version) + echo "Expected version with security enabled: $EXPECTED_VERSION" # Building Docker images with security enabled # docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile . @@ -273,6 +339,15 @@ main() { echo "Webpage accessibility full tests failed" fi cd "$PROJECT_ROOT" + + echo "Testing version verification..." + if verify_app_version "Stirling-PDF-Security-Fat" "http://localhost:8080"; then + passed_tests+=("Stirling-PDF-Security-Fat-Version-Check") + echo "Version verification passed for Stirling-PDF-Security-Fat" + else + failed_tests+=("Stirling-PDF-Security-Fat-Version-Check") + echo "Version verification failed for Stirling-PDF-Security-Fat" + fi docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-security.yml" down @@ -341,6 +416,15 @@ main() { failed_tests+=("Disabled-Endpoints") echo "Disabled Endpoints tests failed" fi + + echo "Testing version verification..." + if verify_app_version "Stirling-PDF-Fat-Disable-Endpoints" "http://localhost:8080"; then + passed_tests+=("Stirling-PDF-Fat-Disable-Endpoints-Version-Check") + echo "Version verification passed for Stirling-PDF-Fat-Disable-Endpoints" + else + failed_tests+=("Stirling-PDF-Fat-Disable-Endpoints-Version-Check") + echo "Version verification failed for Stirling-PDF-Fat-Disable-Endpoints" + fi docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml" down