forked from github/pelican
test that 4 occurences of log "skipping url replacement" are found
This commit is contained in:
parent
b5b35c9fc8
commit
a6dd3178b1
2 changed files with 26 additions and 0 deletions
|
|
@ -8,6 +8,8 @@ import os
|
|||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import logging
|
||||
from logging.handlers import BufferingHandler
|
||||
|
||||
from functools import wraps
|
||||
from contextlib import contextmanager
|
||||
|
|
@ -157,3 +159,18 @@ def get_settings():
|
|||
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||
settings['filenames'] = {}
|
||||
return settings
|
||||
|
||||
|
||||
class LogCountHandler(BufferingHandler):
|
||||
"""
|
||||
Capturing and counting logged messages.
|
||||
"""
|
||||
|
||||
def __init__(self, capacity=1000):
|
||||
logging.handlers.BufferingHandler.__init__(self, capacity)
|
||||
|
||||
def count_logs(self, msg=None, level=None):
|
||||
return len([l for l in self.buffer
|
||||
if (msg is None or re.match(msg, l.getMessage()))
|
||||
and (level is None or l.levelno == level)
|
||||
])
|
||||
|
|
|
|||
|
|
@ -8,11 +8,13 @@ from filecmp import dircmp
|
|||
from tempfile import mkdtemp
|
||||
from shutil import rmtree
|
||||
import locale
|
||||
import logging
|
||||
|
||||
from mock import patch
|
||||
|
||||
from pelican import Pelican
|
||||
from pelican.settings import read_settings
|
||||
from .support import LogCountHandler
|
||||
|
||||
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
SAMPLES_PATH = os.path.abspath(os.sep.join((CURRENT_DIR, "..", "samples")))
|
||||
|
|
@ -42,6 +44,8 @@ class TestPelican(unittest.TestCase):
|
|||
# to run pelican in different situations and see how it behaves
|
||||
|
||||
def setUp(self):
|
||||
self.logcount_handler = LogCountHandler()
|
||||
logging.getLogger().addHandler(self.logcount_handler)
|
||||
self.temp_path = mkdtemp()
|
||||
self.old_locale = locale.setlocale(locale.LC_ALL)
|
||||
locale.setlocale(locale.LC_ALL, 'C')
|
||||
|
|
@ -49,6 +53,7 @@ class TestPelican(unittest.TestCase):
|
|||
def tearDown(self):
|
||||
rmtree(self.temp_path)
|
||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
||||
logging.getLogger().removeHandler(self.logcount_handler)
|
||||
|
||||
def assertFilesEqual(self, diff):
|
||||
msg = "some generated files differ from the expected functional " \
|
||||
|
|
@ -73,6 +78,10 @@ class TestPelican(unittest.TestCase):
|
|||
pelican.run()
|
||||
dcmp = dircmp(self.temp_path, os.sep.join((OUTPUT_PATH, "basic")))
|
||||
self.assertFilesEqual(recursiveDiff(dcmp))
|
||||
self.assertEqual(self.logcount_handler.count_logs(
|
||||
msg="Unable to find.*skipping url replacement",
|
||||
level=logging.WARNING,
|
||||
), 4, msg="bad number of occurences found for this log")
|
||||
|
||||
def test_custom_generation_works(self):
|
||||
# the same thing with a specified set of settings should work
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue