You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Enso-Bot/venv/Lib/site-packages/south/tests/logger.py

83 lines
2.9 KiB
Python

import io
import logging
import os
import tempfile
from south.tests import unittest
import sys
from django.conf import settings
from django.db import connection, models
from south.db import db
from south.logger import close_logger
class TestLogger(unittest.TestCase):
"""
Tests if the logging is working reasonably. Some tests ignored if you don't
have write permission to the disk.
"""
def setUp(self):
db.debug = False
self.test_path = tempfile.mkstemp(suffix=".south.log")[1]
def test_db_execute_logging_nofile(self):
"Does logging degrade nicely if SOUTH_LOGGING_ON not set?"
settings.SOUTH_LOGGING_ON = False # this needs to be set to False
# to avoid issues where other tests
# set this to True. settings is shared
# between these tests.
db.create_table("test9", [('email_confirmed', models.BooleanField(default=False))])
def test_db_execute_logging_off_with_basic_config(self):
"""
Does the south logger avoid outputing debug information with
south logging turned off and python logging configured with
a basic config?"
"""
settings.SOUTH_LOGGING_ON = False
# Set root logger to capture WARNING and worse
logging_stream = io.StringIO()
logging.basicConfig(stream=logging_stream, level=logging.WARNING)
db.create_table("test12", [('email_confirmed', models.BooleanField(default=False))])
# since south logging is off, and our root logger is at WARNING
# we should not find DEBUG info in the log
self.assertEqual(logging_stream.getvalue(), '')
def test_db_execute_logging_validfile(self):
"Does logging work when passing in a valid file?"
settings.SOUTH_LOGGING_ON = True
settings.SOUTH_LOGGING_FILE = self.test_path
# Check to see if we can make the logfile
try:
fh = open(self.test_path, "w")
except IOError:
# Permission was denied, ignore the test.
return
else:
fh.close()
# Do an action which logs
db.create_table("test10", [('email_confirmed', models.BooleanField(default=False))])
# Close the logged file
close_logger()
try:
os.remove(self.test_path)
except:
# It's a tempfile, it's not vital we remove it.
pass
def test_db_execute_logging_missingfilename(self):
"Does logging raise an error if there is a missing filename?"
settings.SOUTH_LOGGING_ON = True
settings.SOUTH_LOGGING_FILE = None
self.assertRaises(
IOError,
db.create_table,
"test11",
[('email_confirmed', models.BooleanField(default=False))],
)