aboutsummaryrefslogtreecommitdiff
path: root/src/test/result.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/result.py')
-rw-r--r--src/test/result.py23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/test/result.py b/src/test/result.py
index 4f46e52..c64f20a 100644
--- a/src/test/result.py
+++ b/src/test/result.py
@@ -6,7 +6,7 @@
# By: charles <me@cacharle.xyz> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2020/09/11 12:17:34 by charles #+# #+# #
-# Updated: 2020/09/11 20:06:31 by charles ### ########.fr #
+# Updated: 2020/09/11 22:20:03 by charles ### ########.fr #
# #
# ############################################################################ #
@@ -24,6 +24,12 @@ class Result:
CLOSE_CHARS = "\033[0m"
def __init__(self, cmd: str, file_names: [str], expected: Captured, actual: Captured):
+ """Result class
+ cmd: runned command
+ file_names: names of watched files
+ expected: expected capture
+ actual: actual capture
+ """
self.cmd = cmd
self.file_names = file_names
self.expected = expected
@@ -31,10 +37,8 @@ class Result:
self.colored = True
self.set_colors()
- def toggle_colors(self):
- self.colored = not self.colored
-
def set_colors(self):
+ """Set colors strings on or off based on self.colored"""
if self.colored:
self.color_red = self.RED_CHARS
self.color_green = self.GREEN_CHARS
@@ -62,13 +66,16 @@ class Result:
@property
def passed(self):
+ """Check if the result passed"""
return self.actual == self.expected
@property
def failed(self):
+ """Check if the result failed"""
return not self.passed
def __repr__(self):
+ """Returns a representation of the result based on the verbosity"""
if config.VERBOSE_LEVEL == 0:
return self.green('.') if self.passed else self.red('!')
elif config.VERBOSE_LEVEL == 1:
@@ -83,6 +90,7 @@ class Result:
raise RuntimeError
def put(self):
+ """Print a summary of the result"""
if config.VERBOSE_LEVEL == 2 and self.passed:
return
print(self, end="")
@@ -92,6 +100,7 @@ class Result:
print()
def header(self, title: str) -> str:
+ """Create a one line header with a title"""
return self.bold("|---------------------------------------{:-<40}".format(title))
@property
@@ -106,6 +115,7 @@ class Result:
return self.bold(self.blue(prefix + " " + title))
def file_diff(self, file_name: str, expected: str, actual: str) -> str:
+ """Difference between 2 files"""
if expected == actual:
return ""
return (
@@ -117,6 +127,7 @@ class Result:
)
def files_diff(self):
+ """Difference between watched files"""
return '\n'.join([self.file_diff(n, e, a) for n, e, a in
zip(self.file_names,
self.expected.files_content,
@@ -124,6 +135,7 @@ class Result:
if e != a])
def output_diff(self) -> str:
+ """Difference in command output"""
out = ""
if self.actual.is_timeout:
return "TIMEOUT\n"
@@ -140,12 +152,14 @@ class Result:
return out
def full_diff(self) -> str:
+ """Concat all difference reports"""
return (self.indicator("WITH {}".format(self.escaped_cmd), "|>") + '\n'
+ self.output_diff()
+ self.files_diff()
+ "=" * 80 + '\n')
def cat_e(self, s: str) -> str:
+ """Pass a string through a cat -e like output"""
s = s.replace("\n", "$\n")
if len(s) < 2:
return s
@@ -155,6 +169,7 @@ class Result:
@property
def escaped_cmd(self):
+ """Escape common control characters"""
return (self.cmd
.replace("\t", "\\t")
.replace("\n", "\\n")