Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DEPENDENCIES
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
vendorpull https://github.com/sourcemeta/vendorpull 1dcbac42809cf87cb5b045106b863e17ad84ba02
core https://github.com/sourcemeta/core eb361a9f3a01f7cffb5da7946a9516ee11dc9ede
jsonbinpack https://github.com/sourcemeta/jsonbinpack ac8e1af733a781fc4c94a14157f80970ea569479
blaze https://github.com/sourcemeta/blaze 7b214cff6d575831c16a2ce33f55d97c02eb6338
blaze https://github.com/sourcemeta/blaze 208a2b74eb10bd81e5c0a0e24500676f30c6c97d
mbedtls https://github.com/Mbed-TLS/mbedtls v3.6.6
curl https://github.com/curl/curl curl-8_20_0
nghttp2 https://github.com/nghttp2/nghttp2 v1.67.1
Expand Down
7 changes: 0 additions & 7 deletions docs/install.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,6 @@ tracked in the lock file are fetched again.
> We recommend committing `jsonschema.lock.json` to version control (similar to
> `package-lock.json`) to enable reproducible installs across environments.

> [!WARNING]
> If a dependency uses a custom meta-schema that is itself an external
> dependency, make sure to list both the meta-schema and the schema that uses
> it in the `dependencies` map. The install command will resolve the
> meta-schema during bundling regardless of processing order. We are working
> on resolving this automatically in a future release.

Use the global `--header/-H` flag to attach custom HTTP headers to outgoing
requests. For example:

Expand Down
9 changes: 9 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ add_jsonschema_test_unix(format/pass_test_document_with_comment)
add_jsonschema_test_unix(format/pass_test_document_explicit_dialect)
add_jsonschema_test_unix(format/pass_test_document_directory)
add_jsonschema_test_unix(format/pass_test_document_schema_keyword)
add_jsonschema_test_unix(format/pass_bundled_metaschema)

# Validate
add_jsonschema_test_unix(validate/fail_instance_enoent)
Expand Down Expand Up @@ -326,6 +327,7 @@ add_jsonschema_test_unix(validate/pass_stdin_yaml)
add_jsonschema_test_unix(validate/fail_stdin_trace_multi_instance)
add_jsonschema_test_unix(validate/fail_trace_benchmark)
add_jsonschema_test_unix(validate/fail_invalid_header)
add_jsonschema_test_unix(validate/pass_bundled_metaschema)

# Metaschema
add_jsonschema_test_unix(metaschema/pass_trace)
Expand Down Expand Up @@ -378,6 +380,7 @@ add_jsonschema_test_unix(metaschema/fail_stdin_not_schema)
add_jsonschema_test_unix(metaschema/fail_stdin_duplicate)
add_jsonschema_test_unix(metaschema/fail_stdin_invalid_json)
add_jsonschema_test_unix(metaschema/fail_invalid_header)
add_jsonschema_test_unix(metaschema/pass_bundled_metaschema)

# Test
add_jsonschema_test_unix(test/fail_resolve_directory_non_schema)
Expand Down Expand Up @@ -474,6 +477,7 @@ add_jsonschema_test_unix(test/fail_stdin_invalid_json)
add_jsonschema_test_unix(test/fail_stdin_not_object)
add_jsonschema_test_unix(test/fail_stdin_test_failure)
add_jsonschema_test_unix(test/fail_invalid_header)
add_jsonschema_test_unix(test/pass_bundled_metaschema)

# Bundle
add_jsonschema_test_unix(bundle/pass_into_resolve_directory)
Expand Down Expand Up @@ -523,6 +527,7 @@ add_jsonschema_test_unix(bundle/pass_stdin)
add_jsonschema_test_unix(bundle/fail_stdin_not_schema)
add_jsonschema_test_unix(bundle/fail_stdin_invalid_json)
add_jsonschema_test_unix(bundle/fail_invalid_header)
add_jsonschema_test_unix(bundle/pass_bundled_metaschema)

# Inspect
add_jsonschema_test_unix(inspect/pass)
Expand Down Expand Up @@ -561,6 +566,7 @@ add_jsonschema_test_unix(inspect/pass_stdin_json)
add_jsonschema_test_unix(inspect/pass_stdin_no_id)
add_jsonschema_test_unix(inspect/fail_stdin_not_schema)
add_jsonschema_test_unix(inspect/fail_stdin_invalid_json)
add_jsonschema_test_unix(inspect/pass_bundled_metaschema)

# Compile
add_jsonschema_test_unix(compile/pass)
Expand Down Expand Up @@ -609,6 +615,7 @@ add_jsonschema_test_unix(compile/fail_entrypoint_invalid_uri_parse)
add_jsonschema_test_unix(compile/pass_evaluate_port_js_fast)
add_jsonschema_test_unix(compile/pass_evaluate_port_js_exhaustive)
add_jsonschema_test_unix(compile/fail_invalid_header)
add_jsonschema_test_unix(compile/pass_bundled_metaschema)

# Codegen
add_jsonschema_test_unix(codegen/pass_typescript)
Expand Down Expand Up @@ -642,6 +649,7 @@ add_jsonschema_test_unix(codegen/fail_unsupported_schema)
add_jsonschema_test_unix(codegen/fail_invalid_id_type)
add_jsonschema_test_unix(codegen/fail_invalid_schema_uri)
add_jsonschema_test_unix(codegen/fail_anchor_collision)
add_jsonschema_test_unix(codegen/pass_bundled_metaschema)

