Skip to content

Commit

Permalink
tests : conditional python & node json schema tests (ggerganov#6207)
Browse files Browse the repository at this point in the history
* json: only attempt python & node schema conversion tests if their bins are present

Tests introduced in ggerganov#5978
disabled in ggerganov#6198

* json: orange warnings when tests skipped

* json: ensure py/js schema conv tested on ubuntu-focal-make

* json: print env vars in test
  • Loading branch information
ochafik authored and hodlen committed Apr 3, 2024
1 parent 238322e commit 8d01895
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 12 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/build.yml
Expand Up @@ -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
Expand All @@ -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:
Expand Down
37 changes: 25 additions & 12 deletions tests/test-json-schema-to-grammar.cpp
Expand Up @@ -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)));
Expand All @@ -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) {
Expand Down

0 comments on commit 8d01895

Please sign in to comment.