Skip to content

test(conformance): url() without a scheme is an error, as the spec now says - #27

Merged
lejmr merged 2 commits into
mainfrom
conformance/url-needs-a-scheme
Oct 23, 2026
Merged

lejmr merged 2 commits into
mainfrom
conformance/url-needs-a-scheme

Conversation

@lejmr

@lejmr lejmr commented Oct 23, 2026

Copy link
Copy Markdown
Owner

lightbend/config#887 was merged on 2026-10-23. HOCON.md now says:

The string inside url() is always an absolute URL, with a scheme (RFC 3986, section 4.3); url("foo.conf") is an error, with or without required().

That settles the suite's last open question, include-syntax/011-url-argument-must-be-a-url. zig-hocon has rejected it with InvalidUrl since #20, so it now passes all 446 cases.

Spec and rules

  • spec/HOCON.md is the new upstream copy. The only difference is these four lines.
  • RULES.md adds the sentence as include-semantics-locating-resources.9, appended at the end of its section as the ids-are-stable rule asks. The 61 rules below it move four lines down, and a check confirms every rule's line number still points at its sentence.
  • include-syntax/011: the review field is gone, and the case now names both include-syntax.3 and the new rule. COVERAGE.md and COVERAGE.html are regenerated.

Scores

  • Every parser in the report rejects the case, so each one gains the row.
  • Measured again on the 446: zig-hocon (spec 446, java 402), typesafe/config 1.4.9 (spec 402, java 446) and pyhocon (spec 315, java 299). Against main, each report changes only in row 011.
  • hocon2, pulse-pyhocon, py.hocon and rs.hocon aren't installed here, so row 011 is taken from the output they recorded (rejected). Their reports still count 445 cases (no 025 row since test(conformance): a digit-initial non-number is an error #26) and stay marked as behind the suite.

Docs

Checks: zig build test passes, zig fmt --check src is clean, and fill-expected.py --check reports 446 cases with 0 sidecars stale.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CbBo1aotFTDLY2gery7qYD

lejmr and others added 2 commits October 23, 2026 18:08
…w says

lightbend/config#887 put it in HOCON.md: the string inside url() is always
an absolute URL, so url("foo.conf") is an error. spec/HOCON.md is the new
upstream copy, RULES.md has the sentence as include-semantics-locating-
resources.9 (later rules four lines down), and include-syntax/011 is no
open question any more. Every parser in the report rejects it, so each
gains the row: zig-hocon, typesafe/config and pyhocon measured again,
hocon2, pulse-pyhocon, py.hocon and rs.hocon from their recorded output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CbBo1aotFTDLY2gery7qYD
@lejmr
lejmr merged commit 9bfb0c6 into main Oct 23, 2026
42 checks passed
@lejmr
lejmr deleted the conformance/url-needs-a-scheme branch October 23, 2026 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant