[iptables,1/2] tests: xlate: remove python 3.5 dependency

Message ID 1492557549-578-1-git-send-email-pablombg@gmail.com
State Accepted
Delegated to: Pablo Neira
Headers show

Commit Message

Pablo M. Bermudo Garay April 18, 2017, 11:19 p.m.
This commit replaces subprocess.run (introduced in python 3.5) with
subprocess.Popen (supported since the first version of python 3).

Furthermore, the output has been improved when ip[6]tables-translate
exits with non-zero return code.

Signed-off-by: Pablo M. Bermudo Garay <pablombg@gmail.com>
---
 xlate-test.py | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

Comments

Pablo Neira Ayuso April 25, 2017, 9 a.m. | #1
On Wed, Apr 19, 2017 at 01:19:08AM +0200, Pablo M. Bermudo Garay wrote:
> This commit replaces subprocess.run (introduced in python 3.5) with
> subprocess.Popen (supported since the first version of python 3).
> 
> Furthermore, the output has been improved when ip[6]tables-translate
> exits with non-zero return code.

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/xlate-test.py b/xlate-test.py
index 006289f..37760e9 100755
--- a/xlate-test.py
+++ b/xlate-test.py
@@ -4,8 +4,8 @@ 
 import os
 import sys
 import shlex
-import subprocess
 import argparse
+from subprocess import Popen, PIPE
 
 keywords = ("iptables-translate", "ip6tables-translate")
 
@@ -40,19 +40,25 @@  def run_test(name, payload):
 
     for line in payload:
         if line.startswith(keywords):
-            output = subprocess.run(shlex.split(line), stdout=subprocess.PIPE)
-            translation = output.stdout.decode("utf-8").rstrip(" \n")
-            expected = next(payload).rstrip(" \n")
-            if translation != expected:
-                result.append(red("Fail"))
-                result.append(magenta("src: ") + line.rstrip(" \n"))
-                result.append(magenta("exp: ") + expected)
-                result.append(magenta("res: ") + translation + "\n")
+            process = Popen(shlex.split(line), stdout=PIPE, stderr=PIPE)
+            (output, error) = process.communicate()
+            if process.returncode == 0:
+                translation = output.decode("utf-8").rstrip(" \n")
+                expected = next(payload).rstrip(" \n")
+                if translation != expected:
+                    result.append(red("Fail"))
+                    result.append(magenta("src: ") + line.rstrip(" \n"))
+                    result.append(magenta("exp: ") + expected)
+                    result.append(magenta("res: ") + translation + "\n")
+                    test_passed = False
+                elif args.all:
+                    result.append(green("Ok"))
+                    result.append(magenta("src: ") + line.rstrip(" \n"))
+                    result.append(magenta("res: ") + translation + "\n")
+            else:
                 test_passed = False
-            elif args.all:
-                result.append(green("Ok"))
-                result.append(magenta("src: ") + line.rstrip(" \n"))
-                result.append(magenta("res: ") + translation + "\n")
+                result.append(red("Error: ") + "iptables-translate failure")
+                result.append(error.decode("utf-8"))
 
     if not test_passed or args.all:
         print("\n".join(result))