# Lint
add_jsonschema_test_unix(lint/pass_lint_fix)
Expand Down Expand Up @@ -809,6 +817,7 @@ add_jsonschema_test_unix(lint/fail_stdin_lint)
add_jsonschema_test_unix(lint/fail_stdin_duplicate)
add_jsonschema_test_unix(lint/fail_stdin_invalid_json)
add_jsonschema_test_unix(lint/fail_invalid_header)
add_jsonschema_test_unix(lint/pass_bundled_metaschema)

# Install
add_jsonschema_test_unix(install/fail_no_configuration)
Expand Down
58 changes: 58 additions & 0 deletions test/bundle/pass_bundled_metaschema.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/bin/sh

set -o errexit
set -o nounset

TMP="$(mktemp -d)"
clean() { rm -rf "$TMP"; }
trap clean EXIT

cat << 'EOF' > "$TMP/schema.json"
{
"$schema": "https://example.com/meta",
"$id": "https://example.com/schema",
"type": "string",
"$defs": {
"https://example.com/meta": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/meta",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true
},
"type": "object"
}
}
}
EOF

"$1" bundle "$TMP/schema.json" > "$TMP/result.json" 2> "$TMP/stderr.txt"

cat << 'EOF' > "$TMP/expected_stderr.txt"
EOF

diff "$TMP/stderr.txt" "$TMP/expected_stderr.txt"

cat << 'EOF' > "$TMP/expected.json"
{
"$schema": "https://example.com/meta",
"$id": "https://example.com/schema",
"type": "string",
"$defs": {
"https://example.com/meta": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/meta",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true
},
"type": "object"
}
}
}
EOF

diff "$TMP/result.json" "$TMP/expected.json"

# Must come out formatted
"$1" fmt "$TMP/result.json" --check
42 changes: 42 additions & 0 deletions test/codegen/pass_bundled_metaschema.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/sh

set -o errexit
set -o nounset

TMP="$(mktemp -d)"
clean() { rm -rf "$TMP"; }
trap clean EXIT

cat << 'EOF' > "$TMP/schema.json"
{
"$schema": "https://example.com/meta",
"$id": "https://example.com/schema",
"type": "string",
"$defs": {
"https://example.com/meta": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/meta",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true
},
"type": "object"
}
}
}
EOF

"$1" codegen "$TMP/schema.json" --target typescript > "$TMP/result.txt" 2> "$TMP/stderr.txt"

cat << 'EOF' > "$TMP/expected_stderr.txt"
EOF

diff "$TMP/stderr.txt" "$TMP/expected_stderr.txt"

cat << 'EOF' > "$TMP/expected.txt"
export type SchemaMeta = Record<string, unknown>;

export type Schema = string;
EOF

diff "$TMP/result.txt" "$TMP/expected.txt"
57 changes: 57 additions & 0 deletions test/compile/pass_bundled_metaschema.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/bin/sh

set -o errexit
set -o nounset

TMP="$(mktemp -d)"
clean() { rm -rf "$TMP"; }
trap clean EXIT

cat << 'EOF' > "$TMP/schema.json"
{
"$schema": "https://example.com/meta",
"$id": "https://example.com/schema",
"type": "string",
"$defs": {
"https://example.com/meta": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/meta",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true
},
"type": "object"
}
}
}
EOF

"$1" compile "$TMP/schema.json" > "$TMP/template.json" 2> "$TMP/stderr.txt"

cat << 'EOF' > "$TMP/expected_stderr.txt"
EOF

diff "$TMP/stderr.txt" "$TMP/expected_stderr.txt"

cat << 'EOF' > "$TMP/expected.json"
[
5,
false,
true,
[
[
[
11,
[ "type" ],
[],
"https://example.com/schema#/type",
3,
[ 8, 4 ]
]
]
],
[]
]
EOF

diff "$TMP/template.json" "$TMP/expected.json"
62 changes: 62 additions & 0 deletions test/format/pass_bundled_metaschema.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#!/bin/sh

set -o errexit
set -o nounset

TMP="$(mktemp -d)"
clean() { rm -rf "$TMP"; }
trap clean EXIT

cat << 'EOF' > "$TMP/schema.json"
{
"$id": "https://example.com/schema",
"$schema": "https://example.com/meta",
"$defs": {
"https://example.com/meta": {
"$id": "https://example.com/meta",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true
},
"type": "object"
}
},
"type": "string"
}
EOF

"$1" fmt "$TMP/schema.json" > "$TMP/output.txt" 2>&1

cat << 'EOF' > "$TMP/expected_output.txt"
EOF

diff "$TMP/output.txt" "$TMP/expected_output.txt"

cat << 'EOF' > "$TMP/expected.json"
{
"$schema": "https://example.com/meta",
"$id": "https://example.com/schema",
"type": "string",
"$defs": {
"https://example.com/meta": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/meta",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true
},
"type": "object"
}
}
}
EOF

diff "$TMP/schema.json" "$TMP/expected.json"

"$1" fmt "$TMP/schema.json" --check > "$TMP/check_output.txt" 2>&1

cat << 'EOF' > "$TMP/expected_check_output.txt"
EOF

diff "$TMP/check_output.txt" "$TMP/expected_check_output.txt"
Loading
Loading