Skip to content

Commit

Permalink
Fixes to test script for flake8
Browse files Browse the repository at this point in the history
  • Loading branch information
douglas-gibbons committed May 17, 2017
1 parent f9b79b2 commit 8ed81e3
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 50 deletions.
4 changes: 3 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@ language: python
python:
- "2.7"

script: python test/wait-for-it.py
script:
- python test/wait-for-it.py

93 changes: 44 additions & 49 deletions test/wait-for-it.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import unittest
import subprocess
import shlex
from subprocess import Popen, PIPE
import os
Expand All @@ -11,59 +10,58 @@
HELP_TEXT = "Usage:" # Start of help text
DIVIDE_LINE = '-'*71 # Output line of dashes

"""
TestWaitForIt tests the wait-for-it.sh shell script.
The wait-for-it.sh script is assumed to be in the parent directory to the
test script.
"""

class TestWaitForIt(unittest.TestCase):
"""
TestWaitForIt tests the wait-for-it.sh shell script.
The wait-for-it.sh script is assumed to be in the parent directory to
the test script.
"""


def execute(self,cmd):
def execute(self, cmd):
"""Executes a command and returns exit code, STDOUT, STDERR"""
args = shlex.split(cmd)
proc = Popen(args, stdout=PIPE, stderr=PIPE)
out, err = proc.communicate()
exitcode = proc.returncode
return exitcode, out, err
def open_local_port(self,host="localhost", port=8929, timeout=5):

def open_local_port(self, host="localhost", port=8929, timeout=5):
s = socket.socket()
s.bind((host,port))
s.bind((host, port))
s.listen(timeout)
return s
def check_args(self,args,stdout_regex,stderr_regex,exitcode):

def check_args(self, args, stdout_regex, stderr_regex, exitcode):
command = self.wait_script + " " + args
actual_exitcode, out, err = self.execute(command)

# Check stderr
msg = ("Failed check that STDERR:\n"+
DIVIDE_LINE + "\n" + err + "\n" + DIVIDE_LINE +
"\nmatches:\n" +
DIVIDE_LINE + "\n" + stderr_regex + "\n" + DIVIDE_LINE)
self.assertIsNotNone(re.match(stderr_regex,err,re.DOTALL),msg)
# Check STDOUT
msg = ("Failed check that STDOUT:\n"+
msg = ("Failed check that STDERR:\n" +
DIVIDE_LINE + "\n" + err + "\n" + DIVIDE_LINE +
"\nmatches:\n" +
DIVIDE_LINE + "\n" + stderr_regex + "\n" + DIVIDE_LINE)
self.assertIsNotNone(re.match(stderr_regex, err, re.DOTALL), msg)

# Check STDOUT
msg = ("Failed check that STDOUT:\n" +
DIVIDE_LINE + "\n" + out + "\n" + DIVIDE_LINE +
"\nmatches:\n" +
DIVIDE_LINE + "\n" + stdout_regex + "\n" + DIVIDE_LINE)
self.assertIsNotNone(re.match(stdout_regex,out,re.DOTALL),msg)
self.assertIsNotNone(re.match(stdout_regex, out, re.DOTALL), msg)

# Check exit code
self.assertEqual(actual_exitcode,exitcode)
self.assertEqual(actual_exitcode, exitcode)

def setUp(self):
script_path = os.path.dirname(sys.argv[0])
parent_path = os.path.abspath(os.path.join(script_path, os.pardir))
self.wait_script = os.path.join(parent_path,"wait-for-it.sh")
self.wait_script = os.path.join(parent_path, "wait-for-it.sh")

def test_no_args(self):
"""
Check that no aruments returns the missing args text and the correct
return code
Check that no aruments returns the missing args text and the
correct return code
"""
self.check_args(
"",
Expand All @@ -73,15 +71,15 @@ def test_no_args(self):
)
# Return code should be 1 when called with no args
exitcode, out, err = self.execute(self.wait_script)
self.assertEqual(exitcode,1)
self.assertEqual(exitcode, 1)

def test_help(self):
""" Check that help text is printed with --help argument """
self.check_args(
"--help",
"",
HELP_TEXT,
1
""" Check that help text is printed with --help argument """
self.check_args(
"--help",
"",
HELP_TEXT,
1
)

def test_no_port(self):
Expand Down Expand Up @@ -112,7 +110,7 @@ def test_host_port(self):
0
)
soc.close()

def test_combined_host_port(self):
"""
Tests that wait-for-it.sh returns correctly after establishing a
Expand All @@ -126,15 +124,15 @@ def test_combined_host_port(self):
0
)
soc.close()

def test_port_failure_with_timeout(self):
"""
Note exit status of 124 is exected, passed from the timeout command
"""
self.check_args(
"localhost:8929 --timeout=1",
"",
".*wait-for-it.sh: timeout occurred after waiting 1 seconds for localhost:8929",
".*timeout occurred after waiting 1 seconds for localhost:8929",
124
)

Expand All @@ -151,21 +149,19 @@ def test_command_execution(self):
)
soc.close()


def test_failed_command_execution(self):
"""
Check command failure. The command in question outputs STDERR and an
exit code of 2
Check command failure. The command in question outputs STDERR and
an exit code of 2
"""
soc = self.open_local_port(port=8929)
self.check_args(
"localhost:8929 -- ls not_real_file",
"",
".*No such file or directory\n",
".*No such file or directory\n",
2
)
soc.close()


def test_command_after_connection_failure(self):
"""
Expand All @@ -175,10 +171,9 @@ def test_command_after_connection_failure(self):
self.check_args(
"localhost:8929 --timeout=1 -- echo \"CMD OUTPUT\"",
"CMD OUTPUT",
".*wait-for-it.sh: timeout occurred after waiting 1 seconds for localhost:8929",
".*timeout occurred after waiting 1 seconds for localhost:8929",
0
)



if __name__ == '__main__':
unittest.main()

0 comments on commit 8ed81e3

Please sign in to comment.