feat(tests): allow specifying verbose option for tests to see results
parent
38ce4f6112
commit
7785505a19
|
@ -12,13 +12,13 @@ def get_cli_args():
|
|||
parser.add_argument("-u", "--user", "--username", dest="username", required=True)
|
||||
parser.add_argument("-p", "--pass", "--password", dest="password", required=True)
|
||||
parser.add_argument("-k", "--kerberos", action="store_true", required=False)
|
||||
parser.add_argument("-v", "--verbose", action="store_true", required=False)
|
||||
|
||||
args = parser.parse_args()
|
||||
return args
|
||||
parsed_args = parser.parse_args()
|
||||
return parsed_args
|
||||
|
||||
|
||||
def generate_commands():
|
||||
args = get_cli_args()
|
||||
def generate_commands(args):
|
||||
lines = []
|
||||
|
||||
if args.kerberos:
|
||||
|
@ -42,30 +42,48 @@ def generate_commands():
|
|||
return lines
|
||||
|
||||
|
||||
def run_e2e_tests():
|
||||
def run_e2e_tests(args):
|
||||
console = Console()
|
||||
tasks = generate_commands()
|
||||
tasks = generate_commands(args)
|
||||
|
||||
result = subprocess.Popen("crackmapexec --version", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
result = subprocess.Popen(
|
||||
"crackmapexec --version",
|
||||
shell=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
)
|
||||
version = result.communicate()[0].decode().strip()
|
||||
|
||||
with console.status(f"[bold green] :brain: Running {len(tasks)} test commands for cme v{version}...") as status:
|
||||
passed = 0
|
||||
failed = 0
|
||||
|
||||
while tasks:
|
||||
task = tasks.pop(0)
|
||||
result = subprocess.Popen(str(task), shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
result = subprocess.Popen(
|
||||
str(task),
|
||||
shell=True,
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
)
|
||||
# pass in a "y" for things that prompt for it (--ndts, etc)
|
||||
text = result.communicate(input=b"y")[0]
|
||||
return_code = result.returncode
|
||||
|
||||
if return_code == 0:
|
||||
console.log(f"{task.strip()} :heavy_check_mark:")
|
||||
passed += 1
|
||||
else:
|
||||
console.log(f"[bold red]{task.strip()} :cross_mark:[/]")
|
||||
failed += 1
|
||||
|
||||
if args.verbose:
|
||||
# this prints sorta janky, but it does its job
|
||||
console.log(f"[*] Results:\n{text.decode('utf-8')}")
|
||||
console.log(f"Tests [bold green] Passed: {passed} [bold red] Failed: {failed}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_e2e_tests()
|
||||
parsed_args = get_cli_args()
|
||||
run_e2e_tests(parsed_args)
|
||||
|
|
Loading…
Reference in New Issue