diff --git a/.github/workflows/java-test.yaml b/.github/workflows/java-test.yaml index ad9fd822..fadc5367 100644 --- a/.github/workflows/java-test.yaml +++ b/.github/workflows/java-test.yaml @@ -90,9 +90,7 @@ jobs: java/target/classes/native build-centos7: - runs-on: ubuntu-latest - container: - image: "kcllang/kcl-java-builder-centos7:0.1.0" + runs-on: ubuntu-20.04 permissions: contents: read @@ -128,10 +126,13 @@ jobs: name: kcl-lib-osx-aarch_64 path: java/native - - name: Package Java artifact - working-directory: java + - name: Run tests and package in CentOS 7 container run: | - rustup default stable && mvn package -DskipTests=true -Dcargo-build.profile=release + docker run --rm -v ${{ github.workspace }}/java:/work kcllang/kcl-java-builder-centos7:0.1.0 bash -c " + cd /work && + rustup default stable && + mvn package -DskipTests=true -Dcargo-build.profile=release + " - name: Upload artifact uses: actions/upload-artifact@v3 diff --git a/java/Cargo.toml b/java/Cargo.toml index 4f5014e7..dc996b7c 100644 --- a/java/Cargo.toml +++ b/java/Cargo.toml @@ -18,6 +18,6 @@ serde = { version = "1", features = ["derive"] } once_cell = "1.19.0" lazy_static = "1.4.0" -kclvm-parser = { git = "https://github.com/kcl-lang/kcl", version = "0.10.8" } -kclvm-sema = { git = "https://github.com/kcl-lang/kcl", version = "0.10.8" } -kclvm-api = { git = "https://github.com/kcl-lang/kcl", version = "0.10.8" } +kclvm-parser = { git = "https://github.com/kcl-lang/kcl", version = "0.11.0-alpha.1" } +kclvm-sema = { git = "https://github.com/kcl-lang/kcl", version = "0.11.0-alpha.1" } +kclvm-api = { git = "https://github.com/kcl-lang/kcl", version = "0.11.0-alpha.1" } diff --git a/java/src/main/java/com/kcl/api/API.java b/java/src/main/java/com/kcl/api/API.java index a0bae6e9..b7845998 100644 --- a/java/src/main/java/com/kcl/api/API.java +++ b/java/src/main/java/com/kcl/api/API.java @@ -5,6 +5,7 @@ import java.io.InputStream; import java.io.UncheckedIOException; import java.util.Map; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; @@ -651,7 +652,8 @@ public GetVersion_Result getVersion(GetVersion_Args args) throws Exception { private byte[] call(String name, byte[] args) throws Exception { byte[] result = callNative(name.getBytes(), args); if (result != null && startsWith(result, ERROR_PREFIX)) { - throw new java.lang.Error(result.toString().substring(ERROR_PREFIX.length()).trim()); + String resultString = new String(result, StandardCharsets.UTF_8); + throw new Exception(resultString.substring(ERROR_PREFIX.length()).trim()); } return result; } @@ -659,7 +661,8 @@ private byte[] call(String name, byte[] args) throws Exception { private byte[] callLoadPackageWithCache(byte[] args) throws Exception { byte[] result = loadPackageWithCache(args); if (result != null && startsWith(result, ERROR_PREFIX)) { - throw new java.lang.Error(result.toString().substring(ERROR_PREFIX.length()).trim()); + String resultString = new String(result, StandardCharsets.UTF_8); + throw new Exception(resultString.substring(ERROR_PREFIX.length()).trim()); } return result; } diff --git a/java/src/test/java/com/kcl/ExecProgramTest.java b/java/src/test/java/com/kcl/ExecProgramTest.java index 1306dde2..e05cc2bd 100644 --- a/java/src/test/java/com/kcl/ExecProgramTest.java +++ b/java/src/test/java/com/kcl/ExecProgramTest.java @@ -19,4 +19,16 @@ public void testExecProgramApi() throws Exception { ExecProgram_Result result = apiInstance.execProgram(args); Assert.assertEquals(result.getYamlResult(), "app:\n" + " replicas: 2"); } + + @Test + public void testExecProgramApiInvalid() { + try { + ExecProgram_Args args = ExecProgram_Args.newBuilder().build(); + + API apiInstance = new API(); + apiInstance.execProgram(args); + } catch (Exception e) { + Assert.assertEquals(e.getMessage(), "No input KCL files or paths"); + } + } }