From 39346c789ad9d1e83f570705102842b6c2e0999c Mon Sep 17 00:00:00 2001 From: Michael Vorburger Date: Mon, 15 Apr 2024 21:32:51 +0200 Subject: [PATCH] fix (build): Re-enable tests after move --- .pre-commit-config.yaml | 4 +- common/common/BUILD | 36 ------ common/markdown/BUILD | 2 - java/dev/enola/common/io/BUILD | 17 ++- .../common/io/iri/NamespaceConverterTest.java | 0 .../io/mediatype/MediaTypeDetectorTest.java | 2 +- .../io/mediatype/MediaTypeProviderTest.java | 17 +-- .../io/mediatype/MediaTypeProvidersTest.java | 14 +-- .../common/io/mediatype/MediaTypesTest.java | 45 ++++++-- .../io/resource/ClasspathUrlResourceTest.java | 0 .../common/io/resource/EmptyResourceTest.java | 0 .../common/io/resource/ErrorResourceTest.java | 0 .../resource/FileDescriptorResourceTest.java | 0 .../common/io/resource/FileResourceTest.java | 0 .../io/resource/HttpUrlResourceTest.java | 0 .../io/resource/MarkdownResourceTest.java | 0 .../io/resource/MemoryResourceTest.java | 0 .../common/io/resource/NullResourceTest.java | 0 .../io/resource/ReplacingResourceTest.java | 0 .../io/resource/ResourceProvidersTest.java | 0 .../io/resource/StringResourceTest.java | 0 .../enola/common/io/resource/URIsTest.java | 0 .../stream/FileGlobResourceProviderTest.java | 0 .../stream/GlobResourceProvidersTest.java | 0 .../enola/common/io/test_resources}/empty | 0 .../enola/common/io/test_resources}/empty.png | 0 .../common/io/test_resources}/test-emoji.txt | 0 .../common/io/test_resources}/test-french.txt | 0 .../io/test_resources}/test-hello-ascii.txt | 0 .../io/test_resources}/test-random-binary | 0 .../enola/common/io/test_resources}/test.json | 0 .../enola/common/io/test_resources}/test.md | 0 .../enola/common/io/test_resources}/test.png | Bin .../common/io/test_resources}/test.proto | 0 .../common/io/test_resources}/test.textproto | 0 java/dev/enola/common/protobuf/BUILD | 12 +- .../protobuf/ProtobufMediaTypesTest.java | 0 java/dev/enola/datatype/BUILD | 12 +- .../datatype/DatatypeRepositoryTest.java | 0 .../dev/enola/datatype/DatatypesTest.java | 0 .../common/io/mediatype/TestMediaTypes.java | 49 -------- .../io/resource/TestAbstractResource.java | 24 ---- ...nola.common.io.mediatype.MediaTypeProvider | 1 - tools/bazel/BUILD | 0 tools/bazel/junit.bzl | 106 ++++++++++++++++++ 45 files changed, 198 insertions(+), 143 deletions(-) delete mode 100644 common/common/BUILD rename java/{src/test/java => }/dev/enola/common/io/iri/NamespaceConverterTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/mediatype/MediaTypeDetectorTest.java (98%) rename java/{src/test/java => }/dev/enola/common/io/mediatype/MediaTypeProviderTest.java (72%) rename java/{src/test/java => }/dev/enola/common/io/mediatype/MediaTypeProvidersTest.java (76%) rename java/{src/test/java => }/dev/enola/common/io/mediatype/MediaTypesTest.java (64%) rename java/{src/test/java => }/dev/enola/common/io/resource/ClasspathUrlResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/EmptyResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/ErrorResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/FileDescriptorResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/FileResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/HttpUrlResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/MarkdownResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/MemoryResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/NullResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/ReplacingResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/ResourceProvidersTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/StringResourceTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/URIsTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/stream/FileGlobResourceProviderTest.java (100%) rename java/{src/test/java => }/dev/enola/common/io/resource/stream/GlobResourceProvidersTest.java (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/empty (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/empty.png (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test-emoji.txt (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test-french.txt (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test-hello-ascii.txt (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test-random-binary (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test.json (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test.md (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test.png (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test.proto (100%) rename java/{src/test/resources => dev/enola/common/io/test_resources}/test.textproto (100%) rename java/{src/test/java => }/dev/enola/common/protobuf/ProtobufMediaTypesTest.java (100%) rename java/{src/test/java => }/dev/enola/datatype/DatatypeRepositoryTest.java (100%) rename java/{src/test/java => }/dev/enola/datatype/DatatypesTest.java (100%) delete mode 100644 java/src/test/java/dev/enola/common/io/mediatype/TestMediaTypes.java delete mode 100644 java/src/test/java/dev/enola/common/io/resource/TestAbstractResource.java delete mode 100644 java/src/test/resources/META-INF/services/dev.enola.common.io.mediatype.MediaTypeProvider create mode 100644 tools/bazel/BUILD create mode 100644 tools/bazel/junit.bzl diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 161bb4a8d..137816694 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -66,7 +66,7 @@ repos: - --use-current-year - id: insert-license files: \.(bash|bazel|textproto|yaml)$ - exclude: ^docs/use|core/impl/src/test/resources + exclude: ^docs/use|core/impl/src/test/resources|.*test_resources.* args: - --comment-style - "#" @@ -76,7 +76,7 @@ repos: - --use-current-year - id: insert-license files: \.(md|html)$ - exclude: ^.github|src/test/resources/|docs/blog/posts/|docs/use/execmd/demo.md + exclude: ^.github|src/test/resources/|docs/blog/posts/|docs/use/execmd/demo.md|.*test_resources.* args: - --comment-style - "" diff --git a/common/common/BUILD b/common/common/BUILD deleted file mode 100644 index 4b265e616..000000000 --- a/common/common/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# -# Copyright 2023 The Enola Authors -# -# 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("@rules_java//java:defs.bzl", "java_library", "java_test") - -[java_test( - name = name[:-len(".java")], - size = "small", - srcs = glob(["src/test/java/**/*.java"]), - resources = glob(["src/test/resources/**/*"]), - runtime_deps = [ - "@maven//:org_slf4j_slf4j_simple", - ], - deps = [ - "@maven//:com_google_guava_guava", - "@maven//:com_google_jimfs_jimfs", - "@maven//:com_google_truth_extensions_truth_java8_extension", - "@maven//:com_google_truth_truth", - "@maven//:junit_junit", - ], -) for name in glob([ - "src/test/java/**/*Test.java", -])] diff --git a/common/markdown/BUILD b/common/markdown/BUILD index 998f44c67..e5e30295e 100644 --- a/common/markdown/BUILD +++ b/common/markdown/BUILD @@ -19,7 +19,6 @@ load("@rules_java//java:defs.bzl", "java_library", "java_test") java_library( name = "markdown", srcs = glob(["src/main/java/**/*.java"]), - resources = glob(["src/main/resources/**/*"]), visibility = ["//:__subpackages__"], deps = [ "@maven//:ch_vorburger_exec_exec", @@ -32,7 +31,6 @@ java_library( name = name[:-len(".java")], size = "small", srcs = glob(["src/test/java/**/*.java"]), - resources = glob(["src/test/resources/**/*"]), runtime_deps = [ "@maven//:org_slf4j_slf4j_simple", ], diff --git a/java/dev/enola/common/io/BUILD b/java/dev/enola/common/io/BUILD index c422ce1c3..8455b9c24 100644 --- a/java/dev/enola/common/io/BUILD +++ b/java/dev/enola/common/io/BUILD @@ -14,7 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@rules_java//java:defs.bzl", "java_library", "java_test") +load("@rules_java//java:defs.bzl", "java_library") +load("//tools/bazel:junit.bzl", "junit_tests") java_library( name = "io", @@ -33,3 +34,17 @@ java_library( "@maven//:org_slf4j_slf4j_api", ], ) + +junit_tests( + name = "tests", + srcs = glob(["**/*Test.java"]), + plugins = ["//tools/bazel/java_plugin:autoservice"], + # TODO Add support for resources with resource_strip_prefix to junit_tests... + resource_strip_prefix = "java/dev/enola/common/io/test_resources", + resources = glob(["test_resources/*"]), + deps = [ + ":io", + "//java/dev/enola/common/protobuf", + "@maven//:com_google_auto_service_auto_service_annotations", + ], +) diff --git a/java/src/test/java/dev/enola/common/io/iri/NamespaceConverterTest.java b/java/dev/enola/common/io/iri/NamespaceConverterTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/iri/NamespaceConverterTest.java rename to java/dev/enola/common/io/iri/NamespaceConverterTest.java diff --git a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypeDetectorTest.java b/java/dev/enola/common/io/mediatype/MediaTypeDetectorTest.java similarity index 98% rename from java/src/test/java/dev/enola/common/io/mediatype/MediaTypeDetectorTest.java rename to java/dev/enola/common/io/mediatype/MediaTypeDetectorTest.java index 26886254a..a437363bb 100644 --- a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypeDetectorTest.java +++ b/java/dev/enola/common/io/mediatype/MediaTypeDetectorTest.java @@ -68,7 +68,7 @@ public void testDetect() { // Test that TestMediaTypes was correctly registered assertThat(md.detect(null, null, URI.create("whatever:something.test"))) - .isEqualTo(TestMediaTypes.TEST); + .isEqualTo(MediaTypesTest.TEST); // TODO Assert.assertThrows() ? md.detect(null, null, URI.create("bad-URI-without-scheme")); diff --git a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypeProviderTest.java b/java/dev/enola/common/io/mediatype/MediaTypeProviderTest.java similarity index 72% rename from java/src/test/java/dev/enola/common/io/mediatype/MediaTypeProviderTest.java rename to java/dev/enola/common/io/mediatype/MediaTypeProviderTest.java index f2123d73c..973475800 100644 --- a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypeProviderTest.java +++ b/java/dev/enola/common/io/mediatype/MediaTypeProviderTest.java @@ -21,7 +21,7 @@ import com.google.common.net.MediaType; -import dev.enola.common.io.resource.TestAbstractResource; +import dev.enola.common.io.resource.AbstractResource; import org.junit.Test; @@ -29,7 +29,7 @@ public class MediaTypeProviderTest { - TestMediaTypes tmt = new TestMediaTypes(); + MediaTypesTest tmt = new MediaTypesTest(); @Test public void nomatch() { @@ -41,21 +41,24 @@ public void nomatch() { @Test public void match() { var uri = URI.create("test:MediaTypeProviderTest"); - var resource = new TestAbstractResource(uri, TestMediaTypes.TEST); - assertThat(tmt.detect(resource)).hasValue(TestMediaTypes.TEST); + var resource = new TestAbstractResource(uri, MediaTypesTest.TEST); + assertThat(tmt.detect(resource)).hasValue(MediaTypesTest.TEST); } @Test public void alternative() { var uri = URI.create("test:MediaTypeProviderTest"); - var resource = new TestAbstractResource(uri, TestMediaTypes.TEST_ALTERNATIVE); - assertThat(tmt.detect(resource)).hasValue(TestMediaTypes.TEST); + var resource = new TestAbstractResource(uri, MediaTypesTest.TEST_ALTERNATIVE); + assertThat(tmt.detect(resource)).hasValue(MediaTypesTest.TEST); } @Test public void extension() { var uri = URI.create("test:MediaTypeProviderTest.test"); var resource = new TestAbstractResource(uri, MediaType.ANY_TYPE); - assertThat(tmt.detect(resource)).hasValue(TestMediaTypes.TEST); + assertThat(tmt.detect(resource)).hasValue(MediaTypesTest.TEST); } + + private static record TestAbstractResource(URI uri, MediaType mediaType) + implements AbstractResource {} } diff --git a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypeProvidersTest.java b/java/dev/enola/common/io/mediatype/MediaTypeProvidersTest.java similarity index 76% rename from java/src/test/java/dev/enola/common/io/mediatype/MediaTypeProvidersTest.java rename to java/dev/enola/common/io/mediatype/MediaTypeProvidersTest.java index b40c565ba..a1930fba7 100644 --- a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypeProvidersTest.java +++ b/java/dev/enola/common/io/mediatype/MediaTypeProvidersTest.java @@ -20,9 +20,6 @@ import static com.google.common.collect.Sets.newHashSet; import static com.google.common.truth.Truth.assertThat; -import static dev.enola.common.io.mediatype.TestMediaTypes.TEST; -import static dev.enola.common.io.mediatype.TestMediaTypes.TEST_ALTERNATIVE; - import org.junit.Test; public class MediaTypeProvidersTest { @@ -30,17 +27,18 @@ public class MediaTypeProvidersTest { @Test public void empty() { var mtp = new MediaTypeProviders(); - assertThat(mtp.normalize(TEST_ALTERNATIVE)).isEqualTo(TEST_ALTERNATIVE); + assertThat(mtp.normalize(MediaTypesTest.TEST_ALTERNATIVE)) + .isEqualTo(MediaTypesTest.TEST_ALTERNATIVE); assertThat(mtp.extensionsToTypes()).isEmpty(); assertThat(mtp.knownTypesWithAlternatives()).isEmpty(); } @Test public void testMediaType() { - var mtp = new MediaTypeProviders(new StandardMediaTypes(), new TestMediaTypes()); - assertThat(mtp.normalize(TEST_ALTERNATIVE)).isEqualTo(TEST); - assertThat(mtp.extensionsToTypes()).containsEntry("test", TEST); + var mtp = new MediaTypeProviders(new StandardMediaTypes(), new MediaTypesTest()); + assertThat(mtp.normalize(MediaTypesTest.TEST_ALTERNATIVE)).isEqualTo(MediaTypesTest.TEST); + assertThat(mtp.extensionsToTypes()).containsEntry("test", MediaTypesTest.TEST); assertThat(mtp.knownTypesWithAlternatives()) - .containsEntry(TEST, newHashSet(TEST_ALTERNATIVE)); + .containsEntry(MediaTypesTest.TEST, newHashSet(MediaTypesTest.TEST_ALTERNATIVE)); } } diff --git a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypesTest.java b/java/dev/enola/common/io/mediatype/MediaTypesTest.java similarity index 64% rename from java/src/test/java/dev/enola/common/io/mediatype/MediaTypesTest.java rename to java/dev/enola/common/io/mediatype/MediaTypesTest.java index c99d6b805..df1d3b508 100644 --- a/java/src/test/java/dev/enola/common/io/mediatype/MediaTypesTest.java +++ b/java/dev/enola/common/io/mediatype/MediaTypesTest.java @@ -19,27 +19,35 @@ import static com.google.common.truth.Truth.assertThat; +import com.google.auto.service.AutoService; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Charsets; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Sets; import com.google.common.net.MediaType; import org.junit.Test; -public class MediaTypesTest { +import java.util.Map; +import java.util.Set; + +@AutoService(MediaTypeProvider.class) +public class MediaTypesTest implements MediaTypeProvider { @Test public void testParse() { - assertThat(MediaTypes.parse("application/test")).isEqualTo(TestMediaTypes.TEST); + assertThat(MediaTypes.parse("application/test")).isEqualTo(TEST); } @Test public void testNormalizeMediaTypesParse() { - assertThat(MediaTypes.parse("application/test-alternative")).isEqualTo(TestMediaTypes.TEST); + assertThat(MediaTypes.parse("application/test-alternative")).isEqualTo(TEST); } @Test public void testNormalizeMediaTypeParse() { assertThat(MediaTypes.normalize(MediaType.parse("application/test-alternative"))) - .isEqualTo(TestMediaTypes.TEST); + .isEqualTo(TEST); } @Test @@ -47,27 +55,26 @@ public void testNormalizeMediaTypesParseWithCharsetParameter() { var alternative = MediaTypes.parse("application/test-alternative"); var alternativeWithCharset = MediaTypes.normalize(alternative.withCharset(Charsets.UTF_16BE)); - assertThat(alternativeWithCharset) - .isEqualTo(TestMediaTypes.TEST.withCharset(Charsets.UTF_16BE)); + assertThat(alternativeWithCharset).isEqualTo(TEST.withCharset(Charsets.UTF_16BE)); } @Test public void testNormalizeMediaTypeParseWithCharsetParameter() { var alternative = MediaType.parse("application/test-alternative"); - assertThat(MediaTypes.normalize(alternative)).isEqualTo(TestMediaTypes.TEST); + assertThat(MediaTypes.normalize(alternative)).isEqualTo(TEST); assertThat(MediaTypes.normalize(alternative.withCharset(Charsets.UTF_16BE))) - .isEqualTo(TestMediaTypes.TEST.withCharset(Charsets.UTF_16BE)); + .isEqualTo(TEST.withCharset(Charsets.UTF_16BE)); } @Test public void testToString() { - var mediaType = TestMediaTypes.TEST.withCharset(Charsets.UTF_16BE); + var mediaType = TEST.withCharset(Charsets.UTF_16BE); assertThat(mediaType.toString()).isEqualTo("application/test; charset=utf-16be"); } @Test public void testParseWithCharset() { - var expected = TestMediaTypes.TEST.withCharset(Charsets.UTF_16BE); + var expected = TEST.withCharset(Charsets.UTF_16BE); // https://www.ietf.org/rfc/rfc2045.txt format: assertThat(MediaTypes.parse("application/test-alternative; charset=utf-16be")) @@ -77,4 +84,22 @@ public void testParseWithCharset() { assertThat(MediaTypes.parse("application/test-alternative;charset=utf-16be")) .isEqualTo(expected); } + + // TODO use example/test instead of application/test (and rename accordingly everywhere...) + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#example + + public static final MediaType TEST = MediaType.create("application", "test"); + + @VisibleForTesting + static final MediaType TEST_ALTERNATIVE = MediaType.create("application", "test-alternative"); + + @Override + public Map> knownTypesWithAlternatives() { + return ImmutableMap.of(TEST, Sets.newHashSet(TEST_ALTERNATIVE)); + } + + @Override + public Map extensionsToTypes() { + return ImmutableMap.of("test", TEST); + } } diff --git a/java/src/test/java/dev/enola/common/io/resource/ClasspathUrlResourceTest.java b/java/dev/enola/common/io/resource/ClasspathUrlResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/ClasspathUrlResourceTest.java rename to java/dev/enola/common/io/resource/ClasspathUrlResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/EmptyResourceTest.java b/java/dev/enola/common/io/resource/EmptyResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/EmptyResourceTest.java rename to java/dev/enola/common/io/resource/EmptyResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/ErrorResourceTest.java b/java/dev/enola/common/io/resource/ErrorResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/ErrorResourceTest.java rename to java/dev/enola/common/io/resource/ErrorResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/FileDescriptorResourceTest.java b/java/dev/enola/common/io/resource/FileDescriptorResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/FileDescriptorResourceTest.java rename to java/dev/enola/common/io/resource/FileDescriptorResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/FileResourceTest.java b/java/dev/enola/common/io/resource/FileResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/FileResourceTest.java rename to java/dev/enola/common/io/resource/FileResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/HttpUrlResourceTest.java b/java/dev/enola/common/io/resource/HttpUrlResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/HttpUrlResourceTest.java rename to java/dev/enola/common/io/resource/HttpUrlResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/MarkdownResourceTest.java b/java/dev/enola/common/io/resource/MarkdownResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/MarkdownResourceTest.java rename to java/dev/enola/common/io/resource/MarkdownResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/MemoryResourceTest.java b/java/dev/enola/common/io/resource/MemoryResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/MemoryResourceTest.java rename to java/dev/enola/common/io/resource/MemoryResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/NullResourceTest.java b/java/dev/enola/common/io/resource/NullResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/NullResourceTest.java rename to java/dev/enola/common/io/resource/NullResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/ReplacingResourceTest.java b/java/dev/enola/common/io/resource/ReplacingResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/ReplacingResourceTest.java rename to java/dev/enola/common/io/resource/ReplacingResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/ResourceProvidersTest.java b/java/dev/enola/common/io/resource/ResourceProvidersTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/ResourceProvidersTest.java rename to java/dev/enola/common/io/resource/ResourceProvidersTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/StringResourceTest.java b/java/dev/enola/common/io/resource/StringResourceTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/StringResourceTest.java rename to java/dev/enola/common/io/resource/StringResourceTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/URIsTest.java b/java/dev/enola/common/io/resource/URIsTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/URIsTest.java rename to java/dev/enola/common/io/resource/URIsTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/stream/FileGlobResourceProviderTest.java b/java/dev/enola/common/io/resource/stream/FileGlobResourceProviderTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/stream/FileGlobResourceProviderTest.java rename to java/dev/enola/common/io/resource/stream/FileGlobResourceProviderTest.java diff --git a/java/src/test/java/dev/enola/common/io/resource/stream/GlobResourceProvidersTest.java b/java/dev/enola/common/io/resource/stream/GlobResourceProvidersTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/io/resource/stream/GlobResourceProvidersTest.java rename to java/dev/enola/common/io/resource/stream/GlobResourceProvidersTest.java diff --git a/java/src/test/resources/empty b/java/dev/enola/common/io/test_resources/empty similarity index 100% rename from java/src/test/resources/empty rename to java/dev/enola/common/io/test_resources/empty diff --git a/java/src/test/resources/empty.png b/java/dev/enola/common/io/test_resources/empty.png similarity index 100% rename from java/src/test/resources/empty.png rename to java/dev/enola/common/io/test_resources/empty.png diff --git a/java/src/test/resources/test-emoji.txt b/java/dev/enola/common/io/test_resources/test-emoji.txt similarity index 100% rename from java/src/test/resources/test-emoji.txt rename to java/dev/enola/common/io/test_resources/test-emoji.txt diff --git a/java/src/test/resources/test-french.txt b/java/dev/enola/common/io/test_resources/test-french.txt similarity index 100% rename from java/src/test/resources/test-french.txt rename to java/dev/enola/common/io/test_resources/test-french.txt diff --git a/java/src/test/resources/test-hello-ascii.txt b/java/dev/enola/common/io/test_resources/test-hello-ascii.txt similarity index 100% rename from java/src/test/resources/test-hello-ascii.txt rename to java/dev/enola/common/io/test_resources/test-hello-ascii.txt diff --git a/java/src/test/resources/test-random-binary b/java/dev/enola/common/io/test_resources/test-random-binary similarity index 100% rename from java/src/test/resources/test-random-binary rename to java/dev/enola/common/io/test_resources/test-random-binary diff --git a/java/src/test/resources/test.json b/java/dev/enola/common/io/test_resources/test.json similarity index 100% rename from java/src/test/resources/test.json rename to java/dev/enola/common/io/test_resources/test.json diff --git a/java/src/test/resources/test.md b/java/dev/enola/common/io/test_resources/test.md similarity index 100% rename from java/src/test/resources/test.md rename to java/dev/enola/common/io/test_resources/test.md diff --git a/java/src/test/resources/test.png b/java/dev/enola/common/io/test_resources/test.png similarity index 100% rename from java/src/test/resources/test.png rename to java/dev/enola/common/io/test_resources/test.png diff --git a/java/src/test/resources/test.proto b/java/dev/enola/common/io/test_resources/test.proto similarity index 100% rename from java/src/test/resources/test.proto rename to java/dev/enola/common/io/test_resources/test.proto diff --git a/java/src/test/resources/test.textproto b/java/dev/enola/common/io/test_resources/test.textproto similarity index 100% rename from java/src/test/resources/test.textproto rename to java/dev/enola/common/io/test_resources/test.textproto diff --git a/java/dev/enola/common/protobuf/BUILD b/java/dev/enola/common/protobuf/BUILD index 3a5a701a7..e74065d07 100644 --- a/java/dev/enola/common/protobuf/BUILD +++ b/java/dev/enola/common/protobuf/BUILD @@ -14,7 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@rules_java//java:defs.bzl", "java_library", "java_test") +load("@rules_java//java:defs.bzl", "java_library") +load("//tools/bazel:junit.bzl", "junit_tests") java_library( name = "protobuf", @@ -32,3 +33,12 @@ java_library( "@maven//:org_slf4j_slf4j_api", ], ) + +junit_tests( + name = "tests", + srcs = glob(["**/*Test.java"]), + deps = [ + ":protobuf", + "//java/dev/enola/common/io", + ], +) diff --git a/java/src/test/java/dev/enola/common/protobuf/ProtobufMediaTypesTest.java b/java/dev/enola/common/protobuf/ProtobufMediaTypesTest.java similarity index 100% rename from java/src/test/java/dev/enola/common/protobuf/ProtobufMediaTypesTest.java rename to java/dev/enola/common/protobuf/ProtobufMediaTypesTest.java diff --git a/java/dev/enola/datatype/BUILD b/java/dev/enola/datatype/BUILD index 5c3e58a01..3dc843682 100644 --- a/java/dev/enola/datatype/BUILD +++ b/java/dev/enola/datatype/BUILD @@ -14,7 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@rules_java//java:defs.bzl", "java_library", "java_test") +load("@rules_java//java:defs.bzl", "java_library") +load("//tools/bazel:junit.bzl", "junit_tests") java_library( name = "datatype", @@ -31,3 +32,12 @@ java_library( "@maven//:org_slf4j_slf4j_api", ], ) + +junit_tests( + name = "tests", + srcs = glob(["**/*Test.java"]), + deps = [ + ":datatype", + "//java/dev/enola/common/convert", + ], +) diff --git a/java/src/test/java/dev/enola/datatype/DatatypeRepositoryTest.java b/java/dev/enola/datatype/DatatypeRepositoryTest.java similarity index 100% rename from java/src/test/java/dev/enola/datatype/DatatypeRepositoryTest.java rename to java/dev/enola/datatype/DatatypeRepositoryTest.java diff --git a/java/src/test/java/dev/enola/datatype/DatatypesTest.java b/java/dev/enola/datatype/DatatypesTest.java similarity index 100% rename from java/src/test/java/dev/enola/datatype/DatatypesTest.java rename to java/dev/enola/datatype/DatatypesTest.java diff --git a/java/src/test/java/dev/enola/common/io/mediatype/TestMediaTypes.java b/java/src/test/java/dev/enola/common/io/mediatype/TestMediaTypes.java deleted file mode 100644 index d7339b9aa..000000000 --- a/java/src/test/java/dev/enola/common/io/mediatype/TestMediaTypes.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2023-2024 The Enola Authors - * - * 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. - */ -package dev.enola.common.io.mediatype; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Sets; -import com.google.common.net.MediaType; - -import java.util.Map; -import java.util.Set; - -// TODO @AutoService(MediaTypeProvider.class) instead of requiring to have a -// common/common/src/test/resources/META-INF/services/dev.enola.common.io.mediatype.MediaTypeProvider -public class TestMediaTypes implements MediaTypeProvider { - - // TODO use example/test instead of application/test (and rename accordingly everywhere...) - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#example - - public static final MediaType TEST = MediaType.create("application", "test"); - - @VisibleForTesting - static final MediaType TEST_ALTERNATIVE = MediaType.create("application", "test-alternative"); - - @Override - public Map> knownTypesWithAlternatives() { - return ImmutableMap.of(TEST, Sets.newHashSet(TEST_ALTERNATIVE)); - } - - @Override - public Map extensionsToTypes() { - return ImmutableMap.of("test", TEST); - } -} diff --git a/java/src/test/java/dev/enola/common/io/resource/TestAbstractResource.java b/java/src/test/java/dev/enola/common/io/resource/TestAbstractResource.java deleted file mode 100644 index 76b7a4605..000000000 --- a/java/src/test/java/dev/enola/common/io/resource/TestAbstractResource.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2024 The Enola Authors - * - * 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. - */ -package dev.enola.common.io.resource; - -import com.google.common.net.MediaType; - -import java.net.URI; - -public record TestAbstractResource(URI uri, MediaType mediaType) implements AbstractResource {} diff --git a/java/src/test/resources/META-INF/services/dev.enola.common.io.mediatype.MediaTypeProvider b/java/src/test/resources/META-INF/services/dev.enola.common.io.mediatype.MediaTypeProvider deleted file mode 100644 index 4b733f422..000000000 --- a/java/src/test/resources/META-INF/services/dev.enola.common.io.mediatype.MediaTypeProvider +++ /dev/null @@ -1 +0,0 @@ -dev.enola.common.io.mediatype.TestMediaTypes diff --git a/tools/bazel/BUILD b/tools/bazel/BUILD new file mode 100644 index 000000000..e69de29bb diff --git a/tools/bazel/junit.bzl b/tools/bazel/junit.bzl new file mode 100644 index 000000000..941d176d8 --- /dev/null +++ b/tools/bazel/junit.bzl @@ -0,0 +1,106 @@ +# Copyright (C) 2016 The Android Open Source Project +# +# 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 +# +# http://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. + +"""Starlark rule to generate a Junit4 TestSuite +Assumes srcs are all .java Test files +Assumes junit4 is already added to deps by the user. + +See https://github.com/bazelbuild/bazel/issues/1017 for background. +""" + +load("@rules_java//java:defs.bzl", "java_test") + +_OUTPUT = """import org.junit.runners.Suite; +import org.junit.runner.RunWith; + +@RunWith(Suite.class) +@Suite.SuiteClasses({%s}) +@SuppressWarnings("DefaultPackage") +public class %s {} +""" + +_PREFIXES = ("org", "com", "edu", "dev", "io") + +def _SafeIndex(j, val): + for i, v in enumerate(j): + if val == v: + return i + return -1 + +def _AsClassName(fname): + fname = [x.path for x in fname.files.to_list()][0] + toks = fname[:-5].split("/") + findex = -1 + for s in _PREFIXES: + findex = _SafeIndex(toks, s) + if findex != -1: + break + if findex == -1: + fail("%s does not contain any of %s" % (fname, _PREFIXES)) + return ".".join(toks[findex:]) + ".class" + +def _impl(ctx): + classes = ",".join( + [_AsClassName(x) for x in ctx.attr.srcs], + ) + ctx.actions.write(output = ctx.outputs.out, content = _OUTPUT % ( + classes, + ctx.attr.outname, + )) + +_gen_suite = rule( + attrs = { + "deps": attr.label_list(allow_files = False), + "outname": attr.string(), + "srcs": attr.label_list(allow_files = True), + }, + outputs = {"out": "%{name}.java"}, + implementation = _impl, +) + +def junit_tests(name, srcs, deps, **kwargs): + """Implementation. + + Args: + name: Rule Name + srcs: Java Test Sources + deps: Dependencies of Test + **kwargs: KW Args + """ + s_name = name.replace("-", "_") + "TestSuite" + _gen_suite( + name = s_name, + srcs = srcs, + deps = deps, + outname = s_name, + ) + jvm_flags = kwargs.get("jvm_flags", []) + jvm_flags = jvm_flags + java_test( + name = name, + size = "small", + test_class = s_name, + srcs = srcs + [":" + s_name], + runtime_deps = [ + "@maven//:org_slf4j_slf4j_simple", + ], + deps = deps + [ + "@maven//:com_google_guava_guava", + "@maven//:com_google_jimfs_jimfs", + "@maven//:com_google_truth_extensions_truth_java8_extension", + "@maven//:com_google_truth_truth", + "@maven//:junit_junit", + ], + **dict(kwargs, jvm_flags = jvm_flags) + )