[devscripts] 03/03: Convert flake8 test into a unittest

Benjamin Drung bdrung at moszumanska.debian.org
Sun Feb 4 22:45:11 UTC 2018


This is an automated email from the git hooks/post-receive script.

bdrung pushed a commit to branch master
in repository devscripts.

commit 52b2db9ad08c74fd0b733611da4472cfe3b85594
Author: Benjamin Drung <bdrung at debian.org>
Date:   Sun Feb 4 21:12:46 2018 +0100

    Convert flake8 test into a unittest
    
    Signed-off-by: Benjamin Drung <bdrung at debian.org>
---
 scripts/Makefile                       |  5 +---
 scripts/devscripts/test/test_flake8.py | 53 ++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/scripts/Makefile b/scripts/Makefile
index e25f9e6..ab2b59e 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -25,8 +25,6 @@ BC_BUILD_DIR:=bash_completion
 COMPLETION = $(patsubst %.bash_completion,$(BC_BUILD_DIR)/%,$(COMPL_FILES))
 COMPL_DIR := $(shell pkg-config --variable=completionsdir bash-completion)
 PKGNAMES:=wnpp-alert wnpp-check mk-build-deps rmadison mass-bug debsnap dd-list build-rdeps who-uploads transition-check getbuildlog dcontrol grep-excuses rc-alert whodepends dget pts-subscribe pts-unsubscribe debcheckout
-# also update the list in setup.py
-PYTHON3_SCRIPTS:=debdiff-apply sadt suspicious-source wrap-and-sort reproducible-check
 
 GEN_MAN1S += debrepro.1 devscripts.1 ltnu.1 mk-origtargz.1 uscan.1 reproducible-check.1
 
@@ -74,8 +72,7 @@ test_pl: $(PL_CHECKS)
 %.pl_check: %
 	perl -I ../lib -c $<
 
-test_py: $(PYTHON3_SCRIPTS) $(VERSION_FILE) 
-	python3 -m flake8 --max-line-length=99 $(PYTHON3_SCRIPTS)
+test_py: $(VERSION_FILE)
 	$(foreach python,$(shell py3versions -r ../debian/control),$(python) setup.py test$(\n))
 
 # There is a slight chance this gets called twice, once here from here and once
diff --git a/scripts/devscripts/test/test_flake8.py b/scripts/devscripts/test/test_flake8.py
new file mode 100644
index 0000000..09387c7
--- /dev/null
+++ b/scripts/devscripts/test/test_flake8.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2017-2018, Benjamin Drung <bdrung at debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+"""test_flake8.py - Run flake8 check"""
+
+import subprocess
+import sys
+import unittest
+
+from . import get_source_files, unittest_verbosity
+
+
+class Flake8TestCase(unittest.TestCase):
+    """
+    This unittest class provides a test that runs the flake8 code
+    checker (which combines pycodestyle and pyflakes) on the Python
+    source code. The list of source files is provided by the
+    get_source_files() function.
+    """
+
+    def test_flake8(self):
+        """Test: Run flake8 on Python source code"""
+        with open("/proc/self/cmdline", "r") as cmdline_file:
+            python_binary = cmdline_file.read().split("\0")[0]
+        cmd = [python_binary, "-m", "flake8", "--max-line-length=99"] + get_source_files()
+        if unittest_verbosity() >= 2:
+            sys.stderr.write("Running following command:\n{}\n".format(" ".join(cmd)))
+        process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+                                   stderr=subprocess.PIPE, close_fds=True)
+
+        out, err = process.communicate()
+        if process.returncode != 0:
+            msgs = []
+            if err:
+                msgs.append("flake8 exited with code {} and has unexpected output on stderr:\n{}"
+                            .format(process.returncode, err.decode().rstrip()))
+            if out:
+                msgs.append("flake8 found issues:\n{}".format(out.decode().rstrip()))
+            if not msgs:
+                msgs.append("flake8 exited with code {} and has no output on stdout or stderr."
+                            .format(process.returncode))
+            self.fail("\n".join(msgs))

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git



More information about the devscripts-devel mailing list