mirror of https://github.com/sgoudham/Enso-Bot.git
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.
83 lines
2.9 KiB
Python
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))],
|
|
)
|