Skip to content

Commit

Permalink
handle linting a project in pwd
Browse files Browse the repository at this point in the history
When calling "django-migration-linter ."
be able to handle it (especially with cache)
  • Loading branch information
David-Wobrock committed Jan 20, 2019
1 parent 75c969c commit 009153f
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 3 deletions.
2 changes: 1 addition & 1 deletion django_migration_linter/cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
class Cache(dict):
def __init__(self, django_folder, cache_path):
self.django_folder = django_folder
project_name = split_path(django_folder)[-2]
project_name = split_path(django_folder)[-1]
self.filename = os.path.join(cache_path, "{0}.pickle".format(project_name))

if not os.path.exists(os.path.dirname(self.filename)):
Expand Down
2 changes: 1 addition & 1 deletion django_migration_linter/migration_linter.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def __init__(self, project_path, **kwargs):
)

# Store parameters and options
self.django_path = project_path
self.django_path = os.path.abspath(project_path)
self.ignore_name_contains = kwargs.get("ignore_name_contains", None)
self.ignore_name = kwargs.get("ignore_name", None) or tuple()
self.include_apps = kwargs.get("include_apps", None)
Expand Down
2 changes: 1 addition & 1 deletion django_migration_linter/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def find_project_settings_module(path):

def split_path(path):
a, b = os.path.split(path)
return (split_path(a) if (len(a) > 0 and a != "/") else []) + [b]
return (split_path(a) if (len(a) > 0 and a != "/") else []) + ([b] if b else [])


def split_migration_path(migration_path):
Expand Down
21 changes: 21 additions & 0 deletions tests/functional/test_cmd_line_call.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,3 +220,24 @@ def test_call_linter_with_deleted_migrations(self):
self.assertEqual(len(lines), 3)
self.assertTrue(lines[0].endswith('OK'))
self.assertTrue(lines[1].startswith('*** Summary'))

def test_call_from_within_project(self):
cmd = 'cd {0} && {1} --no-cache .'.format(
fixtures.CORRECT_PROJECT,
self.linter_exec)

process = Popen(
cmd, shell=True, stdout=PIPE, stderr=PIPE)
process.wait()
self.assertEqual(process.returncode, 0)
lines = list(map(utils.clean_bytes_to_str, process.stdout.readlines()))
self.assertEqual(len(lines), 6)
self.assertEqual(
sorted(lines[:4]),
sorted([
"(test_app1, 0001_initial)... OK",
"(test_app1, 0002_a_new_null_field)... OK",
"(test_app2, 0001_foo)... OK",
"(test_app3, 0001_initial)... OK",
])
)
6 changes: 6 additions & 0 deletions tests/unit/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ def test_split_full_path(self):
self.assertEqual(splitted[1], 'bar')
self.assertEqual(splitted[2], 'fuz.py')

def test_split_folder_path(self):
splitted = split_path('/foo/bar')
self.assertEqual(len(splitted), 2)
self.assertEqual(splitted[0], 'foo')
self.assertEqual(splitted[1], 'bar')

def test_split_migration_long_path(self):
input_path = 'apps/the_app/migrations/0001_stuff.py'
app, mig = split_migration_path(input_path)
Expand Down

0 comments on commit 009153f

Please sign in to comment.