diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 00000000..831446cb --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +5.1.0 diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml deleted file mode 100644 index ab333ab5..00000000 --- a/.github/workflows/ant.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Java CI - -on: [push, pull_request] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Set up JDK 11 - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 11 - - name: Install and run ipfs - run: ./install-run-ipfs.sh - - name: Build with Ant - run: ant -noinput -buildfile build.xml dist - - name: Run tests - timeout-minutes: 10 - run: ant -noinput -buildfile build.xml test diff --git a/.gitignore b/.gitignore index 4a26892b..7e3b8cc2 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,7 @@ TEST-io.ipfs.api.APITest.* .idea/* api.iml +# Bazel +/bazel-* +/.ijwb/ + diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 00000000..cd7a4099 --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,8 @@ +java_library ( + name = "maven_test_deps", + visibility = ["//src/test/java:__subpackages__"], + exports = [ + "@maven//:junit_junit", + "@maven//:org_hamcrest_hamcrest", + ], +) \ No newline at end of file diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 00000000..080e84e2 --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,127 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +RULES_JVM_EXTERNAL_TAG = "4.5" +RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6" + +http_archive( + name = "rules_jvm_external", + strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, + sha256 = RULES_JVM_EXTERNAL_SHA, + 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("@rules_jvm_external//:defs.bzl", "maven_install") + +maven_install( + artifacts = [ + "junit:junit:4.13.2", + "org.hamcrest:hamcrest:2.2", + ], + repositories = [ + # Private repositories are supported through HTTP Basic auth + "https://jitpack.io", + "https://repo1.maven.org/maven2", + ], +) + +load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository") + +MULTIADDR_BUILD_FILE = """ +filegroup( + name = "main_srcs", + srcs = glob(["src/main/java/**"]), +) + +java_library( + name = "core", + srcs = [":main_srcs"], + deps = [ + "@multihash//:core", + "@multibase//:core", + "@cid//:core", + ], + visibility = ["//visibility:public"], +) +""" + +new_git_repository( + name = "multiaddr", + remote = "https://github.com/multiformats/java-multiaddr.git", + tag = "v1.4.12", + build_file_content = MULTIADDR_BUILD_FILE, +) + +MULTIHASH_BUILD_FILE = """ +filegroup( + name = "main_srcs", + srcs = glob(["src/main/java/**"]), +) + +java_library( + name = "core", + srcs = [":main_srcs"], + deps = [ + "@multibase//:core", + ], + visibility = ["//visibility:public"], +) +""" + +new_git_repository( + name = "multihash", + remote = "https://github.com/multiformats/java-multihash.git", + tag = "v1.3.4", + build_file_content = MULTIHASH_BUILD_FILE, +) + +MULTIBASE_BUILD_FILE = """ +filegroup( + name = "main_srcs", + srcs = glob(["src/main/java/**"]), +) + +java_library( + name = "core", + srcs = [":main_srcs"], + visibility = ["//visibility:public"], +) +""" + +new_git_repository( + name = "multibase", + remote = "https://github.com/multiformats/java-multibase.git", + tag = "v1.1.1", + build_file_content = MULTIBASE_BUILD_FILE, +) + +CID_BUILD_FILE = """ +filegroup( + name = "main_srcs", + srcs = glob(["src/main/java/**"]), +) + +java_library( + name = "core", + srcs = [":main_srcs"], + deps = [ + "@multihash//:core", + "@multibase//:core", + ], + visibility = ["//visibility:public"], +) +""" + +new_git_repository( + name = "cid", + remote = "https://github.com/ipld/java-cid.git", + tag = "v1.3.8", + build_file_content = CID_BUILD_FILE, +) \ No newline at end of file diff --git a/src/main/java/io/ipfs/api/BUILD.bazel b/src/main/java/io/ipfs/api/BUILD.bazel new file mode 100644 index 00000000..6f0fcfc5 --- /dev/null +++ b/src/main/java/io/ipfs/api/BUILD.bazel @@ -0,0 +1,14 @@ +java_library ( + name = "core", + visibility = ["//visibility:public"], + srcs = glob(["*.java"]), + deps = [ + "@multiaddr//:core", + "@multihash//:core", + "@multibase//:core", + "@cid//:core", + "//src/main/java/io/ipfs/api/cbor:cbor", + ], +) + +#TODO generate a distribution JAR with all the classes and the manifest \ No newline at end of file diff --git a/src/main/java/io/ipfs/api/cbor/BUILD.bazel b/src/main/java/io/ipfs/api/cbor/BUILD.bazel new file mode 100644 index 00000000..3c9419a7 --- /dev/null +++ b/src/main/java/io/ipfs/api/cbor/BUILD.bazel @@ -0,0 +1,10 @@ +java_library ( + name = "cbor", + visibility = ["//visibility:public"], + srcs = glob(["*.java"]), + deps = [ + "@multiaddr//:core", + "@multihash//:core", + "@cid//:core", + ], +) \ No newline at end of file diff --git a/src/main/java/io/ipfs/api/cbor/CborDecoder.java b/src/main/java/io/ipfs/api/cbor/CborDecoder.java index 1229ccf6..cc735cb5 100644 --- a/src/main/java/io/ipfs/api/cbor/CborDecoder.java +++ b/src/main/java/io/ipfs/api/cbor/CborDecoder.java @@ -7,6 +7,7 @@ */ import java.io.*; +import java.util.Arrays; import static io.ipfs.api.cbor.CborConstants.*; import static io.ipfs.api.cbor.CborType.*; @@ -30,7 +31,7 @@ public CborDecoder(InputStream is) { } private static void fail(String msg, Object... args) throws IOException { - throw new IOException(msg + args); + throw new IOException(msg + Arrays.toString(args)); } private static String lengthToString(int len) { diff --git a/src/main/java/io/ipfs/api/demo/BUILD.bazel b/src/main/java/io/ipfs/api/demo/BUILD.bazel new file mode 100644 index 00000000..f40eccb7 --- /dev/null +++ b/src/main/java/io/ipfs/api/demo/BUILD.bazel @@ -0,0 +1,11 @@ +java_binary ( + name = "demo", + srcs = glob(["*.java"]), + main_class = "io.ipfs.api.demo.UsageMFSFilesAPI", + deps = [ + "//src/main/java/io/ipfs/api:core", + "@multiaddr//:core", + "@multihash//:core", + "@cid//:core", + ], +) \ No newline at end of file diff --git a/src/test/BUILD.bazel b/src/test/BUILD.bazel new file mode 100644 index 00000000..8843a394 --- /dev/null +++ b/src/test/BUILD.bazel @@ -0,0 +1,15 @@ +load(":test_utils.bzl", "junit_test") + +filegroup( + name = "test-resources", + srcs = glob([ + "resources/**", + ]), +) + +junit_test(test_class = "io.ipfs.api.AddTest") +junit_test(test_class = "io.ipfs.api.APITest") +junit_test(test_class = "io.ipfs.api.RecursiveAddTest") +junit_test(test_class = "io.ipfs.api.SimpleAddTest") +junit_test(test_class = "io.ipfs.api.VersionsTest") + diff --git a/src/test/java/io/ipfs/api/APITest.java b/src/test/java/io/ipfs/api/APITest.java index adf53935..aa4da156 100644 --- a/src/test/java/io/ipfs/api/APITest.java +++ b/src/test/java/io/ipfs/api/APITest.java @@ -938,8 +938,13 @@ public void addArgsTest() { assertEquals("args toQueryString() format", "inline=true&cid-version=1", queryStr); } + @Test + public void failOnPurposeTest() { + assertEquals(1, 2); + } + // this api is disabled until deployment over IPFS is enabled - public void updateTest() throws IOException { + private void updateTest() throws IOException { Object check = ipfs.update.check(); Object update = ipfs.update(); } diff --git a/src/test/java/io/ipfs/api/BUILD.bazel b/src/test/java/io/ipfs/api/BUILD.bazel new file mode 100644 index 00000000..ec158b96 --- /dev/null +++ b/src/test/java/io/ipfs/api/BUILD.bazel @@ -0,0 +1,14 @@ +java_library ( + name = "test-core", + visibility = ["//visibility:public"], + srcs = glob(["*.java"]), + deps = [ + "@multiaddr//:core", + "@multihash//:core", + "@multibase//:core", + "@cid//:core", + "//src/main/java/io/ipfs/api:core", + "//src/main/java/io/ipfs/api/cbor:cbor", + "//:maven_test_deps", + ], +) \ No newline at end of file diff --git "a/src/test/resources/folder/\344\275\240\345\245\275.html" b/src/test/resources/folder/changeme.html similarity index 100% rename from "src/test/resources/folder/\344\275\240\345\245\275.html" rename to src/test/resources/folder/changeme.html diff --git a/src/test/test_utils.bzl b/src/test/test_utils.bzl new file mode 100644 index 00000000..feaa329e --- /dev/null +++ b/src/test/test_utils.bzl @@ -0,0 +1,11 @@ +def junit_test(test_class): + native.java_test( + name = test_class, + test_class = test_class, + runtime_deps = [ + "//src/test/java/io/ipfs/api:test-core", + ], + data = [ + "//src/test:test-resources", + ], + )