summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Cordasco <graffatcolmingov@gmail.com>2016-11-23 16:36:26 -0600
committerIan Cordasco <graffatcolmingov@gmail.com>2016-11-23 16:36:26 -0600
commite4582ef4e767ca7498cf42bdf8772b82dcf0ded3 (patch)
treeb1b62323edb436c363e95f21336d1587844ed0c7 /src
parentf8fbc11fad9003423efc165669b7c2838929b985 (diff)
downloadflake8-e4582ef4e767ca7498cf42bdf8772b82dcf0ded3.tar.gz
Only force files to be included when run from CLI
Previously we added support so users can do: $ flake8 bin/executable But this broke the fact that git hooks shouldn't check things like reStructuredText doc files. This commit restores that functionality but will cause bin/executable to be ignored in the git hook. This seems fair since folks can amend their filename patterns to include it explicitly. Closes #268
Diffstat (limited to 'src')
-rw-r--r--src/flake8/checker.py25
-rw-r--r--src/flake8/main/application.py14
-rw-r--r--src/flake8/main/git.py1
-rw-r--r--src/flake8/main/mercurial.py5
4 files changed, 30 insertions, 15 deletions
diff --git a/src/flake8/checker.py b/src/flake8/checker.py
index 7f148f4..18e4937 100644
--- a/src/flake8/checker.py
+++ b/src/flake8/checker.py
@@ -257,24 +257,17 @@ class Manager(object):
paths = ['.']
filename_patterns = self.options.filename
+ running_from_vcs = self.options._running_from_vcs
# NOTE(sigmavirus24): Yes this is a little unsightly, but it's our
# best solution right now.
- def should_create_file_checker(filename):
+ def should_create_file_checker(filename, argument):
"""Determine if we should create a file checker."""
matches_filename_patterns = utils.fnmatch(
filename, filename_patterns
)
is_stdin = filename == '-'
file_exists = os.path.exists(filename)
- return (file_exists and matches_filename_patterns) or is_stdin
-
- checks = self.checks.to_dictionary()
- self.checkers = [
- FileChecker(filename, checks, self.options)
- for argument in paths
- for filename in utils.filenames_from(argument,
- self.is_path_excluded)
# NOTE(sigmavirus24): If a user explicitly specifies something,
# e.g, ``flake8 bin/script`` then we should run Flake8 against
# that. Since should_create_file_checker looks to see if the
@@ -282,7 +275,19 @@ class Manager(object):
# the event that the argument and the filename are identical.
# If it was specified explicitly, the user intended for it to be
# checked.
- if argument == filename or should_create_file_checker(filename)
+ explicitly_provided = (not running_from_vcs and
+ (argument == filename))
+ return ((file_exists and
+ (explicitly_provided or matches_filename_patterns)) or
+ is_stdin)
+
+ checks = self.checks.to_dictionary()
+ self.checkers = [
+ FileChecker(filename, checks, self.options)
+ for argument in paths
+ for filename in utils.filenames_from(argument,
+ self.is_path_excluded)
+ if should_create_file_checker(filename, argument)
]
LOG.info('Checking %d files', len(self.checkers))
diff --git a/src/flake8/main/application.py b/src/flake8/main/application.py
index 4765ee1..2eae382 100644
--- a/src/flake8/main/application.py
+++ b/src/flake8/main/application.py
@@ -174,6 +174,8 @@ class Application(object):
if not self.parsed_diff:
self.exit()
+ self.options._running_from_vcs = False
+
self.check_plugins.provide_options(self.option_manager, self.options,
self.args)
self.listening_plugins.provide_options(self.option_manager,
@@ -300,16 +302,20 @@ class Application(object):
self.make_guide()
self.make_file_checker_manager()
- def _run(self, argv):
- # type: (Union[NoneType, List[str]]) -> NoneType
- self.initialize(argv)
- self.run_checks()
+ def report(self):
+ """Report errors, statistics, and benchmarks."""
self.formatter.start()
self.report_errors()
self.report_statistics()
self.report_benchmarks()
self.formatter.stop()
+ def _run(self, argv):
+ # type: (Union[NoneType, List[str]]) -> NoneType
+ self.initialize(argv)
+ self.run_checks()
+ self.report()
+
def run(self, argv=None):
# type: (Union[NoneType, List[str]]) -> NoneType
"""Run our application.
diff --git a/src/flake8/main/git.py b/src/flake8/main/git.py
index 096fed6..5eae0d0 100644
--- a/src/flake8/main/git.py
+++ b/src/flake8/main/git.py
@@ -43,6 +43,7 @@ def hook(lazy=False, strict=False):
filepaths = list(copy_indexed_files_to(tempdir, lazy))
app.initialize(['.'])
app.options.exclude = update_excludes(app.options.exclude, tempdir)
+ app.options._running_from_vcs = True
app.run_checks(filepaths)
app.report_errors()
diff --git a/src/flake8/main/mercurial.py b/src/flake8/main/mercurial.py
index d067612..a46f676 100644
--- a/src/flake8/main/mercurial.py
+++ b/src/flake8/main/mercurial.py
@@ -35,7 +35,10 @@ def hook(ui, repo, **kwargs):
filenames = list(get_filenames_from(repo, kwargs))
app = application.Application()
- app.run(filenames)
+ app.initialize(filenames)
+ app.options._running_from_vcs = True
+ app.run_checks()
+ app.report()
if strict:
return app.result_count