def get_path_of_sole_initial_migration_test():
    nose.tools.assert_equal(
        get_path_of_sole_initial_migration("testdata/good_squash/app_alpha/"),
        "testdata/good_squash/app_alpha/migrations/0001_initial.py"
    )
    with nose.tools.assert_raises(ValueError):
        get_path_of_sole_initial_migration("testdata/bad_squash/app_has_noninitial_migrations/")
    with nose.tools.assert_raises(ValueError):
        get_path_of_sole_initial_migration("testdata/bad_squash/app_has_no_initial_migration/")
def squash_migrations_test():
    project_dir = "testdata/good_squash/"
    apps = get_south_apps(project_dir)
    app_to_migration_path = {}
    for app in apps:
        app_dir = os.path.join(project_dir, app)
        app_to_migration_path[app] = \
            get_path_of_sole_initial_migration(app_dir)
    squashed_migration = squash_migrations(app_to_migration_path)
    got = squashed_migration.getvalue()
    expected_path = "testdata/good_squash/expected_result.py"
    assert_equal_ignorespace_with_diff(got, expected_path)
def make_dummy_migration_test():
    project_dir = "testdata/good_squash/"
    app = 'app_gamma'
    app_dir = os.path.join(project_dir, app)
    migration_path = get_path_of_sole_initial_migration(app_dir)
    destination_app = app
    squashed_migration_name = "0001_everything"
    dummy_migration = make_dummy_migration(app, migration_path,
                                           destination_app,
                                           squashed_migration_name)
    got = dummy_migration.getvalue()
    expected_path = "testdata/good_squash/expected_new_initial.py"
    assert_equal_ignorespace_with_diff(got, expected_path)