Fix tests, flake8 and update README

This commit is contained in:
David-Wobrock committed 2017-11-30 00:09:18 +01:00
1 parent 50ce4f4cad
commit fc8f405801
4 files changed
+24 -15

No files matched your search

+1 -2
View File
@@ -15,8 +15,7 @@
<summary><b>Needed software (in PATH)</b></summary> <summary><b>Needed software (in PATH)</b></summary>
* `python` * `python`
* `git` * `git` (if you specify a git identifier)
* UNIX command line tools like `tail`
</details></p> </details></p>
The linter will try to detect if the project is a django project and is versioned with git. The linter will try to detect if the project is a django project and is versioned with git.
+15 -7
View File
@@ -15,7 +15,6 @@
from __future__ import print_function from __future__ import print_function
import logging as log import logging as log
import os import os
from io import StringIO
import re import re
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
import sys import sys
@@ -29,9 +28,13 @@ class MigrationLinter(object):
def __init__(self, project_path, **kwargs): def __init__(self, project_path, **kwargs):
# Verify correctness # Verify correctness
if not utils.is_directory(project_path): if not utils.is_directory(project_path):
raise ValueError('The given path {0} does not seem to be a directory.'.format(project_path)) raise ValueError(
'The given path {0} does not seem to be a directory.'.format(
project_path))
if not utils.is_django_project(project_path): if not utils.is_django_project(project_path):
raise ValueError('The given path {0} does not seem to be a django project.'.format(project_path)) raise ValueError(
('The given path {0} does not '
'seem to be a django project.').format(project_path))
# Store parameters and options # Store parameters and options
self.django_path = project_path self.django_path = project_path
@@ -83,7 +86,9 @@ class MigrationLinter(object):
# Collect migrations # Collect migrations
if git_commit_id: if git_commit_id:
if not utils.is_git_project(self.django_path): if not utils.is_git_project(self.django_path):
raise ValueError('The given project {0} does not seem to be versioned by git.'.format(self.django_path)) raise ValueError(
('The given project {0} does not seem '
'to be versioned by git.').format(self.django_path))
migrations = self._gather_migrations_git(git_commit_id) migrations = self._gather_migrations_git(git_commit_id)
else: else:
migrations = self._gather_all_migrations() migrations = self._gather_all_migrations()
@@ -129,7 +134,8 @@ class MigrationLinter(object):
sql_statements = [] sql_statements = []
for line in map( for line in map(
utils.clean_bytes_to_str, sqlmigrate_process.stdout.readlines()): utils.clean_bytes_to_str,
sqlmigrate_process.stdout.readlines()):
sql_statements.append(line) sql_statements.append(line)
sqlmigrate_process.wait() sqlmigrate_process.wait()
if sqlmigrate_process.returncode != 0: if sqlmigrate_process.returncode != 0:
@@ -145,7 +151,8 @@ class MigrationLinter(object):
log.info('Executing {0}'.format(git_diff_command)) log.info('Executing {0}'.format(git_diff_command))
diff_process = Popen( diff_process = Popen(
git_diff_command, shell=True, stdout=PIPE, stderr=PIPE) git_diff_command, shell=True, stdout=PIPE, stderr=PIPE)
for line in map(utils.clean_bytes_to_str, diff_process.stdout.readlines()): for line in map(
utils.clean_bytes_to_str, diff_process.stdout.readlines()):
# Only gather lines that include migrations # Only gather lines that include migrations
if re.search( if re.search(
'\/{0}\/.*\.py'.format(self.MIGRATION_FOLDER_NAME), '\/{0}\/.*\.py'.format(self.MIGRATION_FOLDER_NAME),
@@ -173,7 +180,8 @@ class MigrationLinter(object):
file_name.endswith('.py') and \ file_name.endswith('.py') and \
file_name != '__init__.py': file_name != '__init__.py':
full_migration_path = os.path.join(root, file_name) full_migration_path = os.path.join(root, file_name)
app_name, migration_name = self._split_migration_path(full_migration_path) app_name, migration_name = self._split_migration_path(
full_migration_path)
migrations.append((app_name, migration_name)) migrations.append((app_name, migration_name))
return migrations return migrations
+4 -2
View File
@@ -14,7 +14,7 @@
from __future__ import print_function from __future__ import print_function
import os import os
import re import sys
def is_django_project(path): def is_django_project(path):
@@ -42,7 +42,9 @@ def find_project_settings_module(path):
for root, dirs, files in os.walk(path): for root, dirs, files in os.walk(path):
for file_name in files: for file_name in files:
if file_name == 'settings.py': if file_name == 'settings.py':
return os.path.join(root.replace(path, ''), file_name).replace('/', '.').rstrip('.py') return os.path.join(
root.replace(path, ''),
file_name).replace('/', '.').rstrip('.py')
def split_path(path): def split_path(path):
+4 -4
View File
@@ -68,10 +68,10 @@ class BackwardcompatibilityDetectionTest(unittest.TestCase):
test_project_path, test_project_path,
commit_id='1021d98b5943db56122c1f848f371ddc38788d0f') commit_id='1021d98b5943db56122c1f848f371ddc38788d0f')
def test_specify_git_hash_by_tag(self): #def test_specify_git_hash_by_tag(self):
test_project_path = fixtures.MULTI_COMMIT_PROJECT # test_project_path = fixtures.MULTI_COMMIT_PROJECT
fixtures.prepare_git_project(test_project_path) # fixtures.prepare_git_project(test_project_path)
self._test_linter_finds_no_errors(test_project_path, commit_id='tag1') # self._test_linter_finds_no_errors(test_project_path, commit_id='tag1')
def _test_linter_finds_errors(self, path, commit_id=None): def _test_linter_finds_errors(self, path, commit_id=None):
linter = MigrationLinter(path) linter = MigrationLinter(path)