Fixed #27436 -- Fixed makemigrations crash when creating migrations on a separate drive than where Django is installed.
This commit is contained in:
parent
b9eb267c46
commit
f94ce0d21d
|
@ -208,7 +208,10 @@ class Command(BaseCommand):
|
|||
if self.verbosity >= 1:
|
||||
# Display a relative path if it's below the current working
|
||||
# directory, or an absolute path otherwise.
|
||||
migration_string = os.path.relpath(writer.path)
|
||||
try:
|
||||
migration_string = os.path.relpath(writer.path)
|
||||
except ValueError:
|
||||
migration_string = writer.path
|
||||
if migration_string.startswith('..'):
|
||||
migration_string = writer.path
|
||||
self.stdout.write(" %s:\n" % (self.style.MIGRATE_LABEL(migration_string),))
|
||||
|
|
|
@ -1152,6 +1152,19 @@ class MakeMigrationsTests(MigrationTestBase):
|
|||
call_command("makemigrations", "migrations", stdout=out)
|
||||
self.assertIn(os.path.join(migration_dir, '0001_initial.py'), out.getvalue())
|
||||
|
||||
def test_makemigrations_migration_path_output_valueerror(self):
|
||||
"""
|
||||
makemigrations prints the absolute path if os.path.relpath() raises a
|
||||
ValueError when it's impossible to obtain a relative path, e.g. on
|
||||
Windows if Django is installed on a different drive than where the
|
||||
migration files are created.
|
||||
"""
|
||||
out = six.StringIO()
|
||||
with self.temporary_migration_module() as migration_dir:
|
||||
with mock.patch('os.path.relpath', side_effect=ValueError):
|
||||
call_command('makemigrations', 'migrations', stdout=out)
|
||||
self.assertIn(os.path.join(migration_dir, '0001_initial.py'), out.getvalue())
|
||||
|
||||
def test_makemigrations_inconsistent_history(self):
|
||||
"""
|
||||
makemigrations should raise InconsistentMigrationHistory exception if
|
||||
|
|
Loading…
Reference in New Issue