diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d33e7f..be28d6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ 17, 21 ] + java: [ 21 ] steps: - uses: actions/checkout@v4 diff --git a/src/main/resources/META-INF/archetype-post-generate.groovy b/src/main/resources/META-INF/archetype-post-generate.groovy deleted file mode 100644 index 23f4bdb..0000000 --- a/src/main/resources/META-INF/archetype-post-generate.groovy +++ /dev/null @@ -1,21 +0,0 @@ -// Post-generation script to rename hidden files/directories -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.Paths - -// Get the generated project directory -Path projectPath = Paths.get(request.outputDirectory, request.artifactId) - -// Rename __gitignore__ to .gitignore -Path gitignoreSrc = projectPath.resolve("__gitignore__") -Path gitignoreDst = projectPath.resolve(".gitignore") -if (Files.exists(gitignoreSrc)) { - Files.move(gitignoreSrc, gitignoreDst) -} - -// Rename __github__ to .github -Path githubSrc = projectPath.resolve("__github__") -Path githubDst = projectPath.resolve(".github") -if (Files.exists(githubSrc)) { - Files.move(githubSrc, githubDst) -} \ No newline at end of file diff --git a/src/main/resources/META-INF/maven/archetype-metadata.xml b/src/main/resources/META-INF/maven/archetype-metadata.xml index 27336ca..53b0dd3 100644 --- a/src/main/resources/META-INF/maven/archetype-metadata.xml +++ b/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -21,6 +21,12 @@ 17 + + .gitignore + + + .github + diff --git a/src/test/resources/projects/basic/archetype.properties b/src/test/resources/projects/basic/archetype.properties index b591602..c7cda17 100644 --- a/src/test/resources/projects/basic/archetype.properties +++ b/src/test/resources/projects/basic/archetype.properties @@ -2,4 +2,6 @@ groupId=com.example.test artifactId=test-project version=1.0.0-SNAPSHOT package=com.example.test -javaVersion=17 \ No newline at end of file +javaVersion=17 +gitignore=.gitignore +github=.github diff --git a/src/test/resources/projects/basic/goal.txt b/src/test/resources/projects/basic/goal.txt index 0d5cfb8..1453d01 100644 --- a/src/test/resources/projects/basic/goal.txt +++ b/src/test/resources/projects/basic/goal.txt @@ -1 +1 @@ -clean test \ No newline at end of file +clean test diff --git a/src/test/resources/projects/basic/verify.groovy b/src/test/resources/projects/basic/verify.groovy index 69aa837..f67cf79 100644 --- a/src/test/resources/projects/basic/verify.groovy +++ b/src/test/resources/projects/basic/verify.groovy @@ -1,22 +1,45 @@ // Verify the generated project def projectDir = new File(basedir, "project/test-project") -// Check basic structure -assert projectDir.exists() : "Project directory should exist: ${projectDir}" -assert new File(projectDir, "pom.xml").exists() : "pom.xml should exist" -assert new File(projectDir, "LICENSE").exists() : "LICENSE should exist" -assert new File(projectDir, ".gitignore").exists() : ".gitignore should exist" - -// Check GitHub workflows -assert new File(projectDir, ".github/workflows").exists() : ".github/workflows should exist" -assert new File(projectDir, ".github/workflows/ci.yml").exists() : "CI workflow should exist" -assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : "Dependency check workflow should exist" -assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : "Gitflow release workflow should exist" -assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : "Gitflow hotfix workflow should exist" - -// Check source directories -assert new File(projectDir, "src/main/java/com/example/test/App.java").exists() : "Main App.java should exist" -assert new File(projectDir, "src/test/java/com/example/test/AppTest.java").exists() : "Test AppTest.java should exist" - -println "Integration test passed: All expected files were created!" -return true \ No newline at end of file +try { + println "Starting verification for: ${basedir}" + + // Check basic structure + println "Checking project directory exists: ${projectDir}" + assert projectDir.exists() : "Project directory should exist: ${projectDir}" + + println "Checking pom.xml..." + assert new File(projectDir, "pom.xml").exists() : "pom.xml should exist" + + println "Checking LICENSE..." + assert new File(projectDir, "LICENSE").exists() : "LICENSE should exist" + + println "Checking .gitignore..." + assert new File(projectDir, ".gitignore").exists() : ".gitignore should exist" + println "PASS: Basic structure validated" + + // Check GitHub workflows + println "Checking GitHub workflows..." + assert new File(projectDir, ".github/workflows").exists() : ".github/workflows should exist" + assert new File(projectDir, ".github/workflows/ci.yml").exists() : "CI workflow should exist" + assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : "Dependency check workflow should exist" + assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : "Gitflow release workflow should exist" + assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : "Gitflow hotfix workflow should exist" + println "PASS: GitHub workflows validated" + + // Check source directories + println "Checking source directories..." + assert new File(projectDir, "src/main/java/com/example/test/App.java").exists() : "Main App.java should exist" + assert new File(projectDir, "src/test/java/com/example/test/AppTest.java").exists() : "Test AppTest.java should exist" + println "PASS: Source directories validated" + + println "VERIFICATION PASSED" + return true +} catch (AssertionError e) { + println "ERROR: ASSERTION FAILED: ${e.message}" + throw e +} catch (Exception e) { + println "ERROR: UNEXPECTED: ${e.message}" + e.printStackTrace() + throw e +} \ No newline at end of file diff --git a/src/test/resources/projects/custom-package/archetype.properties b/src/test/resources/projects/custom-package/archetype.properties index 8582d89..7157259 100644 --- a/src/test/resources/projects/custom-package/archetype.properties +++ b/src/test/resources/projects/custom-package/archetype.properties @@ -2,4 +2,6 @@ groupId=com.mycompany artifactId=custom-pkg-app version=1.5.0 package=org.custompackage.application -javaVersion=17 \ No newline at end of file +javaVersion=17 +gitignore=.gitignore +github=.github diff --git a/src/test/resources/projects/custom-package/goal.txt b/src/test/resources/projects/custom-package/goal.txt index 0d5cfb8..1453d01 100644 --- a/src/test/resources/projects/custom-package/goal.txt +++ b/src/test/resources/projects/custom-package/goal.txt @@ -1 +1 @@ -clean test \ No newline at end of file +clean test diff --git a/src/test/resources/projects/custom-package/verify.groovy b/src/test/resources/projects/custom-package/verify.groovy index 067c7b9..2bfde13 100644 --- a/src/test/resources/projects/custom-package/verify.groovy +++ b/src/test/resources/projects/custom-package/verify.groovy @@ -1,48 +1,89 @@ // Verify custom package parameter works correctly def projectDir = new File(basedir, "project/custom-pkg-app") -assert projectDir.exists() - -// Check POM has correct groupId and artifactId -def pomFile = new File(projectDir, "pom.xml") -def pomContent = pomFile.text -assert pomContent.contains("com.mycompany") -assert pomContent.contains("custom-pkg-app") -assert pomContent.contains("1.5.0") -assert pomContent.contains("17") - -// Check that package structure uses custom package, NOT groupId -assert new File(projectDir, "src/main/java/org/custompackage/application/App.java").exists() -assert new File(projectDir, "src/test/java/org/custompackage/application/AppTest.java").exists() - -// Should NOT have the groupId package structure -assert !new File(projectDir, "src/main/java/com/mycompany").exists() - -// Check package declaration in source files -def appFile = new File(projectDir, "src/main/java/org/custompackage/application/App.java") -def appContent = appFile.text -assert appContent.contains("package org.custompackage.application;") -assert !appContent.contains("package com.mycompany;") - -def testFile = new File(projectDir, "src/test/java/org/custompackage/application/AppTest.java") -def testContent = testFile.text -assert testContent.contains("package org.custompackage.application;") - -// Check test.properties -def testPropsFile = new File(projectDir, "src/test/resources/test.properties") -def testPropsContent = testPropsFile.text -assert testPropsContent.contains("app.test.java.version=17") -assert testPropsContent.contains("app.test.version=1.5.0") -assert testPropsContent.contains("app.test.name=custom-pkg-app-test") - -// Check GitHub workflows exist -assert new File(projectDir, ".github/workflows/ci.yml").exists() -assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() - -// Check .gitignore exists -assert new File(projectDir, ".gitignore").exists() - -println "Custom package test passed - package parameter correctly overrides groupId!" -return true \ No newline at end of file +try { + println "Starting verification for: ${basedir}" + + println "Checking project directory exists: ${projectDir}" + assert projectDir.exists() : "Project directory does not exist: ${projectDir}" + + // Check POM has correct groupId and artifactId + def pomFile = new File(projectDir, "pom.xml") + println "Checking POM file: ${pomFile}" + assert pomFile.exists() : "POM file does not exist: ${pomFile}" + + def pomContent = pomFile.text + assert pomContent.contains("com.mycompany") : "POM missing correct groupId" + assert pomContent.contains("custom-pkg-app") : "POM missing correct artifactId" + assert pomContent.contains("1.5.0") : "POM missing correct version" + assert pomContent.contains("17") : "POM missing Java 17 compiler release" + println "PASS: POM file validated" + + // Check that package structure uses custom package, NOT groupId + println "Checking custom package structure..." + def appJavaFile = new File(projectDir, "src/main/java/org/custompackage/application/App.java") + assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}" + + def testJavaFile = new File(projectDir, "src/test/java/org/custompackage/application/AppTest.java") + assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}" + + // Should NOT have the groupId package structure + def wrongPackageDir = new File(projectDir, "src/main/java/com/mycompany") + assert !wrongPackageDir.exists() : "Wrong package structure exists (should use custom package, not groupId): ${wrongPackageDir}" + println "PASS: Custom package structure validated" + + // Check package declaration in source files + println "Checking package declarations..." + def appContent = appJavaFile.text + assert appContent.contains("package org.custompackage.application;") : + "App.java has incorrect package declaration" + assert !appContent.contains("package com.mycompany;") : + "App.java contains wrong package declaration (com.mycompany)" + + def testContent = testJavaFile.text + assert testContent.contains("package org.custompackage.application;") : + "AppTest.java has incorrect package declaration" + println "PASS: Package declarations validated" + + // Check test.properties + def testPropsFile = new File(projectDir, "src/test/resources/test.properties") + println "Checking test properties: ${testPropsFile}" + assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}" + + def testPropsContent = testPropsFile.text + assert testPropsContent.contains("app.test.java.version=17") : + "test.properties missing java.version=17" + assert testPropsContent.contains("app.test.version=1.5.0") : + "test.properties missing version=1.5.0" + assert testPropsContent.contains("app.test.name=custom-pkg-app-test") : + "test.properties missing name=custom-pkg-app-test" + println "PASS: Test properties validated" + + // Check GitHub workflows exist + println "Checking GitHub workflows..." + assert new File(projectDir, ".github/workflows/ci.yml").exists() : + "ci.yml does not exist" + assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : + "dependency-check.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : + "gitflow-release.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : + "gitflow-hotfix.yml does not exist" + println "PASS: GitHub workflows exist" + + // Check .gitignore exists + def gitignoreFile = new File(projectDir, ".gitignore") + println "Checking .gitignore: ${gitignoreFile}" + assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}" + println "PASS: .gitignore exists" + + println "VERIFICATION PASSED" + return true +} catch (AssertionError e) { + println "ERROR: ASSERTION FAILED: ${e.message}" + throw e +} catch (Exception e) { + println "ERROR: UNEXPECTED: ${e.message}" + e.printStackTrace() + throw e +} \ No newline at end of file diff --git a/src/test/resources/projects/default-package/archetype.properties b/src/test/resources/projects/default-package/archetype.properties index c0770a8..98190ae 100644 --- a/src/test/resources/projects/default-package/archetype.properties +++ b/src/test/resources/projects/default-package/archetype.properties @@ -2,4 +2,6 @@ groupId=org.mycompany artifactId=default-pkg-app version=2.0.0 package=org.mycompany -javaVersion=17 \ No newline at end of file +javaVersion=17 +gitignore=.gitignore +github=.github diff --git a/src/test/resources/projects/default-package/goal.txt b/src/test/resources/projects/default-package/goal.txt index 0d5cfb8..1453d01 100644 --- a/src/test/resources/projects/default-package/goal.txt +++ b/src/test/resources/projects/default-package/goal.txt @@ -1 +1 @@ -clean test \ No newline at end of file +clean test diff --git a/src/test/resources/projects/default-package/verify.groovy b/src/test/resources/projects/default-package/verify.groovy index 48985ca..ae15fe5 100644 --- a/src/test/resources/projects/default-package/verify.groovy +++ b/src/test/resources/projects/default-package/verify.groovy @@ -1,42 +1,80 @@ // Verify default package behavior (should use groupId) def projectDir = new File(basedir, "project/default-pkg-app") -assert projectDir.exists() - -// Check POM -def pomFile = new File(projectDir, "pom.xml") -def pomContent = pomFile.text -assert pomContent.contains("org.mycompany") -assert pomContent.contains("default-pkg-app") -assert pomContent.contains("2.0.0") - -// Check that package structure uses groupId -assert new File(projectDir, "src/main/java/org/mycompany/App.java").exists() -assert new File(projectDir, "src/test/java/org/mycompany/AppTest.java").exists() - -// Check package declaration -def appFile = new File(projectDir, "src/main/java/org/mycompany/App.java") -def appContent = appFile.text -assert appContent.contains("package org.mycompany;") - -def testFile = new File(projectDir, "src/test/java/org/mycompany/AppTest.java") -def testContent = testFile.text -assert testContent.contains("package org.mycompany;") - -// Check test.properties -def testPropsFile = new File(projectDir, "src/test/resources/test.properties") -def testPropsContent = testPropsFile.text -assert testPropsContent.contains("app.test.version=2.0.0") -assert testPropsContent.contains("app.test.name=default-pkg-app-test") - -// Check GitHub workflows exist -assert new File(projectDir, ".github/workflows/ci.yml").exists() -assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() - -// Check .gitignore exists -assert new File(projectDir, ".gitignore").exists() - -println "Default package archetype generation test passed!" -return true \ No newline at end of file +try { + println "Starting verification for: ${basedir}" + + println "Checking project directory exists: ${projectDir}" + assert projectDir.exists() : "Project directory does not exist: ${projectDir}" + + // Check POM + def pomFile = new File(projectDir, "pom.xml") + println "Checking POM file: ${pomFile}" + assert pomFile.exists() : "POM file does not exist: ${pomFile}" + + def pomContent = pomFile.text + assert pomContent.contains("org.mycompany") : "POM missing correct groupId" + assert pomContent.contains("default-pkg-app") : "POM missing correct artifactId" + assert pomContent.contains("2.0.0") : "POM missing correct version" + println "PASS: POM file validated" + + // Check that package structure uses groupId + println "Checking package structure uses groupId..." + def appJavaFile = new File(projectDir, "src/main/java/org/mycompany/App.java") + assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}" + + def testJavaFile = new File(projectDir, "src/test/java/org/mycompany/AppTest.java") + assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}" + println "PASS: Package structure validated (using groupId as default)" + + // Check package declaration + println "Checking package declarations..." + def appContent = appJavaFile.text + assert appContent.contains("package org.mycompany;") : + "App.java has incorrect package declaration" + + def testContent = testJavaFile.text + assert testContent.contains("package org.mycompany;") : + "AppTest.java has incorrect package declaration" + println "PASS: Package declarations validated" + + // Check test.properties + def testPropsFile = new File(projectDir, "src/test/resources/test.properties") + println "Checking test properties: ${testPropsFile}" + assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}" + + def testPropsContent = testPropsFile.text + assert testPropsContent.contains("app.test.version=2.0.0") : + "test.properties missing version=2.0.0" + assert testPropsContent.contains("app.test.name=default-pkg-app-test") : + "test.properties missing name=default-pkg-app-test" + println "PASS: Test properties validated" + + // Check GitHub workflows exist + println "Checking GitHub workflows..." + assert new File(projectDir, ".github/workflows/ci.yml").exists() : + "ci.yml does not exist" + assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : + "dependency-check.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : + "gitflow-release.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : + "gitflow-hotfix.yml does not exist" + println "PASS: GitHub workflows exist" + + // Check .gitignore exists + def gitignoreFile = new File(projectDir, ".gitignore") + println "Checking .gitignore: ${gitignoreFile}" + assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}" + println "PASS: .gitignore exists" + + println "VERIFICATION PASSED" + return true +} catch (AssertionError e) { + println "ERROR: ASSERTION FAILED: ${e.message}" + throw e +} catch (Exception e) { + println "ERROR: UNEXPECTED: ${e.message}" + e.printStackTrace() + throw e +} \ No newline at end of file diff --git a/src/test/resources/projects/java11/archetype.properties b/src/test/resources/projects/java11/archetype.properties index 344a8f4..f9183de 100644 --- a/src/test/resources/projects/java11/archetype.properties +++ b/src/test/resources/projects/java11/archetype.properties @@ -2,4 +2,6 @@ groupId=org.testjava11 artifactId=java11-app version=2.3.1 package=org.testjava11 -javaVersion=11 \ No newline at end of file +javaVersion=11 +gitignore=.gitignore +github=.github diff --git a/src/test/resources/projects/java11/goal.txt b/src/test/resources/projects/java11/goal.txt index 0d5cfb8..1453d01 100644 --- a/src/test/resources/projects/java11/goal.txt +++ b/src/test/resources/projects/java11/goal.txt @@ -1 +1 @@ -clean test \ No newline at end of file +clean test diff --git a/src/test/resources/projects/java11/verify.groovy b/src/test/resources/projects/java11/verify.groovy index 206844c..cb9a5da 100644 --- a/src/test/resources/projects/java11/verify.groovy +++ b/src/test/resources/projects/java11/verify.groovy @@ -1,39 +1,78 @@ // Verify Java 11 configuration def projectDir = new File(basedir, "project/java11-app") -assert projectDir.exists() - -// Check POM has Java 11 -def pomFile = new File(projectDir, "pom.xml") -def pomContent = pomFile.text -assert pomContent.contains("11") -assert pomContent.contains("org.testjava11") -assert pomContent.contains("java11-app") -assert pomContent.contains("2.3.1") - -// Check package uses groupId as default (no package param specified) -assert new File(projectDir, "src/main/java/org/testjava11/App.java").exists() - -// Check test.properties has Java 11 and correct version -def testPropsFile = new File(projectDir, "src/test/resources/test.properties") -def testPropsContent = testPropsFile.text -assert testPropsContent.contains("app.test.java.version=11") -assert testPropsContent.contains("app.test.version=2.3.1") -assert testPropsContent.contains("app.test.name=java11-app-test") - -// Check GitHub workflows exist -assert new File(projectDir, ".github/workflows/ci.yml").exists() -assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() - -// Check .gitignore exists -assert new File(projectDir, ".gitignore").exists() - -// Check CI workflow has Java 11 in matrix -def ciWorkflow = new File(projectDir, ".github/workflows/ci.yml") -def ciContent = ciWorkflow.text -assert ciContent.contains("java: [ 11") - -println "Java 11 test passed!" -return true \ No newline at end of file +try { + println "Starting verification for: ${basedir}" + + println "Checking project directory exists: ${projectDir}" + assert projectDir.exists() : "Project directory does not exist: ${projectDir}" + + // Check POM has Java 11 + def pomFile = new File(projectDir, "pom.xml") + println "Checking POM file: ${pomFile}" + assert pomFile.exists() : "POM file does not exist: ${pomFile}" + + def pomContent = pomFile.text + assert pomContent.contains("11") : + "POM missing Java 11 compiler release" + assert pomContent.contains("org.testjava11") : "POM missing correct groupId" + assert pomContent.contains("java11-app") : "POM missing correct artifactId" + assert pomContent.contains("2.3.1") : "POM missing correct version" + println "PASS: POM file validated" + + // Check package uses groupId as default (no package param specified) + println "Checking package structure..." + def appJavaFile = new File(projectDir, "src/main/java/org/testjava11/App.java") + assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}" + println "PASS: Package structure validated" + + // Check test.properties has Java 11 and correct version + def testPropsFile = new File(projectDir, "src/test/resources/test.properties") + println "Checking test properties: ${testPropsFile}" + assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}" + + def testPropsContent = testPropsFile.text + assert testPropsContent.contains("app.test.java.version=11") : + "test.properties missing java.version=11" + assert testPropsContent.contains("app.test.version=2.3.1") : + "test.properties missing version=2.3.1" + assert testPropsContent.contains("app.test.name=java11-app-test") : + "test.properties missing name=java11-app-test" + println "PASS: Test properties validated" + + // Check GitHub workflows exist + println "Checking GitHub workflows..." + assert new File(projectDir, ".github/workflows/ci.yml").exists() : + "ci.yml does not exist" + assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : + "dependency-check.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : + "gitflow-release.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : + "gitflow-hotfix.yml does not exist" + println "PASS: GitHub workflows exist" + + // Check .gitignore exists + def gitignoreFile = new File(projectDir, ".gitignore") + println "Checking .gitignore: ${gitignoreFile}" + assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}" + println "PASS: .gitignore exists" + + // Check CI workflow has Java 11 in matrix + println "Checking CI workflow content..." + def ciWorkflow = new File(projectDir, ".github/workflows/ci.yml") + def ciContent = ciWorkflow.text + assert ciContent.contains("java: [ 11") || ciContent.contains("java: [11") : + "CI workflow does not contain Java 11 in matrix" + println "PASS: CI workflow contains Java 11" + + println "VERIFICATION PASSED" + return true +} catch (AssertionError e) { + println "ERROR: ASSERTION FAILED: ${e.message}" + throw e +} catch (Exception e) { + println "ERROR: UNEXPECTED: ${e.message}" + e.printStackTrace() + throw e +} \ No newline at end of file diff --git a/src/test/resources/projects/java21/archetype.properties b/src/test/resources/projects/java21/archetype.properties index 91f542a..b2f776a 100644 --- a/src/test/resources/projects/java21/archetype.properties +++ b/src/test/resources/projects/java21/archetype.properties @@ -2,4 +2,6 @@ groupId=com.example.java21 artifactId=test-java21 version=1.0.0 package=com.example.java21 -javaVersion=21 \ No newline at end of file +javaVersion=21 +gitignore=.gitignore +github=.github diff --git a/src/test/resources/projects/java21/goal.txt b/src/test/resources/projects/java21/goal.txt index 0d5cfb8..1453d01 100644 --- a/src/test/resources/projects/java21/goal.txt +++ b/src/test/resources/projects/java21/goal.txt @@ -1 +1 @@ -clean test \ No newline at end of file +clean test diff --git a/src/test/resources/projects/java21/verify.groovy b/src/test/resources/projects/java21/verify.groovy index e91d3ff..406d48b 100644 --- a/src/test/resources/projects/java21/verify.groovy +++ b/src/test/resources/projects/java21/verify.groovy @@ -1,40 +1,94 @@ // Verify Java 21 configuration def projectDir = new File(basedir, "project/test-java21") -assert projectDir.exists() - -// Check POM has Java 21 -def pomFile = new File(projectDir, "pom.xml") -def pomContent = pomFile.text -assert pomContent.contains("21") -assert pomContent.contains("com.example.java21") -assert pomContent.contains("test-java21") -assert pomContent.contains("1.0.0") - -// Check package uses groupId as default -assert new File(projectDir, "src/main/java/com/example/java21/App.java").exists() - -// Check test.properties has Java 21 -def testPropsFile = new File(projectDir, "src/test/resources/test.properties") -def testPropsContent = testPropsFile.text -assert testPropsContent.contains("app.test.java.version=21") -assert testPropsContent.contains("app.test.version=1.0.0") -assert testPropsContent.contains("app.test.name=test-java21-test") - -// Check GitHub workflows exist -assert new File(projectDir, ".github/workflows/ci.yml").exists() -assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() - -// Check .gitignore exists -assert new File(projectDir, ".gitignore").exists() - -// Check CI workflow has Java 21 in matrix -def ciWorkflow = new File(projectDir, ".github/workflows/ci.yml") -def ciContent = ciWorkflow.text -assert ciContent.contains("java: [ 21") -assert ciContent.contains("java-version: '21'") // In gitflow workflows - -println "Java 21 archetype generation test passed!" -return true \ No newline at end of file +try { + println "Checking project directory exists: ${projectDir}" + assert projectDir.exists() : "Project directory does not exist: ${projectDir}" + + // Check POM has Java 21 + def pomFile = new File(projectDir, "pom.xml") + println "Checking POM file: ${pomFile}" + assert pomFile.exists() : "POM file does not exist: ${pomFile}" + + def pomContent = pomFile.text + assert pomContent.contains("21") : "POM missing Java 21 compiler release" + assert pomContent.contains("com.example.java21") : "POM missing correct groupId" + assert pomContent.contains("test-java21") : "POM missing correct artifactId" + assert pomContent.contains("1.0.0") : "POM missing correct version" + println "PASS: POM file validated" + + // Check package uses groupId as default + def javaFile = new File(projectDir, "src/main/java/com/example/java21/App.java") + println "Checking Java file: ${javaFile}" + assert javaFile.exists() : "App.java does not exist at: ${javaFile}" + println "PASS: Java package structure validated" + + // Check test.properties has Java 21 + def testPropsFile = new File(projectDir, "src/test/resources/test.properties") + println "Checking test properties: ${testPropsFile}" + assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}" + + def testPropsContent = testPropsFile.text + assert testPropsContent.contains("app.test.java.version=21") : "test.properties missing java.version=21" + assert testPropsContent.contains("app.test.version=1.0.0") : "test.properties missing version=1.0.0" + assert testPropsContent.contains("app.test.name=test-java21-test") : "test.properties missing name=test-java21-test" + println "PASS: Test properties validated" + + // Check GitHub workflows exist + println "Checking GitHub workflows..." + def githubDir = new File(projectDir, ".github") + assert githubDir.exists() : ".github directory does not exist: ${githubDir}" + + def workflowsDir = new File(projectDir, ".github/workflows") + assert workflowsDir.exists() : "workflows directory does not exist: ${workflowsDir}" + + def ciYml = new File(projectDir, ".github/workflows/ci.yml") + assert ciYml.exists() : "ci.yml does not exist: ${ciYml}" + + def depCheckYml = new File(projectDir, ".github/workflows/dependency-check.yml") + assert depCheckYml.exists() : "dependency-check.yml does not exist: ${depCheckYml}" + + def gitflowReleaseYml = new File(projectDir, ".github/workflows/gitflow-release.yml") + assert gitflowReleaseYml.exists() : "gitflow-release.yml does not exist: ${gitflowReleaseYml}" + + def gitflowHotfixYml = new File(projectDir, ".github/workflows/gitflow-hotfix.yml") + assert gitflowHotfixYml.exists() : "gitflow-hotfix.yml does not exist: ${gitflowHotfixYml}" + println "PASS: GitHub workflows exist" + + // Check .gitignore exists + def gitignoreFile = new File(projectDir, ".gitignore") + println "Checking .gitignore: ${gitignoreFile}" + assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}" + println "PASS: .gitignore exists" + + // Check CI workflow has Java 21 in matrix + println "Checking CI workflow content..." + def ciContent = ciYml.text + assert ciContent.contains("java: [ 21") || ciContent.contains("java: [21") : + "CI workflow does not contain Java 21 in matrix" + println "PASS: CI workflow contains Java 21" + + // Check gitflow workflows have Java 21 + println "Checking gitflow-release workflow content..." + def gitflowReleaseContent = gitflowReleaseYml.text + assert gitflowReleaseContent.contains("java-version: '21'") : + "gitflow-release.yml does not contain java-version: '21'" + println "PASS: gitflow-release contains Java 21" + + println "Checking gitflow-hotfix workflow content..." + def gitflowHotfixContent = gitflowHotfixYml.text + assert gitflowHotfixContent.contains("java-version: '21'") : + "gitflow-hotfix.yml does not contain java-version: '21'" + println "PASS: gitflow-hotfix contains Java 21" + + println "SUCCESS: Java 21 archetype generation test PASSED!" + return true + +} catch (AssertionError e) { + println "ERROR: ASSERTION FAILED: ${e.message}" + throw e +} catch (Exception e) { + println "ERROR: UNEXPECTED ERROR: ${e.message}" + e.printStackTrace() + throw e +} \ No newline at end of file diff --git a/src/test/resources/projects/snapshot-version/archetype.properties b/src/test/resources/projects/snapshot-version/archetype.properties index 7f5ade9..cbf8398 100644 --- a/src/test/resources/projects/snapshot-version/archetype.properties +++ b/src/test/resources/projects/snapshot-version/archetype.properties @@ -2,4 +2,6 @@ groupId=com.snapshot.test artifactId=snapshot-app version=3.0.0-SNAPSHOT package=com.snapshot.test.app -javaVersion=21 \ No newline at end of file +javaVersion=21 +gitignore=.gitignore +github=.github diff --git a/src/test/resources/projects/snapshot-version/goal.txt b/src/test/resources/projects/snapshot-version/goal.txt index 0d5cfb8..1453d01 100644 --- a/src/test/resources/projects/snapshot-version/goal.txt +++ b/src/test/resources/projects/snapshot-version/goal.txt @@ -1 +1 @@ -clean test \ No newline at end of file +clean test diff --git a/src/test/resources/projects/snapshot-version/verify.groovy b/src/test/resources/projects/snapshot-version/verify.groovy index c56e60b..ed5ed17 100644 --- a/src/test/resources/projects/snapshot-version/verify.groovy +++ b/src/test/resources/projects/snapshot-version/verify.groovy @@ -1,49 +1,110 @@ // Verify SNAPSHOT version and custom package def projectDir = new File(basedir, "project/snapshot-app") -assert projectDir.exists() - -// Check POM content -def pomFile = new File(projectDir, "pom.xml") -def pomContent = pomFile.text -assert pomContent.contains("com.snapshot.test") -assert pomContent.contains("snapshot-app") -assert pomContent.contains("3.0.0-SNAPSHOT") -assert pomContent.contains("21") - -// Check package structure uses custom package parameter -assert new File(projectDir, "src/main/java/com/snapshot/test/app/App.java").exists() -assert new File(projectDir, "src/test/java/com/snapshot/test/app/AppTest.java").exists() - -// Check package declarations -def appFile = new File(projectDir, "src/main/java/com/snapshot/test/app/App.java") -def appContent = appFile.text -assert appContent.contains("package com.snapshot.test.app;") - -def testFile = new File(projectDir, "src/test/java/com/snapshot/test/app/AppTest.java") -def testContent = testFile.text -assert testContent.contains("package com.snapshot.test.app;") - -// Check test.properties -def testPropsFile = new File(projectDir, "src/test/resources/test.properties") -def testPropsContent = testPropsFile.text -assert testPropsContent.contains("app.test.version=3.0.0-SNAPSHOT") -assert testPropsContent.contains("app.test.java.version=21") -assert testPropsContent.contains("app.test.name=snapshot-app-test") - -// Verify no placeholders remain -assert !testPropsContent.contains("\${") -assert !pomContent.contains("\${artifactId}") -assert !pomContent.contains("\${version}") - -// Check GitHub workflows exist -assert new File(projectDir, ".github/workflows/ci.yml").exists() -assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() - -// Check .gitignore exists -assert new File(projectDir, ".gitignore").exists() - -println "SNAPSHOT version test with custom package passed!" -return true \ No newline at end of file +try { + println "Checking project directory exists: ${projectDir}" + assert projectDir.exists() : "Project directory does not exist: ${projectDir}" + + // Check POM content + def pomFile = new File(projectDir, "pom.xml") + println "Checking POM file: ${pomFile}" + assert pomFile.exists() : "POM file does not exist: ${pomFile}" + + def pomContent = pomFile.text + assert pomContent.contains("com.snapshot.test") : "POM missing correct groupId" + assert pomContent.contains("snapshot-app") : "POM missing correct artifactId" + assert pomContent.contains("3.0.0-SNAPSHOT") : "POM missing correct SNAPSHOT version" + assert pomContent.contains("21") : "POM missing Java 21 compiler release" + println "PASS: POM file validated" + + // Check package structure uses custom package parameter + def appJavaFile = new File(projectDir, "src/main/java/com/snapshot/test/app/App.java") + println "Checking App.java: ${appJavaFile}" + assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}" + + def testJavaFile = new File(projectDir, "src/test/java/com/snapshot/test/app/AppTest.java") + println "Checking AppTest.java: ${testJavaFile}" + assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}" + println "PASS: Package structure validated" + + // Check package declarations + println "Checking package declarations..." + def appContent = appJavaFile.text + assert appContent.contains("package com.snapshot.test.app;") : + "App.java has incorrect package declaration" + + def testContent = testJavaFile.text + assert testContent.contains("package com.snapshot.test.app;") : + "AppTest.java has incorrect package declaration" + println "PASS: Package declarations validated" + + // Check test.properties + def testPropsFile = new File(projectDir, "src/test/resources/test.properties") + println "Checking test properties: ${testPropsFile}" + assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}" + + def testPropsContent = testPropsFile.text + assert testPropsContent.contains("app.test.version=3.0.0-SNAPSHOT") : + "test.properties missing version=3.0.0-SNAPSHOT" + assert testPropsContent.contains("app.test.java.version=21") : + "test.properties missing java.version=21" + assert testPropsContent.contains("app.test.name=snapshot-app-test") : + "test.properties missing name=snapshot-app-test" + println "PASS: Test properties validated" + + // Verify no placeholders remain + println "Checking for unresolved placeholders..." + assert !testPropsContent.contains("\${") : + "test.properties contains unresolved placeholders: ${testPropsContent.findAll(/\$\{[^}]+\}/)}" + assert !pomContent.contains("\${artifactId}") : + "POM contains unresolved \${artifactId}" + assert !pomContent.contains("\${version}") : + "POM contains unresolved \${version}" + println "PASS: No unresolved placeholders" + + // Check GitHub workflows exist + println "Checking GitHub workflows..." + def githubDir = new File(projectDir, ".github") + assert githubDir.exists() : ".github directory does not exist: ${githubDir}" + + def workflowsDir = new File(projectDir, ".github/workflows") + assert workflowsDir.exists() : "workflows directory does not exist: ${workflowsDir}" + + assert new File(projectDir, ".github/workflows/ci.yml").exists() : + "ci.yml does not exist" + assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : + "dependency-check.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : + "gitflow-release.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : + "gitflow-hotfix.yml does not exist" + println "PASS: GitHub workflows exist" + + // Check .gitignore exists + def gitignoreFile = new File(projectDir, ".gitignore") + println "Checking .gitignore: ${gitignoreFile}" + assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}" + println "PASS: .gitignore exists" + + // Check gitflow workflows have Java 21 + println "Checking gitflow workflows for Java 21..." + def gitflowReleaseContent = new File(projectDir, ".github/workflows/gitflow-release.yml").text + assert gitflowReleaseContent.contains("java-version: '21'") : + "gitflow-release.yml does not contain java-version: '21'" + + def gitflowHotfixContent = new File(projectDir, ".github/workflows/gitflow-hotfix.yml").text + assert gitflowHotfixContent.contains("java-version: '21'") : + "gitflow-hotfix.yml does not contain java-version: '21'" + println "PASS: Gitflow workflows contain Java 21" + + println "SUCCESS: SNAPSHOT version test with custom package PASSED!" + return true + +} catch (AssertionError e) { + println "ERROR: ASSERTION FAILED: ${e.message}" + throw e +} catch (Exception e) { + println "ERROR: UNEXPECTED ERROR: ${e.message}" + e.printStackTrace() + throw e +} \ No newline at end of file diff --git a/src/test/resources/projects/special-chars/archetype.properties b/src/test/resources/projects/special-chars/archetype.properties index 5c3d0e1..97805aa 100644 --- a/src/test/resources/projects/special-chars/archetype.properties +++ b/src/test/resources/projects/special-chars/archetype.properties @@ -2,4 +2,6 @@ groupId=io.example.test artifactId=my-special-app version=1.0.0-RC1 package=io.example.test -javaVersion=17 \ No newline at end of file +javaVersion=17 +gitignore=.gitignore +github=.github diff --git a/src/test/resources/projects/special-chars/goal.txt b/src/test/resources/projects/special-chars/goal.txt index 0d5cfb8..1453d01 100644 --- a/src/test/resources/projects/special-chars/goal.txt +++ b/src/test/resources/projects/special-chars/goal.txt @@ -1 +1 @@ -clean test \ No newline at end of file +clean test diff --git a/src/test/resources/projects/special-chars/verify.groovy b/src/test/resources/projects/special-chars/verify.groovy index 9cac4f6..48ff94e 100644 --- a/src/test/resources/projects/special-chars/verify.groovy +++ b/src/test/resources/projects/special-chars/verify.groovy @@ -1,44 +1,83 @@ // Verify handling of special characters in artifactId and version def projectDir = new File(basedir, "project/my-special-app") -assert projectDir.exists() - -// Check POM content -def pomFile = new File(projectDir, "pom.xml") -def pomContent = pomFile.text -assert pomContent.contains("io.example.test") -assert pomContent.contains("my-special-app") -assert pomContent.contains("1.0.0-RC1") -assert pomContent.contains("17") - -// Check package structure (should use groupId since no package param) -assert new File(projectDir, "src/main/java/io/example/test/App.java").exists() -assert new File(projectDir, "src/test/java/io/example/test/AppTest.java").exists() - -// Check package declarations -def appFile = new File(projectDir, "src/main/java/io/example/test/App.java") -def appContent = appFile.text -assert appContent.contains("package io.example.test;") - -def testFile = new File(projectDir, "src/test/java/io/example/test/AppTest.java") -def testContent = testFile.text -assert testContent.contains("package io.example.test;") - -// Check test.properties handles special chars correctly -def testPropsFile = new File(projectDir, "src/test/resources/test.properties") -def testPropsContent = testPropsFile.text -assert testPropsContent.contains("app.test.name=my-special-app-test") -assert testPropsContent.contains("app.test.version=1.0.0-RC1") -assert testPropsContent.contains("app.test.java.version=17") - -// Check GitHub workflows exist -assert new File(projectDir, ".github/workflows/ci.yml").exists() -assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() -assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() - -// Check .gitignore exists -assert new File(projectDir, ".gitignore").exists() - -println "Special characters test passed!" -return true \ No newline at end of file +try { + println "Starting verification for: ${basedir}" + + println "Checking project directory exists: ${projectDir}" + assert projectDir.exists() : "Project directory does not exist: ${projectDir}" + + // Check POM content + def pomFile = new File(projectDir, "pom.xml") + println "Checking POM file: ${pomFile}" + assert pomFile.exists() : "POM file does not exist: ${pomFile}" + + def pomContent = pomFile.text + assert pomContent.contains("io.example.test") : "POM missing correct groupId" + assert pomContent.contains("my-special-app") : "POM missing correct artifactId" + assert pomContent.contains("1.0.0-RC1") : "POM missing correct version" + assert pomContent.contains("17") : "POM missing Java 17 compiler release" + println "PASS: POM file validated" + + // Check package structure (should use groupId since no package param) + println "Checking package structure..." + def appJavaFile = new File(projectDir, "src/main/java/io/example/test/App.java") + assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}" + + def testJavaFile = new File(projectDir, "src/test/java/io/example/test/AppTest.java") + assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}" + println "PASS: Package structure validated" + + // Check package declarations + println "Checking package declarations..." + def appContent = appJavaFile.text + assert appContent.contains("package io.example.test;") : + "App.java has incorrect package declaration" + + def testContent = testJavaFile.text + assert testContent.contains("package io.example.test;") : + "AppTest.java has incorrect package declaration" + println "PASS: Package declarations validated" + + // Check test.properties handles special chars correctly + def testPropsFile = new File(projectDir, "src/test/resources/test.properties") + println "Checking test properties: ${testPropsFile}" + assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}" + + def testPropsContent = testPropsFile.text + assert testPropsContent.contains("app.test.name=my-special-app-test") : + "test.properties missing name=my-special-app-test" + assert testPropsContent.contains("app.test.version=1.0.0-RC1") : + "test.properties missing version=1.0.0-RC1" + assert testPropsContent.contains("app.test.java.version=17") : + "test.properties missing java.version=17" + println "PASS: Test properties validated with special characters" + + // Check GitHub workflows exist + println "Checking GitHub workflows..." + assert new File(projectDir, ".github/workflows/ci.yml").exists() : + "ci.yml does not exist" + assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : + "dependency-check.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : + "gitflow-release.yml does not exist" + assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : + "gitflow-hotfix.yml does not exist" + println "PASS: GitHub workflows exist" + + // Check .gitignore exists + def gitignoreFile = new File(projectDir, ".gitignore") + println "Checking .gitignore: ${gitignoreFile}" + assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}" + println "PASS: .gitignore exists" + + println "VERIFICATION PASSED" + return true +} catch (AssertionError e) { + println "ERROR: ASSERTION FAILED: ${e.message}" + throw e +} catch (Exception e) { + println "ERROR: UNEXPECTED: ${e.message}" + e.printStackTrace() + throw e +} \ No newline at end of file