def test_URL(): url = URL('http://www.example.com/') assert url.url == 'http://www.example.com/' assert list(url.urlparse) == ['http', 'www.example.com', '/', '', '', ''] assert url.netloc == 'www.example.com' assert url.hostname == 'www.example.com' assert url.hostname_without_www == 'example.com' assert url.registered_domain == 'example.com' assert url.original_frag is None url = URL('http://www.example.com/#foo#foo') assert url.original_frag == 'foo#foo' url = URL('http://www.example.com/#') assert url.original_frag is None # canonicalization url = URL('http://www.example.com/?') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com/?#') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com/foo') assert url.url == 'http://www.example.com/foo' url = URL('http://www.example.com/foo/') assert url.url == 'http://www.example.com/foo/' # urljoin urlj1 = URL('http://www.example.com/foo/') urlj2 = 'http://www.example.com/foo/' url = URL('foo', urljoin=urlj1) assert url.url == 'http://www.example.com/foo/foo' url = URL('foo', urljoin=urlj1) assert url.url == 'http://www.example.com/foo/foo' url = URL('/bar', urljoin=urlj1) assert url.url == 'http://www.example.com/bar' url = URL('/bar', urljoin=urlj2) assert url.url == 'http://www.example.com/bar' url = URL('http://sub.example.com/', urljoin=urlj1) assert url.url == 'http://sub.example.com/' url = URL('http://sub.example.com/', urljoin=urlj2) assert url.url == 'http://sub.example.com/' # read-only with pytest.raises(AttributeError): url.url = 'foo'
def test_URL(): url = URL('http://www.example.com/') assert url.url == 'http://www.example.com/' assert list(url.urlsplit) == ['http', 'www.example.com', '/', '', ''] assert url.netloc == 'www.example.com' assert url.hostname == 'www.example.com' assert url.hostname_without_www == 'example.com' assert url.registered_domain == 'example.com' assert url.original_frag is None url = URL('http://www.example.com/#foo#foo') assert url.original_frag == '#foo#foo' url = URL('http://www.example.com/#') assert url.original_frag is None # canonicalization url = URL('http://www.example.com/?') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com/?#') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com/foo') assert url.url == 'http://www.example.com/foo' url = URL('http://www.example.com/foo/') assert url.url == 'http://www.example.com/foo/' # urljoin urlj1 = URL('http://www.example.com/foo/') urlj2 = 'http://www.example.com/foo/' url = URL('foo', urljoin=urlj1) assert url.url == 'http://www.example.com/foo/foo' url = URL('foo', urljoin=urlj1) assert url.url == 'http://www.example.com/foo/foo' url = URL('/bar', urljoin=urlj1) assert url.url == 'http://www.example.com/bar' url = URL('/bar', urljoin=urlj2) assert url.url == 'http://www.example.com/bar' url = URL('http://sub.example.com/', urljoin=urlj1) assert url.url == 'http://sub.example.com/' url = URL('http://sub.example.com/', urljoin=urlj2) assert url.url == 'http://sub.example.com/' url = URL('foo', urljoin='http://example.com/subdir/') # base can cause this assert url.url == 'http://example.com/subdir/foo' # read-only with pytest.raises(AttributeError): url.url = 'foo' # urljoin examples from RFC 3986 -- python takes care of . and .. urlj = URL('http://a/b/c/d;p?q') # assert URL('g:h', urljoin=urlj).url == 'g:h' # absolute url missing hostname assert URL('g', urljoin=urlj).url == 'http://a/b/c/g' assert URL('./g', urljoin=urlj).url == 'http://a/b/c/g' assert URL('g/', urljoin=urlj).url == 'http://a/b/c/g/' assert URL('/g', urljoin=urlj).url == 'http://a/g' assert URL('//g', urljoin=urlj).url == 'http://g/' # altered because I insist on the trailing / assert URL('?y', urljoin=urlj).url == 'http://a/b/c/d;p?y' assert URL('g?y', urljoin=urlj).url == 'http://a/b/c/g?y' assert URL('#s', urljoin=urlj).url == 'http://a/b/c/d;p?q' # I drop the frag assert URL('g#s', urljoin=urlj).url == 'http://a/b/c/g' # I drop the frag assert URL('g?y#s', urljoin=urlj).url == 'http://a/b/c/g?y' # I drop the frag assert URL(';x', urljoin=urlj).url == 'http://a/b/c/;x' assert URL('g;x', urljoin=urlj).url == 'http://a/b/c/g;x' assert URL('g;x?y#s', urljoin=urlj).url == 'http://a/b/c/g;x?y' # I drop the frag assert URL('', urljoin=urlj).url == 'http://a/b/c/d;p?q' assert URL('.', urljoin=urlj).url == 'http://a/b/c/' assert URL('./', urljoin=urlj).url == 'http://a/b/c/' assert URL('..', urljoin=urlj).url == 'http://a/b/' assert URL('../', urljoin=urlj).url == 'http://a/b/' assert URL('../g', urljoin=urlj).url == 'http://a/b/g' assert URL('../..', urljoin=urlj).url == 'http://a/' assert URL('../../', urljoin=urlj).url == 'http://a/' assert URL('../../g', urljoin=urlj).url == 'http://a/g'
def test_URL(): url = URL('http://www.example.com/') assert url.url == 'http://www.example.com/' assert list(url.urlsplit) == ['http', 'www.example.com', '/', '', ''] assert url.netloc == 'www.example.com' assert url.hostname == 'www.example.com' assert url.hostname_without_www == 'example.com' assert url.registered_domain == 'example.com' assert url.original_frag is None url = URL('http://www.example.com/#foo#foo') assert url.original_frag == '#foo#foo' url = URL('http://www.example.com/#') assert url.original_frag is None # canonicalization url = URL('http://www.example.com/?') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com/?#') assert url.url == 'http://www.example.com/' url = URL('http://www.example.com/foo') assert url.url == 'http://www.example.com/foo' url = URL('http://www.example.com/foo/') assert url.url == 'http://www.example.com/foo/' # urljoin urlj1 = URL('http://www.example.com/foo/') urlj2 = 'http://www.example.com/foo/' url = URL('foo', urljoin=urlj1) assert url.url == 'http://www.example.com/foo/foo' url = URL('foo', urljoin=urlj1) assert url.url == 'http://www.example.com/foo/foo' url = URL('/bar', urljoin=urlj1) assert url.url == 'http://www.example.com/bar' url = URL('/bar', urljoin=urlj2) assert url.url == 'http://www.example.com/bar' url = URL('http://sub.example.com/', urljoin=urlj1) assert url.url == 'http://sub.example.com/' url = URL('http://sub.example.com/', urljoin=urlj2) assert url.url == 'http://sub.example.com/' url = URL('foo', urljoin='http://example.com/subdir/') # base can cause this assert url.url == 'http://example.com/subdir/foo' # read-only with pytest.raises(AttributeError): url.url = 'foo' # urljoin examples from RFC 3986 -- python takes care of . and .. urlj = URL('http://a/b/c/d;p?q') # assert URL('g:h', urljoin=urlj).url == 'g:h' # absolute url missing hostname assert URL('g', urljoin=urlj).url == 'http://a/b/c/g' assert URL('./g', urljoin=urlj).url == 'http://a/b/c/g' assert URL('g/', urljoin=urlj).url == 'http://a/b/c/g/' assert URL('/g', urljoin=urlj).url == 'http://a/g' assert URL( '//g', urljoin=urlj ).url == 'http://g/' # altered because I insist on the trailing / assert URL('?y', urljoin=urlj).url == 'http://a/b/c/d;p?y' assert URL('g?y', urljoin=urlj).url == 'http://a/b/c/g?y' assert URL('#s', urljoin=urlj).url == 'http://a/b/c/d;p?q' # I drop the frag assert URL('g#s', urljoin=urlj).url == 'http://a/b/c/g' # I drop the frag assert URL('g?y#s', urljoin=urlj).url == 'http://a/b/c/g?y' # I drop the frag assert URL(';x', urljoin=urlj).url == 'http://a/b/c/;x' assert URL('g;x', urljoin=urlj).url == 'http://a/b/c/g;x' assert URL('g;x?y#s', urljoin=urlj).url == 'http://a/b/c/g;x?y' # I drop the frag assert URL('', urljoin=urlj).url == 'http://a/b/c/d;p?q' assert URL('.', urljoin=urlj).url == 'http://a/b/c/' assert URL('./', urljoin=urlj).url == 'http://a/b/c/' assert URL('..', urljoin=urlj).url == 'http://a/b/' assert URL('../', urljoin=urlj).url == 'http://a/b/' assert URL('../g', urljoin=urlj).url == 'http://a/b/g' assert URL('../..', urljoin=urlj).url == 'http://a/' assert URL('../../', urljoin=urlj).url == 'http://a/' assert URL('../../g', urljoin=urlj).url == 'http://a/g'