1. Luke Plant
  2. south

Source

south / south / tests / logger.py

Mike Fogel 7d52925 
Brian Gershon a99b5d5 
Mike Fogel 7d52925 
Brian Gershon a99b5d5 
Mike Fogel 7d52925 

Andrew Godwin 5a708ca 
Brian Gershon a99b5d5 



Andrew Godwin 5a708ca 
Brian Gershon a99b5d5 



Andrew Godwin 5a708ca 

Brian Gershon a99b5d5 
Andrew Godwin 5a708ca 
Brian Gershon a99b5d5 

Andrew Godwin 5a708ca 

Brian Gershon a99b5d5 
Mike Fogel 7d52925 
Andrew Godwin 714bc3b 



Andrew Godwin e070704 
Mike Fogel 7d52925 


















Brian Gershon a99b5d5 
Andrew Godwin 5a708ca 
Andrew Godwin 714bc3b 
Brian Gershon b6b1aa5 
Andrew Godwin 5a708ca 

Andrew Godwin 61cf8ce 
Andrew Godwin 5a708ca 


Andrew Godwin 61cf8ce 

Andrew Godwin 5a708ca 
Andrew Godwin e070704 
Andrew Godwin 5a708ca 

Andrew Godwin dd202dd 




Brian Gershon e02feed 

Andrew Godwin 5a708ca 
Andrew Godwin 714bc3b 

Andrew Godwin 5a708ca 





Brian Gershon a99b5d5 
Mike Fogel 7d52925 
import logging
import os
import tempfile
import unittest
import StringIO
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 = StringIO.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.assertIs(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))],
        )