diff options
| author | 2021-02-03 19:17:50 -0500 | |
|---|---|---|
| committer | 2021-02-03 19:17:50 -0500 | |
| commit | 475d074fd74425efbe783fad08f97f2df0c4909f (patch) | |
| tree | 2acdae53999b3c74b716efa4edb5b40311fa356a /tests/integration/test_relative_links.py | |
| parent | cd502d52787f666fff3254d7d7e7578930c813c2 (diff) | |
| parent | 3a0d66f07b112b6d2bdc2b57bbf717a89a351ce6 (diff) | |
Update upstream source from tag 'upstream/8.1.2'
Update to upstream version '8.1.2'
with Debian dir e5e966a9e6010ef70618dc9a61558fa4db35aceb
Diffstat (limited to 'tests/integration/test_relative_links.py')
| -rw-r--r-- | tests/integration/test_relative_links.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/integration/test_relative_links.py b/tests/integration/test_relative_links.py new file mode 100644 index 0000000..3b158cf --- /dev/null +++ b/tests/integration/test_relative_links.py @@ -0,0 +1,60 @@ +"""Check that SITE_URL with a path doesn't break links.""" + +import io +import os + +import lxml +import pytest + +from nikola import __main__ + +from .helper import cd, patch_config +from .test_demo_build import prepare_demo_site +from .test_empty_build import ( # NOQA + test_archive_exists, + test_avoid_double_slash_in_rss, + test_check_files, + test_check_links, +) + + +def test_relative_links(build, output_dir): + """Check that the links in output/index.html are correct""" + test_path = os.path.join(output_dir, "index.html") + + with io.open(test_path, "rb") as inf: + data = inf.read() + + assert not any( + url.startswith("..") + for _, _, url, _ in lxml.html.iterlinks(data) + if url.endswith("css") + ) + + +def test_index_in_sitemap(build, output_dir): + """Test that the correct path is in sitemap, and not the wrong one.""" + sitemap_path = os.path.join(output_dir, "sitemap.xml") + with io.open(sitemap_path, "r", encoding="utf8") as inf: + sitemap_data = inf.read() + + assert "<loc>https://example.com/</loc>" not in sitemap_data + assert "<loc>https://example.com/foo/bar/</loc>" in sitemap_data + + +@pytest.fixture(scope="module") +def build(target_dir): + """Fill the site with demo content and build it.""" + prepare_demo_site(target_dir) + + # Set the SITE_URL to have a path with subfolder + patch_config( + target_dir, + ( + 'SITE_URL = "https://example.com/"', + 'SITE_URL = "https://example.com/foo/bar/"', + ), + ) + + with cd(target_dir): + __main__.main(["build"]) |
