daml/daml-assistant/integration-tests/BUILD.bazel
Samir Talwar 9976b4cd50
Bazel: Factor out logic around Protobuf JARs. [KVL-714] (#8084)
* kvutils: Use ScalaPB to generate a Scala JAR for daml_kvutils.proto.

* Bazel: Delete the unused `da_java_binary` rule, and inline `_wrap_rule`.

* Bazel: Factor out Java/Scala protobuf class generation into a helper.

CHANGELOG_BEGIN
CHANGELOG_END

* daml-lf/archive: Use `proto_jars`.

* Bazel: Remove the visibility modifier from `proto_jars`.

It's too confusing. Just make everything public.

* daml-lf/archive: Push protobuf source tarballs into `proto_jars`.

* Bazel: Add comments to the various parts of `proto_jars`.

* daml-assistant: Do unpleasant things with `location` in Bazel.
2020-11-27 08:34:53 +00:00

239 lines
7.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
load("//bazel_tools:haskell.bzl", "da_haskell_library", "da_haskell_test")
load("@os_info//:os_info.bzl", "is_windows")
load("@build_environment//:configuration.bzl", "mvn_version")
genrule(
name = "integration-tests-mvn",
srcs = [
"@mvn_dev_env//:mvn",
"//daml-lf/archive:daml_lf_dev_archive_proto_java",
"//daml-lf/archive:daml_lf_dev_archive_proto_java_pom",
"//language-support/java/bindings:libbindings-java.jar",
"//language-support/java/bindings:bindings-java_pom.xml",
"//language-support/java/bindings-rxjava:libbindings-rxjava.jar",
"//language-support/java/bindings-rxjava:bindings-rxjava_pom.xml",
"//ledger/ledger-api-auth-client:libledger-api-auth-client.jar",
"//ledger/ledger-api-auth-client:ledger-api-auth-client_pom.xml",
"//language-support/java/codegen:shaded_binary.jar",
"//language-support/java/codegen:shaded_binary_pom.xml",
"//ledger-api/rs-grpc-bridge:librs-grpc-bridge.jar",
"//ledger-api/rs-grpc-bridge:rs-grpc-bridge_pom.xml",
"//docs:quickstart-java.tar.gz",
],
outs = ["integration-tests-mvn.tar"],
cmd = """
set -euo pipefail
TMP_DIR=$$(mktemp -d)
MVN_DB="$$TMP_DIR/m2"
MVN=($(locations @mvn_dev_env//:mvn))
MVN="$${{MVN[0]}}"
install_mvn() {{
"$$MVN" -q install:install-file \\
-Dmaven.repo.local=$$MVN_DB \\
"-DgroupId=$$1" \\
"-DartifactId=$$2" \\
"-Dfile=$$3" \\
"-DpomFile=$$4" \\
-Dpackaging=jar \\
-Dversion={mvn}
}}
tar xf $(location //docs:quickstart-java.tar.gz) -C "$$TMP_DIR"
install_mvn \\
"com.daml" "daml-lf-archive" \\
$$(echo $(locations //daml-lf/archive:daml_lf_dev_archive_proto_java) | xargs -n1 echo | grep -v -- '-src\\.jar$$') \\
$(location //daml-lf/archive:daml_lf_dev_archive_proto_java_pom)
install_mvn \\
"com.daml" "bindings-java" \\
$(location //language-support/java/bindings:libbindings-java.jar) \\
$(location //language-support/java/bindings:bindings-java_pom.xml)
install_mvn \\
"com.daml" "bindings-rxjava" \\
$(location //language-support/java/bindings-rxjava:libbindings-rxjava.jar) \\
$(location //language-support/java/bindings-rxjava:bindings-rxjava_pom.xml)
install_mvn \\
"com.daml" "codegen-java" \\
$(location //language-support/java/codegen:shaded_binary.jar) \\
$(location //language-support/java/codegen:shaded_binary_pom.xml)
install_mvn \\
"com.daml" "rs-grpc-bridge" \\
$(location //ledger-api/rs-grpc-bridge:librs-grpc-bridge.jar) \\
$(location //ledger-api/rs-grpc-bridge:rs-grpc-bridge_pom.xml)
install_mvn \\
"com.daml" "ledger-api-auth-client" \\
$(location //ledger/ledger-api-auth-client:libledger-api-auth-client.jar) \\
$(location //ledger/ledger-api-auth-client:ledger-api-auth-client_pom.xml)
"$$MVN" -q -Dmaven.repo.local=$$MVN_DB -f "$$TMP_DIR/quickstart-java/pom.xml" dependency:resolve dependency:resolve-plugins
$(execpath //bazel_tools/sh:mktar) $@ -C $$(dirname $$MVN_DB) $$(basename $$MVN_DB)
""".format(mvn = mvn_version),
tools = ["//bazel_tools/sh:mktar"],
)
ts_libraries = [
"//language-support/ts/daml-types:npm_package",
"//language-support/ts/daml-ledger:npm_package",
"//language-support/ts/daml-react:npm_package",
]
create_daml_app_resources = [
"//templates:create-daml-app-test-resources/messaging.patch",
"//templates:create-daml-app-test-resources/testDeps.json",
"//templates:create-daml-app-test-resources/index.test.ts",
]
da_haskell_library(
name = "integration-test-utils",
srcs = ["src/DA/Daml/Assistant/IntegrationTestUtils.hs"],
hackage_deps = [
"base",
"conduit",
"conduit-extra",
"extra",
"filepath",
"tasty",
"text",
],
src_strip_prefix = "src",
visibility = ["//visibility:public"],
deps = [
"//libs-haskell/bazel-runfiles",
"//libs-haskell/da-hs-base",
"//libs-haskell/test-utils",
],
)
da_haskell_test(
name = "integration-tests",
timeout = "long",
srcs = [
"src/DA/Daml/Assistant/FreePort.hs",
"src/DA/Daml/Assistant/IntegrationTests.hs",
],
args = [
"$(location //:yarn)",
],
data = [
":integration-tests-mvn",
"//release:sdk-release-tarball",
"@local_jdk//:bin/java.exe" if is_windows else "@local_jdk//:bin/java",
"//:yarn",
"//compiler/damlc/tests:generate-simple-dalf",
"@mvn_dev_env//:mvn",
"@tar_dev_env//:tar",
] + ([] if is_windows else ts_libraries),
# Im sure the mvn stuff will be flaky.
flaky = True,
hackage_deps = [
"aeson",
"async",
"base",
"conduit",
"conduit-extra",
"containers",
"directory",
"extra",
"filepath",
"http-client",
"http-types",
"jwt",
"lens",
"lens-aeson",
"network",
"process",
"safe",
"tar",
"tar-conduit",
"tasty",
"tasty-hunit",
"text",
"unordered-containers",
"utf8-string",
"vector",
],
main_function = "DA.Daml.Assistant.IntegrationTests.main",
visibility = ["//visibility:public"],
deps = [
":integration-test-utils",
"//:sdk-version-hs-lib",
"//daml-assistant/daml-helper:daml-helper-lib",
"//language-support/hs/bindings:hs-ledger",
"//language-support/ts/codegen/tests:daml2js-test-helpers",
"//libs-haskell/bazel-runfiles",
"//libs-haskell/da-hs-base",
"//libs-haskell/test-utils",
],
)
da_haskell_library(
name = "create-daml-app-tests-lib",
srcs = ["src/DA/Daml/Assistant/CreateDamlAppTests.hs"],
data = [
"//release:sdk-release-tarball",
"@local_jdk//:bin/java.exe" if is_windows else "@local_jdk//:bin/java",
"//:yarn",
"@patch_dev_env//:patch",
] + ([] if is_windows else ts_libraries + create_daml_app_resources),
hackage_deps = [
"aeson",
"aeson-extra",
"base",
"bytestring",
"directory",
"extra",
"filepath",
"tagged",
"tasty",
"tasty-hunit",
"unordered-containers",
],
visibility = ["//visibility:public"],
deps = [
":integration-test-utils",
"//language-support/ts/codegen/tests:daml2js-test-helpers",
"//libs-haskell/bazel-runfiles",
"//libs-haskell/da-hs-base",
"//libs-haskell/test-utils",
],
)
da_haskell_test(
name = "create-daml-app-tests",
timeout = "long",
srcs = ["src/DA/Daml/Assistant/CreateDamlAppTestsMain.hs"],
args = [
"$(location @nodejs//:npm_bin)",
"$(location @nodejs//:node_bin)",
],
data = [
"@nodejs//:node_bin",
"@nodejs//:npm_bin",
],
hackage_deps = ["base"],
main_function = "DA.Daml.Assistant.CreateDamlAppTestsMain.main",
# Exclusive until we stop hardcoding port numbers in index.test.ts
tags = ["exclusive"],
deps = [":create-daml-app-tests-lib"],
)
da_haskell_test(
name = "create-daml-app-tests-proj-name",
timeout = "long",
srcs = ["src/DA/Daml/Assistant/CreateDamlAppTestsMain.hs"],
args = [
"$(location @nodejs//:npm_bin)",
"$(location @nodejs//:node_bin)",
"--project-name",
"not-create-daml-app",
],
data = [
"@nodejs//:node_bin",
"@nodejs//:npm_bin",
],
hackage_deps = ["base"],
main_function = "DA.Daml.Assistant.CreateDamlAppTestsMain.main",
# Exclusive until we stop hardcoding port numbers in index.test.ts
tags = ["exclusive"],
deps = [":create-daml-app-tests-lib"],
)