summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Chafik <ochafik@users.noreply.github.com>2024-03-22 13:09:07 +0000
committerGitHub <noreply@github.com>2024-03-22 15:09:07 +0200
commitf77a8ffd3bbde77b7819823b0c006fd8c2d5cae4 (patch)
tree87a32bfd75859854c15f4f63036a1e79aa7c2a46
parent72114edf068a9b2f54d3b09e9a198f611be397e8 (diff)
tests : conditional python & node json schema tests (#6207)
* json: only attempt python & node schema conversion tests if their bins are present Tests introduced in https://github.com/ggerganov/llama.cpp/pull/5978 disabled in https://github.com/ggerganov/llama.cpp/pull/6198 * json: orange warnings when tests skipped * json: ensure py/js schema conv tested on ubuntu-focal-make * json: print env vars in test
-rw-r--r--.github/workflows/build.yml11
-rwxr-xr-xtests/test-json-schema-to-grammar.cpp37
2 files changed, 36 insertions, 12 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b8d66a83..469d8116 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -135,6 +135,9 @@ jobs:
ubuntu-focal-make:
runs-on: ubuntu-20.04
+ env:
+ LLAMA_NODE_AVAILABLE: true
+ LLAMA_PYTHON_AVAILABLE: true
steps:
- name: Clone
@@ -147,6 +150,14 @@ jobs:
sudo apt-get update
sudo apt-get install build-essential gcc-8
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "20"
+
+ - uses: actions/setup-python@v4
+ with:
+ python-version: "3.11"
+
- name: Build
id: make_build
env:
diff --git a/tests/test-json-schema-to-grammar.cpp b/tests/test-json-schema-to-grammar.cpp
index 8aa7c37d..4d110cf5 100755
--- a/tests/test-json-schema-to-grammar.cpp
+++ b/tests/test-json-schema-to-grammar.cpp
@@ -799,6 +799,9 @@ static void test_all(const std::string & lang, std::function<void(const TestCase
}
int main() {
+ fprintf(stderr, "LLAMA_NODE_AVAILABLE = %s\n", getenv("LLAMA_NODE_AVAILABLE") ? "true" : "false");
+ fprintf(stderr, "LLAMA_PYTHON_AVAILABLE = %s\n", getenv("LLAMA_PYTHON_AVAILABLE") ? "true" : "false");
+
test_all("C++", [](const TestCase & tc) {
try {
tc.verify(json_schema_to_grammar(nlohmann::ordered_json::parse(tc.schema)));
@@ -808,18 +811,28 @@ int main() {
tc.verify_status(FAILURE);
}
});
- //test_all("Python", [](const TestCase & tc) {
- // write("test-json-schema-input.tmp", tc.schema);
- // tc.verify_status(std::system(
- // "python ./examples/json-schema-to-grammar.py test-json-schema-input.tmp > test-grammar-output.tmp") == 0 ? SUCCESS : FAILURE);
- // tc.verify(read("test-grammar-output.tmp"));
- //});
- //test_all("JavaScript", [](const TestCase & tc) {
- // write("test-json-schema-input.tmp", tc.schema);
- // tc.verify_status(std::system(
- // "node ./tests/run-json-schema-to-grammar.mjs test-json-schema-input.tmp > test-grammar-output.tmp") == 0 ? SUCCESS : FAILURE);
- // tc.verify(read("test-grammar-output.tmp"));
- //});
+
+ if (getenv("LLAMA_PYTHON_AVAILABLE") || (std::system("python --version") == 0)) {
+ test_all("Python", [](const TestCase & tc) {
+ write("test-json-schema-input.tmp", tc.schema);
+ tc.verify_status(std::system(
+ "python ./examples/json-schema-to-grammar.py test-json-schema-input.tmp > test-grammar-output.tmp") == 0 ? SUCCESS : FAILURE);
+ tc.verify(read("test-grammar-output.tmp"));
+ });
+ } else {
+ fprintf(stderr, "\033[33mWARNING: Python not found, skipping Python JSON schema -> grammar tests.\n\033[0m");
+ }
+
+ if (getenv("LLAMA_NODE_AVAILABLE") || (std::system("node --version") == 0)) {
+ test_all("JavaScript", [](const TestCase & tc) {
+ write("test-json-schema-input.tmp", tc.schema);
+ tc.verify_status(std::system(
+ "node ./tests/run-json-schema-to-grammar.mjs test-json-schema-input.tmp > test-grammar-output.tmp") == 0 ? SUCCESS : FAILURE);
+ tc.verify(read("test-grammar-output.tmp"));
+ });
+ } else {
+ fprintf(stderr, "\033[33mWARNING: Node not found, skipping JavaScript JSON schema -> grammar tests.\n\033[0m");
+ }
test_all("Check Expectations Validity", [](const TestCase & tc) {
if (tc.expected_status == SUCCESS) {