aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pre-commit23
-rw-r--r--t/001-setup.t9
-rw-r--r--t/100-python.t29
-rw-r--r--t/test.py5
-rw-r--r--t/uncommitted.py1
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