From df42dd06249c36ff6788177b7705f040fbdd3f66 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 5 Nov 2025 09:18:04 +0100 Subject: [PATCH 1/3] tests: more cases for qualifier spec Signed-off-by: Jan Kowalleck --- tests/spec/qualifiers.json | 83 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 tests/spec/qualifiers.json diff --git a/tests/spec/qualifiers.json b/tests/spec/qualifiers.json new file mode 100644 index 00000000..fb6073ac --- /dev/null +++ b/tests/spec/qualifiers.json @@ -0,0 +1,83 @@ +{ + "$schema": "https://packageurl.org/schemas/purl-test.schema-0.1.json", + "tests": [ + { + "description": "order qualifiers by name", + "test_group": "base", + "test_type": "build", + "input": { + "type": "generic", + "namespace": null, + "name": "example", + "version": null, + "qualifiers": { + "b": "1", + "c": "2", + "a": "3" + }, + "subpath": null + }, + "expected_output": "pkg:generic/example?a=3&b=1&c=2", + "expected_failure": false, + "expected_failure_reason": null + }, + { + "description": "order qualifiers by name", + "test_group": "base", + "test_type": "roundtrip", + "input": "pkg:generic/example?b=1&c=2&a=3", + "expected_output": "pkg:generic/example?a=3&b=1&c=2", + "expected_failure": false, + "expected_failure_reason": null + }, + { + "description": "encode qualifiers", + "test_group": "base", + "test_type": "build", + "input": { + "type": "generic", + "namespace": null, + "name": "example", + "version": null, + "qualifiers": { + "calc": "2+1=3", + "preencoded_url": "https://example.com/site?val%5B1%5D=my%20key&d=%23#docs", + "unencoded_url": "https://example.com/site?val[1]=my key#docs" + }, + "subpath": null + }, + "expected_output": "pkg:generic/example?calc=2%2B1%3D3&preencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%255B1%255D%3Dmy%2520key%26d%3D%2523%23docs&unencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%5B1%5D%3Dmy%20key%23docs", + "expected_failure": false, + "expected_failure_reason": null + }, + { + "description": "decode qualifiers", + "test_group": "base", + "test_type": "parse", + "input": "pkg:generic/example?calc=2%2B1%3D3&preencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%255B1%255D%3Dmy%2520key%26d%3D%2523%23docs&unencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%5B1%5D%3Dmy%20key%23docs", + "expected_output": { + "type": "generic", + "namespace": null, + "name": "example", + "version": null, + "qualifiers": { + "calc": "2+1=3", + "preencoded_url": "https://example.com/site?val%5B1%5D=my%20key&d=%23#docs", + "unencoded_url": "https://example.com/site?val[1]=my key#docs" + }, + "subpath": null + }, + "expected_failure": false, + "expected_failure_reason": null + }, + { + "description": "keep qualifiers unchanged", + "test_group": "base", + "test_type": "roundtrip", + "input": "pkg:generic/example?calc=2%2B1%3D3&preencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%255B1%255D%3Dmy%2520key%26d%3D%2523%23docs&unencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%5B1%5D%3Dmy%20key%23docs", + "expected_output": "pkg:generic/example?calc=2%2B1%3D3&preencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%255B1%255D%3Dmy%2520key%26d%3D%2523%23docs&unencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%5B1%5D%3Dmy%20key%23docs", + "expected_failure": false, + "expected_failure_reason": null + } + ] +} From 2653f6c2085e088ec3c31aba8103d80536a71525 Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 19 Nov 2025 09:40:51 +0100 Subject: [PATCH 2/3] renamed to match naming scheme Signed-off-by: Jan Kowalleck --- tests/spec/{qualifiers.json => qualifiers-test.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/spec/{qualifiers.json => qualifiers-test.json} (100%) diff --git a/tests/spec/qualifiers.json b/tests/spec/qualifiers-test.json similarity index 100% rename from tests/spec/qualifiers.json rename to tests/spec/qualifiers-test.json From f5b19027fd162f6703e76dc29e93cc5dd6393f0b Mon Sep 17 00:00:00 2001 From: Jan Kowalleck Date: Wed, 19 Nov 2025 09:49:13 +0100 Subject: [PATCH 3/3] docs Signed-off-by: Jan Kowalleck --- tests/spec/qualifiers-test.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/spec/qualifiers-test.json b/tests/spec/qualifiers-test.json index fb6073ac..384da879 100644 --- a/tests/spec/qualifiers-test.json +++ b/tests/spec/qualifiers-test.json @@ -71,7 +71,7 @@ "expected_failure_reason": null }, { - "description": "keep qualifiers unchanged", + "description": "keep qualifiers unchanged when fixing encoding", "test_group": "base", "test_type": "roundtrip", "input": "pkg:generic/example?calc=2%2B1%3D3&preencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%255B1%255D%3Dmy%2520key%26d%3D%2523%23docs&unencoded_url=https:%2F%2Fexample.com%2Fsite%3Fval%5B1%5D%3Dmy%20key%23docs",