aboutsummaryrefslogtreecommitdiffstats
path: root/tests/integration/test_relative_links.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/test_relative_links.py')
-rw-r--r--tests/integration/test_relative_links.py60
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"])