31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
import sys
|
|
sys.path.insert(0, "/root/.hermes/wizard-outputs/beam")
|
|
from canonical_url import canonicalize, equivalent
|
|
|
|
cases = [
|
|
("HTTP://Example.COM/Foo/", "http://example.com/Foo"),
|
|
("http://example.com:80/path?b=2&a=1#frag", "http://example.com/path?a=1&b=2"),
|
|
("http://example.com/a/../b/./c", "http://example.com/b/c"),
|
|
("https://example.com//a//b", "https://example.com/a/b"),
|
|
("http://user:pass@example.com/x", "http://example.com/x"),
|
|
("http://example.com/%7Efoo", "http://example.com/~foo"),
|
|
("example.com/path", "http://example.com/path"),
|
|
("//example.com/path", "http://example.com/path"),
|
|
]
|
|
for a,b in cases:
|
|
ca, cb = canonicalize(a), canonicalize(b)
|
|
assert ca == cb, (a, ca, b, cb)
|
|
assert equivalent(a,b)
|
|
print("all cases pass")
|
|
# distinct
|
|
assert canonicalize("http://a.com/?x=1") != canonicalize("http://a.com/?x=2")
|
|
assert canonicalize("http://a.com") != canonicalize("https://a.com")
|
|
print("distinct ok")
|
|
# invalid
|
|
try:
|
|
canonicalize("")
|
|
raise SystemExit("expected ValueError")
|
|
except ValueError:
|
|
pass
|
|
print("invalid ok")
|