diff --git a/.githooks/pre-commit b/.githooks/pre-commit index 7bd9edd8bb..164e989f38 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -105,11 +105,11 @@ fi if [ $NUM_JAVA_FILES_CHANGED -gt 0 ] then echo_status "Running Java linter..." - bazel --batch run --disk_cache="$BAZEL_CACHE_DIR" //:google_java_format_verification + mvn fmt:check FORMAT_STATUS=$? if [ $FORMAT_STATUS != 0 ] then - echo_error "Linting failed." "Please run :google_java_format and try again." + echo_error "Linting failed." "Please run mvn fmt:format and try again." exit 1 fi fi @@ -118,7 +118,7 @@ fi if [ $NUM_JAVA_FILES_CHANGED -gt 0 ] || [ $NUM_UNIT_GOLDEN_FILES_CHANGED -gt 0 ] then echo_status "Checking unit tests..." - bazel --batch test //:units --disk_cache="$BAZEL_CACHE_DIR" + mvn test TEST_STATUS=$? if [ $TEST_STATUS != 0 ] then diff --git a/.github/workflows/ci-maven.yaml b/.github/workflows/ci-maven.yaml index 8252ecc241..76a7206815 100644 --- a/.github/workflows/ci-maven.yaml +++ b/.github/workflows/ci-maven.yaml @@ -7,7 +7,7 @@ name: ci-maven env: SHOWCASE_VERSION: 0.25.0 jobs: - units: + build: runs-on: ubuntu-latest strategy: matrix: @@ -22,11 +22,34 @@ jobs: - run: java -version - name: Unit Tests run: | - mvn verify --batch-mode --no-transfer-progress -Dcheckstyle.skip \ + mvn install --batch-mode --no-transfer-progress -Dcheckstyle.skip \ -Dfmt.skip + - run: bazelisk version + - name: Integration Tests + run: | + bazel --batch test //test/integration/... + - name: Gradle Build Generated Storage Client Library + run: | + echo "Building Storage lib from generated source..." + mkdir /tmp/java-storage + bazelisk --batch build @com_google_googleapis//google/storage/v2:google-cloud-storage-v2-java + tar zxvf bazel-bin/external/com_google_googleapis/google/storage/v2/google-cloud-storage-v2-java.tar.gz -C /tmp/java-storage + pushd /tmp/java-storage/google-cloud-storage-v2-java + ./gradlew clean build publishToMavenLocal sourcesJar allJars + popd - units-java8: - name: "units (8) except gapic-generator-java" + - name: Gradle Build Generated Compute Client Library + run: | + echo "Building Compute lib from generated source..." + mkdir /tmp/java-compute + bazelisk --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java + tar zxvf bazel-bin/external/com_google_googleapis/google/cloud/compute/v1small/google-cloud-compute-small-v1-java.tar.gz -C /tmp/java-compute + pushd /tmp/java-compute/google-cloud-compute-small-v1-java + ./gradlew clean build publishToMavenLocal sourcesJar allJars + popd + + build-java8-except-gapic-generator-java: + name: "build(8) except for gapic-generator-java" runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -65,8 +88,8 @@ jobs: -Dcheckstyle.skip -Dmaven.compiler.useIncrementalCompilation=false \ -Dfmt.skip - units-java8-gapic-generator-java: - name: "units (8) for gapic-generator-java" + build-java8-gapic-generator-java: + name: "build(8) for gapic-generator-java" runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -89,6 +112,29 @@ jobs: shell: bash run: | mvn -V -B -ntp surefire:test --projects 'gapic-generator-java' + - run: bazelisk version + - name: Integration Tests + run: | + bazelisk --batch test //test/integration/... + - name: Gradle Build Generated Storage Client Library + run: | + echo "Building Storage lib from generated source..." + mkdir /tmp/java-storage + bazelisk --batch build @com_google_googleapis//google/storage/v2:google-cloud-storage-v2-java + tar zxvf bazel-bin/external/com_google_googleapis/google/storage/v2/google-cloud-storage-v2-java.tar.gz -C /tmp/java-storage + pushd /tmp/java-storage/google-cloud-storage-v2-java + ./gradlew clean build publishToMavenLocal sourcesJar allJars + popd + + - name: Gradle Build Generated Compute Client Library + run: | + echo "Building Compute lib from generated source..." + mkdir /tmp/java-compute + bazelisk --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java + tar zxvf bazel-bin/external/com_google_googleapis/google/cloud/compute/v1small/google-cloud-compute-small-v1-java.tar.gz -C /tmp/java-compute + pushd /tmp/java-compute/google-cloud-compute-small-v1-java + ./gradlew clean build publishToMavenLocal sourcesJar allJars + popd lint: runs-on: ubuntu-latest @@ -116,26 +162,6 @@ jobs: java-version: ${{ matrix.java }} distribution: temurin - run: java -version - - - name: Bazel File Cache Setup - id: cache-bazel - uses: actions/cache@v3 - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-${{ hashFiles('WORKSPACE') }} - restore-keys: ${{ runner.os }}- - - name: Bazel Cache Not Found - if: steps.cache-bazel.outputs.cache-hit != 'true' - run: | - echo "No cache found." - - name: Bazel Cache Found - if: steps.cache-bazel.outputs.cache-hit == 'true' - run: | - echo -n "Cache found. Cache size: " - du -sh ~/.cache/bazel - echo "If the cache seems broken, update the root WORKSPACE file with a trivial change." - echo "The old cache will disappear after 7 days." - - name: Install maven modules run: | mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 60fddf8afb..0000000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,115 +0,0 @@ -on: - push: - branches: - - main - pull_request: -name: ci -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java: [ 8, 11 ] - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v3 - with: - java-version: ${{ matrix.java }} - distribution: temurin - - run: java -version - - run: bazelisk version - - name: Bazel File Cache Setup - id: cache-bazel - uses: actions/cache@v3 - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-${{ hashFiles('WORKSPACE') }} - restore-keys: ${{ runner.os }}- - - name: Bazel Cache Not Found - if: steps.cache-bazel.outputs.cache-hit != 'true' - run: | - echo "No cache found." - - name: Bazel Cache Found - if: steps.cache-bazel.outputs.cache-hit == 'true' - run: | - echo -n "Cache found. Cache size: " - du -sh ~/.cache/bazel - echo "If the cache seems broken, update the root WORKSPACE file with a trivial change." - echo "The old one will disappear after 7 days." - - - name: Integration Tests - run: bazelisk --batch test //test/integration/... - - - uses: actions/upload-artifact@v3 - if: ${{ failure() }} - with: - name: test-artifacts - path: ~/.cache/bazel/*/*/*/gapic_generator_java/bazel-out/*/testlogs/* - retention-days: 5 - - generate-client-libraries: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java: [ 8, 11 ] - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v3 - with: - java-version: ${{ matrix.java }} - distribution: temurin - - run: java -version - - run: bazelisk version - - name: Bazel File Cache Setup - id: cache-bazel - uses: actions/cache@v3 - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-${{ hashFiles('WORKSPACE') }} - restore-keys: ${{ runner.os }}- - - name: Bazel Cache Not Found - if: steps.cache-bazel.outputs.cache-hit != 'true' - run: | - echo "No cache found." - - name: Bazel Cache Found - if: steps.cache-bazel.outputs.cache-hit == 'true' - run: | - echo -n "Cache found. Cache size: " - du -sh ~/.cache/bazel - echo "If the cache seems broken, update the root WORKSPACE file with a trivial change." - echo "The old cache will disappear after 7 days." - - - name: Gradle Build Generated Storage Client Library - run: | - echo "Building Storage lib from generated source..." - mkdir /tmp/java-storage - bazelisk --batch build @com_google_googleapis//google/storage/v2:google-cloud-storage-v2-java - tar zxvf bazel-bin/external/com_google_googleapis/google/storage/v2/google-cloud-storage-v2-java.tar.gz -C /tmp/java-storage - pushd /tmp/java-storage/google-cloud-storage-v2-java - ./gradlew clean build publishToMavenLocal sourcesJar allJars - popd - - - name: Gradle Build Generated Compute Client Library - run: | - echo "Building Compute lib from generated source..." - mkdir /tmp/java-compute - bazelisk --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java - tar zxvf bazel-bin/external/com_google_googleapis/google/cloud/compute/v1small/google-cloud-compute-small-v1-java.tar.gz -C /tmp/java-compute - pushd /tmp/java-compute/google-cloud-compute-small-v1-java - ./gradlew clean build publishToMavenLocal sourcesJar allJars - popd - - license-header: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v3 - with: - go-version: '^1.13.1' - - name: License Header Check - run: | - go install github.com/google/addlicense@latest - addlicense -c "Google LLC" -l apache -check $(find $PWD -type f -name '*.java' ! -path '**/showcase/**' ! -iname '*PlaceholderFile.java') - diff --git a/.gitignore b/.gitignore index 447d437087..585e94f980 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ target/ # Vscode Settings .vscode/settings.json + +*.iml diff --git a/BUILD.bazel b/BUILD.bazel index 6196f677fe..d2a67f4eee 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -2,117 +2,10 @@ load("@rules_java//java:defs.bzl", "java_binary", "java_proto_library") package(default_visibility = ["//visibility:public"]) -# TODO: some dependencies may be runtime only. -MAIN_DEPS = [ - ":service_config_java_proto", - "@com_google_api_api_common//jar", - "@com_google_api_gax_java//gax", - "@com_google_api_gax_java//gax:gax_testlib", - "@com_google_api_gax_java//gax-grpc:gax_grpc", - "@com_google_api_gax_java//gax-grpc:gax_grpc_testlib", - "@com_google_api_gax_java//gax-httpjson:gax_httpjson", - "@com_google_api_gax_java//gax-httpjson:gax_httpjson_testlib", - "@com_google_api_grpc_proto_google_common_protos", - "@com_google_auto_value_auto_value_annotations//jar", # Ideally should be compile-time only, but this is OK. - "@com_google_code_gson//jar", - "@com_google_googleapis//gapic/metadata:metadata_java_proto", - "@com_google_guava_guava", - "@com_google_http_client_google_http_client//jar", - "@com_google_protobuf//:protobuf_java", - "@com_google_protobuf//:protobuf_java_util", - "@google_java_format_all_deps//jar", - "@io_grpc_grpc_java//api", - "@io_grpc_grpc_java//protobuf", - "@io_grpc_grpc_java//stub", - "@javax_annotation_javax_annotation_api//jar", - "@junit_junit//jar", - "@org_threeten_threetenbp//jar", - "@org_yaml_snakeyaml//jar", -] - -MAIN_DEPS_DEBUG_RUNTIME_ONLY = [ - "@com_google_googleapis//google/api:api_java_proto", - "@com_google_googleapis//google/cloud:extended_operations_java_proto", - "@com_google_googleapis//google/longrunning:longrunning_java_proto", - "@com_google_protobuf//java/core", -] - -# Some dependencies are runtime only, but that's fine for tests. -TEST_DEPS = [ - ":test_java_protos", - "@com_google_googleapis//google/logging/v2:logging_java_proto", - "@com_google_googleapis//google/pubsub/v1:pubsub_java_proto", - "@com_google_googleapis//google/rpc:rpc_java_proto", - "@com_google_truth_truth//jar", - "@io_github_java_diff_utils//jar", -] - -proto_library( - name = "service_config_proto", - srcs = ["gapic-generator-java/src/main/proto/service_config.proto"], - deps = [ - "@com_google_googleapis//google/rpc:code_proto", - "@com_google_protobuf//:duration_proto", - "@com_google_protobuf//:wrappers_proto", - "@com_google_protobuf//:struct_proto", - ], -) -java_proto_library( - name = "service_config_java_proto", - deps = [":service_config_proto"], -) - -proto_library( - name = "test_protos", - srcs = glob(["gapic-generator-java/src/test/proto/*.proto"]), - deps = [ - "@com_google_googleapis//google/api:annotations_proto", - "@com_google_googleapis//google/api:client_proto", - "@com_google_googleapis//google/api:field_behavior_proto", - "@com_google_googleapis//google/api:routing_proto", - "@com_google_googleapis//google/api:resource_proto", - "@com_google_googleapis//google/cloud:extended_operations_proto", - "@com_google_googleapis//google/longrunning:operations_proto", - "@com_google_googleapis//google/rpc:error_details_proto", - "@com_google_googleapis//google/rpc:status_proto", - "@com_google_protobuf//:duration_proto", - "@com_google_protobuf//:empty_proto", - "@com_google_protobuf//:field_mask_proto", - "@com_google_protobuf//:timestamp_proto", - "@com_google_protobuf//:struct_proto", - ], -) -java_proto_library( - name = "test_java_protos", - deps = [ - ":test_protos", - "@com_google_googleapis//google/cloud:common_resources_proto" - ], -) - -java_plugin( - name = "autovalue_plugin", - processor_class = "com.google.auto.value.processor.AutoValueProcessor", - deps = ["@com_google_auto_value_auto_value//jar"], -) - -java_library( - name = "gapic_generator_java", - srcs = glob(["gapic-generator-java/src/main/java/**/*.java"]), - plugins = [":autovalue_plugin"], - deps = MAIN_DEPS, -) - -java_library( - name = "gapic_generator_java_test", - srcs = glob(["gapic-generator-java/src/test/java/**/*.java"]), - deps = [":gapic_generator_java"] + MAIN_DEPS + TEST_DEPS, -) - java_binary( name = "protoc-gen-java_gapic", main_class = "com.google.api.generator.Main", - runtime_deps = [":gapic_generator_java"] + MAIN_DEPS, + runtime_deps = ["@maven//:com_google_api_gapic_generator_java"], ) # Request dumper binary, which dumps the CodeGeneratorRequest to a file on disk @@ -134,7 +27,7 @@ java_binary( java_binary( name = "protoc-gen-code_generator_request_dumper", main_class = "com.google.api.generator.debug.CodeGeneratorRequestDumper", - runtime_deps = [":gapic_generator_java"] + MAIN_DEPS + MAIN_DEPS_DEBUG_RUNTIME_ONLY, + runtime_deps = ["@maven//:com_google_api_gapic_generator_java"], ) # A binary similar to protoc-gen-java_gapic but reads the CodeGeneratorRequest @@ -147,89 +40,9 @@ java_binary( java_binary( name = "code_generator_request_file_to_gapic_main", main_class = "com.google.api.generator.debug.CodeGeneratorRequestFileToGapicMain", - runtime_deps = [":gapic_generator_java"] + MAIN_DEPS + MAIN_DEPS_DEBUG_RUNTIME_ONLY, -) - -# another test resource -genrule( - name = "basic_proto_descriptor", - srcs = ["gapic-generator-java/src/test/proto/basic.proto"], - outs = ["test-proto.descriptorset"], - cmd = "$(location @com_google_protobuf//:protoc) " + - "--include_source_info --include_imports --descriptor_set_out=$(OUTS) $(SRCS)", - message = "Generating proto descriptor", - tools = ["@com_google_protobuf//:protoc"], + runtime_deps = ["@maven//:com_google_api_gapic_generator_java"], ) -# Unit tests. Run each test with, e.g., -# bazel test //:unit_com_google_api_generator_engine_JavaCodeGeneratorTest -[java_test( - # 35 is the length of 'gapic-generator-java/src/test/java' - # 5 is the length of '.java' - name = "unit_" + file[35:-5].replace('gapic-generator-java/', '').replace('/', '_'), - test_class = file[35:-5].replace('gapic-generator-java/', '').replace('/', '.'), - runtime_deps = [ - ":gapic_generator_java", - ":gapic_generator_java_test", - ] + MAIN_DEPS + TEST_DEPS, - data = [":basic_proto_descriptor"] + glob([ - "gapic-generator-java/src/test/java/**/*.golden", - "gapic-generator-java/src/test/resources/**", - ]), - tags = ["small"], -) for file in glob(["gapic-generator-java/src/test/java/**/*Test.java"])] - -test_suite(name = "units", tags = ["small"]) - -# Tests that generate and save unit golden (.golden) files. -GOLDEN_UPDATING_UNIT_TESTS = [ - "com.google.api.generator.engine.JavaCodeGeneratorTest", - "com.google.api.generator.gapic.composer.ComposerTest", - "com.google.api.generator.gapic.composer.ClientLibraryPackageInfoComposerTest", - "com.google.api.generator.gapic.composer.common.BatchingDescriptorComposerTest", - "com.google.api.generator.gapic.composer.grpc.GrpcServiceCallableFactoryClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.GrpcServiceStubClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.MockServiceClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.MockServiceImplClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.ServiceClientClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.ServiceClientTestClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.ServiceSettingsClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.ServiceStubClassComposerTest", - "com.google.api.generator.gapic.composer.grpc.ServiceStubSettingsClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.GrpcServiceCallableFactoryClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.GrpcServiceStubClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.HttpJsonServiceCallableFactoryClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.HttpJsonServiceClientTestClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.HttpJsonServiceStubClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.ServiceClientClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.ServiceClientTestClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.ServiceSettingsClassComposerTest", - "com.google.api.generator.gapic.composer.grpcrest.ServiceStubSettingsClassComposerTest", - "com.google.api.generator.gapic.composer.resourcename.ResourceNameHelperClassComposerTest", - "com.google.api.generator.gapic.composer.rest.HttpJsonServiceCallableFactoryClassComposerTest", - "com.google.api.generator.gapic.composer.rest.HttpJsonServiceStubClassComposerTest", - "com.google.api.generator.gapic.composer.rest.ServiceClientTestClassComposerTest", - "com.google.api.generator.gapic.composer.rest.ServiceSettingsClassComposerTest", - "com.google.api.generator.gapic.composer.rest.ServiceStubSettingsClassComposerTest", -] - -# Manually runs a single JUnit test for the tests that generate and save .golden -# files. To update .golden files, run with, e.g., -# bazel run //:update_com_google_api_generator_engine_JavaCodeGeneratorTest -[java_binary( - name = "update_%s" % test_class.replace('.', '_'), - main_class = "com.google.api.generator.test.framework.SingleJUnitTestRunner", - args = [test_class], - runtime_deps = [ - ":gapic_generator_java", - ":gapic_generator_java_test", - ] + MAIN_DEPS + TEST_DEPS, - data = glob([ - "gapic-generator-java/src/test/java/**/*.golden", - "gapic-generator-java/src/test/resources/**", - ]), -) for test_class in GOLDEN_UPDATING_UNIT_TESTS] - # google-java-format java_binary( name = "google_java_format_binary", @@ -237,23 +50,3 @@ java_binary( main_class = "com.google.googlejavaformat.java.Main", runtime_deps = ["@google_java_format_all_deps//jar"], ) - -genrule( - name = "google_java_format", - outs = ["google_java_format.sh"], - cmd = "echo 'find gapic-generator-java/src test -name \'*.java\' | grep -v /goldens/ | xargs $(execpath :google_java_format_binary) --replace' > $(OUTS)", - executable = 1, - tools = [":google_java_format_binary"], - local = 1, -) - -# Run `bazel build //:google_java_format_verification` to verify that gapic-generator-java sources -# are formatted correctly. -genrule( - name = "google_java_format_verification", - outs = ["google_java_format_verification.sh"], - cmd = "echo 'find gapic-generator-java/src test -name \'*.java\' | grep -v /goldens/ | xargs $(execpath :google_java_format_binary) --dry-run --set-exit-if-changed' > $(OUTS)", - executable = 1, - tools = [":google_java_format_binary"], - local = 1, -) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 1e7a583cb2..e7c508066b 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -16,55 +16,38 @@ - Run linter checks without actually doing the formatting. - ```sh - bazel run //:google_java_format_verification - ``` - or - ```sh - mvn fmt:check - ``` + ```sh + mvn fmt:check + ``` - Format files. - ```sh - bazel run //:google_java_format - ``` - or - ```sh - mvn fmt:format - ``` + ```sh + mvn fmt:format + ``` ## Test Running - Run all unit and integration tests. - ```sh - bazel test //... - ``` + ```sh + mvn test # unit tests + bazel test //... # integration tests + ``` - Run all unit tests. - ```sh - bazel test //:units - ``` - or - ```sh - mvn test - ``` + ```sh + mvn test + ``` -- Run a single unit test like `JavaCodeGeneratorTest.java`: - - ```sh - bazel test //:unit_com_google_api_generator_engine_JavaCodeGeneratorTest - ``` - or - ```sh - mvn test -Dtest=JavaCodeGeneratorTest +- Run a single or multiple unit tests: - mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" - ``` + ```sh + mvn test -Dtest=JavaCodeGeneratorTest - + mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" + ``` - Update all unit test golden files: @@ -74,10 +57,6 @@ - Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: - ```sh - bazel run //:update_com_google_api_generator_engine_JavaCodeGeneratorTest - ``` - or ```sh mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest ``` diff --git a/PROPERTIES.bzl b/PROPERTIES.bzl deleted file mode 100644 index 4d5e0f286e..0000000000 --- a/PROPERTIES.bzl +++ /dev/null @@ -1,31 +0,0 @@ -PROPERTIES = { - "version.com_google_protobuf": "3.21.7", - # Version of google-java-format is downgraded from 1.8 to 1.7, because 1.8 supports java 11 minimum, while our JRE is java 8. - "version.google_java_format": "1.7", - "version.io_grpc_java": "1.42.1", - - # Common deps. - "maven.com_google_guava_guava": "com.google.guava:guava:30.1-android", - "maven.com_google_code_findbugs_jsr305": "com.google.code.findbugs:jsr305:3.0.0", - "maven.com_google_auto_value_auto_value": "com.google.auto.value:auto-value:1.7.2", - "maven.com_google_auto_value_auto_value_annotations": "com.google.auto.value:auto-value-annotations:1.7.2", - "maven.com_google_code_gson": "com.google.code.gson:gson:2.8.6", - "maven.com_google_protobuf_protobuf_java": "com.google.protobuf:protobuf-java:3.21.7", - "maven.io_github_java_diff_utils": "io.github.java-diff-utils:java-diff-utils:4.11", - "maven.javax_annotation_javax_annotation_api": "javax.annotation:javax.annotation-api:1.3.2", - - # Gapic YAML parsing for batching settings. - "maven.org_yaml_snakeyaml": "org.yaml:snakeyaml:1.26", - - # ServiceStubSettings class. Used only in generated code. - "maven.org_threeten_threetenbp": "org.threeten:threetenbp:1.3.3", - - # Testing. - "maven.junit_junit": "junit:junit:4.13.1", - # This hamcrest-core dependency is for running JUnit test manually, before JUnit 4.11 it's wrapped along with JUnit package. - # But now it has to be explicitly added. - "maven.org_hamcrest_hamcrest_core": "org.hamcrest:hamcrest-core:1.3", - "maven.org_mockito_mockito_core": "org.mockito:mockito-core:2.21.0", - # Keep in sync with gax-java. - "maven.com_google_truth_truth": "com.google.truth:truth:1.1.2", -} diff --git a/WORKSPACE b/WORKSPACE index de55cfc78c..9ae7798c52 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,32 +1,6 @@ workspace(name = "gapic_generator_java") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:jvm.bzl", "jvm_maven_import_external") - -# DO NOT REMOVE. -# This is needed to clobber any transitively-pulled in versions of bazel_skylib so that packages -# like protobuf will build. -http_archive( - name = "bazel_skylib", - sha256 = "74d544d96f4a5bb630d465ca8bbcfe231e3594e5aae57e1edbf17a6eb3ca2506", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz", - ], -) - -jvm_maven_import_external( - name = "google_java_format_all_deps", - artifact = "com.google.googlejavaformat:google-java-format:jar:all-deps:1.7", - licenses = [ - "notice", - "reciprocal", - ], - server_urls = [ - "https://repo.maven.apache.org/maven2/", - "http://repo1.maven.org/maven2/", - ], -) # gax-java and its transitive dependencies must be imported before # gapic-generator-java dependencies to match the order in googleapis repository, @@ -62,14 +36,10 @@ http_archive( ], ) -load("//:repositories.bzl", "gapic_generator_java_repositories") - -gapic_generator_java_repositories() - # protobuf -RULES_JVM_EXTERNAL_TAG = "4.2" +RULES_JVM_EXTERNAL_TAG = "4.5" -RULES_JVM_EXTERNAL_SHA = "cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca" +RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6" http_archive( name = "rules_jvm_external", @@ -78,13 +48,31 @@ http_archive( url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG, ) +load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") + +rules_jvm_external_deps() + +load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup") + +rules_jvm_external_setup() + load("@com_google_protobuf//:protobuf_deps.bzl", "PROTOBUF_MAVEN_ARTIFACTS", "protobuf_deps") load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( artifacts = PROTOBUF_MAVEN_ARTIFACTS, - generate_compat_repositories = True, + repositories = ["https://repo.maven.apache.org/maven2/"], +) + +_gapic_generator_java_version = "2.12.1-SNAPSHOT" # {x-version-update:gapic-generator-java:current} + +maven_install( + artifacts = [ + "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, + ], + fail_on_missing_checksum = False, repositories = [ + "m2Local", "https://repo.maven.apache.org/maven2/", ], ) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/test/framework/Utils.java b/gapic-generator-java/src/test/java/com/google/api/generator/test/framework/Utils.java index 5960b722ef..0970189ccb 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/test/framework/Utils.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/test/framework/Utils.java @@ -34,6 +34,10 @@ public class Utils { * @param codegen the generated code from JUnit test */ public static void saveCodegenToFile(Class clazz, String fileName, String codegen) { + if (System.getProperty("updateUnitGoldens") == null) { + return; + } + String relativeGoldenDir = getTestoutGoldenDir(clazz); saveCodeToFile(relativeGoldenDir, fileName, codegen); } @@ -46,16 +50,6 @@ public static void saveSampleCodegenToFile( private static void saveCodeToFile(String relativeGoldenDir, String fileName, String codegen) { Path testOutputDir = Paths.get("src", "test", "java", relativeGoldenDir); - - // Auto-detect project workspace when running `bazel run //:update_TargetTest`. - // TODO: remove when we don't use Bazel. - String workspaceDir = System.getenv("BUILD_WORKSPACE_DIRECTORY"); - if (workspaceDir != null) { - testOutputDir = Paths.get(workspaceDir).resolve(testOutputDir); - } else if (System.getProperty("updateUnitGoldens") == null) { - return; - } - testOutputDir.toFile().mkdirs(); try (FileWriter myWriter = new FileWriter(testOutputDir.resolve(fileName).toFile())) { myWriter.write(codegen); diff --git a/pom.xml b/pom.xml index 3950b69edc..5cf661aae5 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 0.1.0-SNAPSHOT - true + true UTF-8 diff --git a/repositories.bzl b/repositories.bzl deleted file mode 100644 index 5b651757d5..0000000000 --- a/repositories.bzl +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:jvm.bzl", "jvm_maven_import_external") -load("//:PROPERTIES.bzl", "PROPERTIES") - -def gapic_generator_java_repositories(): - # Import dependencies shared between Gradle and Bazel (i.e. maven dependencies) - for name, artifact in PROPERTIES.items(): - _maybe( - jvm_maven_import_external, - name = name, - strip_repo_prefix = "maven.", - artifact = _fix_bazel_artifact_format(artifact), - server_urls = ["https://repo.maven.apache.org/maven2/", "http://repo1.maven.org/maven2/"], - licenses = ["notice", "reciprocal"], - ) - - # Import Bazel-only dependencies (Gradle version will import maven artifacts of same - # version, while Bazel will depend on Bazel workspaces). The versions are shared in the - # properties file. - _protobuf_version = PROPERTIES["version.com_google_protobuf"] - _maybe( - http_archive, - name = "com_google_protobuf", - urls = ["https://github.com/protocolbuffers/protobuf/archive/v%s.zip" % _protobuf_version], - strip_prefix = "protobuf-%s" % _protobuf_version, - ) - - _maybe( - jvm_maven_import_external, - name = "google_java_format_all_deps", - artifact = "com.google.googlejavaformat:google-java-format:jar:all-deps:%s" % PROPERTIES["version.google_java_format"], - server_urls = ["https://repo.maven.apache.org/maven2/", "http://repo1.maven.org/maven2/"], - licenses = ["notice", "reciprocal"], - ) - - _maybe( - http_archive, - name = "bazel_skylib", - sha256 = "18ae58793e9036305e02333f6d59c9e0ea73e6d066d874c04bb83a1c5c9ac4a7", - strip_prefix = "bazel-skylib-872e9b06e18ae8ba2897cb65b9aaa172aa6279f3", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/872e9b06e18ae8ba2897cb65b9aaa172aa6279f3.tar.gz"], - ) - - _maybe( - native.bind, - name = "guava", - actual = "@com_google_guava_guava//jar", - ) - - _maybe( - native.bind, - name = "gson", - actual = "@com_google_code_gson_gson//jar", - ) - -def _maybe(repo_rule, name, strip_repo_prefix = "", **kwargs): - if not name.startswith(strip_repo_prefix): - return - repo_name = name[len(strip_repo_prefix):] - if repo_name in native.existing_rules(): - return - repo_rule(name = repo_name, **kwargs) - -def _fix_bazel_artifact_format(artifact_id): - # Fix the artifact id format discrepancy between Bazel & Gradle. - # This is relevant only when classifier is specified explicitly. - # Bazel format: groupId:artifactId:jar:classifier:version - # Gradle format: groupId:artifactId:version:classifier - ids = artifact_id.split(":") - if len(ids) != 4: - return artifact_id - return "%s:%s:%s:%s:%s" % (ids[0], ids[1], "jar", ids[3], ids[2])