Merge pull request #2406 from mosra/metadata-intrasite-links-process-only-once

Don't process metadata links before all files are present
This commit is contained in:
Justin Mayer 2018-11-11 18:18:54 +01:00 committed by GitHub
commit db586a4c59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 62 additions and 4 deletions

View file

@ -0,0 +1,7 @@
First article
#############
:date: 2018-11-10
:summary: Here's the `second <{filename}/second-article.rst>`_,
`third <{filename}/third-article.rst>`_ and a
`nonexistent article <{filename}/nonexistent.rst>`_.

View file

@ -0,0 +1,7 @@
Second article
##############
:date: 2018-11-10
:summary: Here's the `first <{filename}/first-article.rst>`_,
`third <{filename}/third-article.rst>`_ and a
`nonexistent article <{filename}/nonexistent.rst>`_.

View file

@ -0,0 +1,7 @@
Third article
#############
:date: 2018-11-10
:summary: Here's the `first <{filename}/first-article.rst>`_,
`second <{filename}/second-article.rst>`_ and a
`nonexistent article <{filename}/nonexistent.rst>`_.

View file

@ -333,6 +333,10 @@ class TestPage(LoggedTestCase):
args['metadata']['custom'] = parsed
args['context']['localsiteurl'] = 'http://notmyidea.org'
p = Page(**args)
# This is called implicitly from all generators and Pelican.run() once
# all files are processed. Here we process just one page so it needs
# to be called explicitly.
p.refresh_metadata_intersite_links()
self.assertEqual(p.summary, linked)
self.assertEqual(p.custom, linked)

View file

@ -211,6 +211,29 @@ class TestPelican(LoggedTestCase):
msg="Writing .*",
level=logging.INFO)
def test_cyclic_intersite_links_no_warnings(self):
settings = read_settings(path=None, override={
'PATH': os.path.join(CURRENT_DIR, 'cyclic_intersite_links'),
'OUTPUT_PATH': self.temp_path,
'CACHE_PATH': self.temp_cache,
})
pelican = Pelican(settings=settings)
mute(True)(pelican.run)()
# There are four different intersite links:
# - one pointing to the second article from first and third
# - one pointing to the first article from second and third
# - one pointing to the third article from first and second
# - one pointing to a nonexistent from each
# If everything goes well, only the warning about the nonexistent
# article should be printed. Only two articles are not sufficient,
# since the first will always have _context['generated_content'] empty
# (thus skipping the link resolving) and the second will always have it
# non-empty, containing the first, thus always succeeding.
self.assertLogCountEqual(
count=1,
msg="Unable to find '.*\\.rst', skipping url replacement.",
level=logging.WARNING)
def test_md_extensions_deprecation(self):
"""Test that a warning is issued if MD_EXTENSIONS is used"""
settings = read_settings(path=None, override={