The Django unit test calls the "create_test_db" method in "django/db/backends/creation.py" (line 309 in Django 1.6.1) to create the test database.
This method calls two commands "syncdb" and "flush" to initialize the test database.
The comments before calling the "flush" command says:
# We need to then do a flush to ensure that any data installed by# custom SQL has been removed. The only test data should come from# test fixtures, or autogenerated from post_syncdb triggers.# This has the side effect of loading initial data (which was# intentionally skipped in the syncdb).call_command('flush',verbosity=max(verbosity-1,0),interactive=False,database=self.connection.alias)
South hacked the "flush" command to do nothing which skips the "load_initial_data" step for the unit tests. That is what I fixed in this commit.
This bug did not show up until 0.8.2 because South's "syncdb" command did not handle the "load_initial_data" option correctly and loaded the fixtures in the syncdb step.