diff options
| -rw-r--r-- | pre-commit | 23 | ||||
| -rw-r--r-- | t/001-setup.t | 9 | ||||
| -rw-r--r-- | t/100-python.t | 29 | ||||
| -rw-r--r-- | t/test.py | 5 | ||||
| -rw-r--r-- | t/uncommitted.py | 1 |
5 files changed, 67 insertions, 0 deletions
diff --git a/pre-commit b/pre-commit new file mode 100644 index 0000000..aefd1b7 --- /dev/null +++ b/pre-commit @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Check syntax of Python and JavaScript files. + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 +fi + +# Redirect output to stderr. +# exec 1>&2 + +# test $(git diff --cached --name-only --diff-filter=A -z $against | +# LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +files=$(git diff --cached --name-only --diff-filter=AMR -z $against) +python_files=$(echo $files | grep .*\.py) + +if [ -n "$python_files" ]; then + flake8 $python_files +fi diff --git a/t/001-setup.t b/t/001-setup.t index 0789bd7..0c6578c 100644 --- a/t/001-setup.t +++ b/t/001-setup.t @@ -10,4 +10,13 @@ ok !$?; chdir 't/git-repo' or die $!; +system('git init'); +ok !$?; + +system('cp ../../pre-commit .git/hooks'); +ok !$?; + +system('chmod +x .git/hooks/pre-commit'); +ok !$?; + done_testing; diff --git a/t/100-python.t b/t/100-python.t new file mode 100644 index 0000000..8e9b403 --- /dev/null +++ b/t/100-python.t @@ -0,0 +1,29 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +use Test::More; + +chdir 't/git-repo/' or die $!; + +system('cp ../*.py .'); +ok !$?; + +my $output = `ls -1`; + +ok $output eq 'test.py +uncommitted.py +', 'Both test Python files are present'; + +system('git add test.py'); +ok !$?; + +$output = `git commit 2>&1`; + +ok $output eq "test.py:1:1: F401 'datetime' imported but unused +test.py:3:80: E501 line too long (97 > 79 characters) +test.py:5:31: E225 missing whitespace around operator +", 'flake8 ran on committed Python file'; + +done_testing; diff --git a/t/test.py b/t/test.py new file mode 100644 index 0000000..2878abd --- /dev/null +++ b/t/test.py @@ -0,0 +1,5 @@ +import datetime + +'this is a long that is longer than 79 characters, or it will be whenever this sentence finishes' + +missing_spaces_around_operator=0 diff --git a/t/uncommitted.py b/t/uncommitted.py new file mode 100644 index 0000000..0f43f2a --- /dev/null +++ b/t/uncommitted.py @@ -0,0 +1 @@ +import math |
