diff --git a/.circleci/config.yml b/.circleci/config.yml index 1e9062e147..bb0ad683f8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,7 +16,7 @@ executors: java: docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest # common commands commands: @@ -38,6 +38,32 @@ commands: when: always - store_test_results: path: ~/test-results + - run: + name: Codecov + command: | + set -x + + curl -Os https://cli.codecov.io/latest/linux/codecov + chmod +x codecov + + # Prepare extra arguments: include pull request number if set + EXTRA="" + if [ -n "$CIRCLE_PR_NUMBER" ]; then + EXTRA="--pull-request-number $CIRCLE_PR_NUMBER" + fi + + # Build the set of common arguments. + COMMON_ARGS="--token $CODECOV_TOKEN --branch $CIRCLE_BRANCH --commit-sha $CIRCLE_SHA1 $EXTRA --recurse-submodules --git-service github" + + ls -lha + + ./codecov --version + + # Upload the coverage report. + ./codecov upload-coverage $COMMON_ARGS + + # Upload the test reports. + ./codecov do-upload --report-type test_results $COMMON_ARGS configure-gpg: steps: @@ -80,13 +106,12 @@ jobs: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest steps: - checkout - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - resolve-dependencies - save_cache: paths: @@ -96,13 +121,12 @@ jobs: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest steps: - checkout - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | @@ -119,7 +143,6 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | @@ -130,13 +153,12 @@ jobs: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-docker + - image: velo/toolchains-4-ci-builds:latest steps: - checkout - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Prepare environment' command: | @@ -144,7 +166,7 @@ jobs: - run: name: 'Build and test examples' command: | - ./mvnw -ntp -B verify -Pexamples -rf :querydsl-examples + ./mvnw -ntp -B install -Pexamples -rf :querydsl-examples - save-test-results buildQuarkusExample: <<: *defaults @@ -164,7 +186,7 @@ jobs: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-docker + - image: velo/toolchains-4-ci-builds:latest steps: - checkout - run: @@ -189,7 +211,7 @@ jobs: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest - image: mysql:5.6.38 environment: - MYSQL_ROOT_PASSWORD=querydsl @@ -201,17 +223,16 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | - ./mvnw -ntp -B package -Pci -Dgroups=com.querydsl.core.testutil.MySQL + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.MySQL - save-test-results testPostgreSQL: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest - image: postgis/postgis:16-3.4-alpine environment: - POSTGRES_USER=querydsl @@ -222,17 +243,16 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | - ./mvnw -ntp -B package -Pci -Dgroups=com.querydsl.core.testutil.PostgreSQL + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.PostgreSQL - save-test-results testCUBRID: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest - image: cubrid/cubrid:11.3 environment: - CUBRID_DB=demodb @@ -241,17 +261,16 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | - ./mvnw -ntp -B package -Pci -Dgroups=com.querydsl.core.testutil.CUBRID + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.CUBRID - save-test-results testOracle: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest - image: gvenzl/oracle-xe:slim-faststart environment: - ORACLE_PASSWORD=querydsl @@ -263,34 +282,32 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | - ./mvnw -ntp -B package -Pci -Dgroups=com.querydsl.core.testutil.Oracle + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.Oracle - save-test-results testMongo: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest - image: mongo:3.6.1 steps: - checkout - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | - ./mvnw -ntp -B package -Pci -Dgroups=com.querydsl.core.testutil.MongoDB + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.MongoDB - save-test-results testFirebird: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest - image: jacobalberty/firebird:2.5.9-ss environment: - ISC_PASSWORD=masterkey @@ -303,27 +320,75 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | - ./mvnw -ntp -B package -Pci -Dgroups=com.querydsl.core.testutil.Firebird + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.Firebird - save-test-results testEmbedded: <<: *defaults working_directory: ~/querydsl docker: - - image: velo/toolchains-4-ci-builds:with-21 + - image: velo/toolchains-4-ci-builds:latest steps: - checkout - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - run: name: 'Test' command: | - ./mvnw -ntp -B package -Pci -Dgroups=com.querydsl.core.testutil.EmbeddedDatabase + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.EmbeddedDatabase + - save-test-results + testDB2: + # Use the machine executor so we have full VM capabilities (e.g. docker running as admin) + machine: true + working_directory: ~/querydsl + environment: + # You can also set any DB2-specific environment variables here if needed + DB2INST1_PASSWORD: a3sd!fDj + steps: + - checkout + - restore_cache: + keys: + - querydsl-dependencies-{{ checksum "pom.xml" }} + # Start the DB2 container in detached mode + - run: + name: "Start DB2 container" + command: | + # Start the DB2 container with the same settings as your docker-compose file + docker run -d --privileged --name db2 \ + -p 50000:50000 \ + -e DB2INST1_PASSWORD=a3sd!fDj \ + -e DB2INSTANCE=db2inst1 \ + -e DBNAME=sample \ + -e LICENSE=accept \ + -e ARCHIVE_LOGS=false \ + -e AUTOCONFIG=false \ + ibmcom/db2:11.5.0.0 + + echo "Waiting for DB2 to initialize..." + # Basic health-check loop; replace with a more robust check if available + for i in {1..60}; do + if docker logs db2 2>&1 | grep -q "All databases are now active"; then + echo "DB2 appears to be up" + break + fi + echo "Waiting ($i/60)..." + sleep 10 + done + docker ps + + # Run your tests against DB2; adjust the Maven command according to your project + - run: + name: "Run DB2 tests" + command: | + ./mvnw -ntp -B install -Pci -Dgroups=com.querydsl.core.testutil.DB2 -Dtoolchain.skip=true + # Clean up the DB2 container once the tests are done + - run: + name: "Stop and remove DB2 container" + command: | + docker stop db2 && docker rm db2 - save-test-results deploySnapshot: @@ -335,7 +400,6 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - resolve-dependencies - configure-gpg - run: @@ -352,7 +416,6 @@ jobs: - restore_cache: keys: - querydsl-dependencies-{{ checksum "pom.xml" }} - - querydsl-dependencies- - resolve-dependencies - configure-gpg - run: @@ -436,6 +499,12 @@ workflows: - 'Resolve dependencies' filters: <<: *all-branches + - testDB2: + name: 'Test DB2' + requires: + - 'Resolve dependencies' + filters: + <<: *all-branches snapshot: jobs: diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml new file mode 100644 index 0000000000..e159a49b9c --- /dev/null +++ b/.mvn/extensions.xml @@ -0,0 +1,24 @@ + + + + + com.marvinformatics.jacoco + easy-jacoco-maven-plugin + 0.1.3 + + diff --git a/README.md b/README.md index 98e4d427aa..c7ee841b57 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![CircleCI](https://dl.circleci.com/status-badge/img/gh/OpenFeign/querydsl/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/OpenFeign/querydsl/tree/master) [![codecov](https://codecov.io/gh/OpenFeign/querydsl/graph/badge.svg?token=6yJhkzBRmx)](https://codecov.io/gh/OpenFeign/querydsl) ![Maven Central Version](https://img.shields.io/maven-central/v/io.github.openfeign.querydsl/querydsl-core) + ## Querydsl Querydsl is a framework which enables the construction of type-safe SQL-like queries for multiple backends including JPA, MongoDB and SQL in Java. diff --git a/docker-compose.yml b/docker-compose.yml index b273180080..494e786d38 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: "2.4" services: # Provides an easy way to ensure slow-starting databases are ready when the tests run block-until-healthy: diff --git a/pom.xml b/pom.xml index e956e8a0c5..5c47c9863c 100644 --- a/pom.xml +++ b/pom.xml @@ -155,6 +155,7 @@ * ${osgi.import.package.root} + jacocoArgLine @@ -363,7 +364,7 @@ maven-surefire-plugin ${surefire.version} - --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED + ${jacocoArgLine} --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED UTC @@ -484,19 +485,7 @@ ../target/dist - - org.jacoco - jacoco-maven-plugin - 0.8.13 - - - prepare-agent - - prepare-agent - - - - + org.apache.maven.plugins maven-compiler-plugin @@ -553,6 +542,47 @@ + + org.jacoco + jacoco-maven-plugin + 0.8.13 + + + com/querydsl/** + io/github/openfeign/querydsl/** + + + + + com.marvinformatics.jacoco + easy-jacoco-maven-plugin + 0.1.3 + + + + + + INSTRUCTION + COVEREDRATIO + 0.70 + + + + + + true + true + + + com/querydsl/** + io/github/openfeign/querydsl/** + + + querydsl-scala + + + + org.apache.maven.plugins maven-scm-plugin @@ -765,6 +795,7 @@ true true true + true diff --git a/querydsl-libraries/querydsl-scala/pom.xml b/querydsl-libraries/querydsl-scala/pom.xml index d830b2d6bf..5a75568082 100644 --- a/querydsl-libraries/querydsl-scala/pom.xml +++ b/querydsl-libraries/querydsl-scala/pom.xml @@ -155,8 +155,8 @@ scala-maven-plugin 4.9.5 - ${character.encoding} ${scala.version} + -encoding ${character.encoding} diff --git a/querydsl-tooling/querydsl-codegen/src/main/java/com/querydsl/codegen/GeneratedAnnotationResolver.java b/querydsl-tooling/querydsl-codegen/src/main/java/com/querydsl/codegen/GeneratedAnnotationResolver.java index 3bb2badb12..87e620f404 100644 --- a/querydsl-tooling/querydsl-codegen/src/main/java/com/querydsl/codegen/GeneratedAnnotationResolver.java +++ b/querydsl-tooling/querydsl-codegen/src/main/java/com/querydsl/codegen/GeneratedAnnotationResolver.java @@ -1,5 +1,6 @@ package com.querydsl.codegen; +import com.querydsl.core.annotations.Generated; import java.lang.annotation.Annotation; import org.jetbrains.annotations.Nullable; @@ -10,7 +11,7 @@ public final class GeneratedAnnotationResolver { private static final Class DEFAULT_GENERATED_ANNOTATION_CLASS = - resolveJavaDefault(); + Generated.class; /** * Use the {@code generatedAnnotationClass} or use the JDK one. diff --git a/querydsl-tooling/querydsl-kotlin-codegen/src/test/kotlin/com/querydsl/kotlin/codegen/utils.kt b/querydsl-tooling/querydsl-kotlin-codegen/src/test/kotlin/com/querydsl/kotlin/codegen/utils.kt index 4bf71bb64d..eba5eab4d5 100644 --- a/querydsl-tooling/querydsl-kotlin-codegen/src/test/kotlin/com/querydsl/kotlin/codegen/utils.kt +++ b/querydsl-tooling/querydsl-kotlin-codegen/src/test/kotlin/com/querydsl/kotlin/codegen/utils.kt @@ -2,4 +2,4 @@ package com.querydsl.kotlin.codegen import com.querydsl.codegen.GeneratedAnnotationResolver -val generatedAnnotationImport = GeneratedAnnotationResolver.resolveDefault().name.replace("annotation", "`annotation`") \ No newline at end of file +val generatedAnnotationImport = GeneratedAnnotationResolver.resolveDefault().name.replace("annotation", "`annotation`").replace("`annotation`s", "annotations") \ No newline at end of file