X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=mudpy%2Ftests%2Fselftest.py;h=bb19d331ff347f72031a432934c01e0be89c6f8c;hp=0bd2dd9a1928fa69e1fc4d5727460bf97e291cb7;hb=a75fa6326ef030ad1dbbe25171c75180f93e657c;hpb=0ac91f791c2f9ff18ecd6a0390a78f5175cc3aa2 diff --git a/mudpy/tests/selftest.py b/mudpy/tests/selftest.py index 0bd2dd9..bb19d33 100644 --- a/mudpy/tests/selftest.py +++ b/mudpy/tests/selftest.py @@ -340,17 +340,32 @@ test_show_element = ( r' \x1b\[32mgender: \x1b\[31mfemale.*> ', ""), ) -test_show_result = ( - (2, "> ", "show result 12345*67890"), - (2, r"\r\n838102050\r\n.*> ", "show result 1/0"), - (2, r"Your expression raised an exception.*division by zero.*> ", - "show result mudpy"), - (2, r" ", "show result re"), - (2, r"Your expression raised an exception.*name 're' is not defined.*> ", - "show result universe"), - (2, r" ", "show result actor"), - (2, r"Your expression raised an exception.*name 'actor' is not " - r"defined.*> ", ""), +test_evaluate = ( + (2, "> ", "evaluate 12345*67890"), + (2, r"\r\n838102050\r\n.*> ", "evaluate 1/0"), + (2, "Your expression raised an exception.*division by zero.*> ", + "evaluate mudpy"), + (2, " ", "evaluate re"), + (2, "Your expression raised an exception.*name 're' is not defined.*> ", + "evaluate universe"), + (2, r" ", "evaluate actor"), + (2, "Your expression raised an exception.*name 'actor' is not defined.*> ", + "evaluate dir(mudpy)"), + (2, "__builtins__.*> ", "evaluate mudpy.__builtins__.open"), + (2, "not allowed.*> ", "evaluate (lambda x: x + 1)(2)"), + (2, "not allowed.*> ", ""), +) + +test_debug_restricted = ( + (0, "> ", "help evaluate"), + (0, r"That is not an available command\.", "evaluate"), + (0, '(not sure what "evaluate" means|Arglebargle, glop-glyf)', ""), +) + +test_debug_disabled = ( + (2, "> ", "help evaluate"), + (2, r"That is not an available command\.", "evaluate"), + (2, '(not sure what "evaluate" means|Arglebargle, glop-glyf)', ""), ) test_show_log = ( @@ -426,7 +441,9 @@ dialogue = odict(( (test_show_groups, "show groups"), (test_show_group, "show group"), (test_show_element, "show element"), - (test_show_result, "show result of a python expression"), + (test_evaluate, "show results of python expressions"), + (test_debug_restricted, "only admins can run debug commands"), + (test_debug_disabled, "debugging commands only in debug mode"), (test_show_log, "show log"), (test_custom_loglevel, "custom loglevel"), (test_invalid_loglevel, "invalid loglevel"), @@ -435,9 +452,11 @@ dialogue = odict(( )) debug_tests = ( + test_evaluate, ) nondebug_tests = ( + test_debug_disabled, ) @@ -458,9 +477,7 @@ def start_service(config): # Clean up any previous test output for f in pathlib.Path(".").glob("capture_*.log"): - # have to use .name here since remove() doesn't support passing a - # PosixPath argument until Python3.6 - os.remove(f.name) + os.remove(f) for d in ("data", "var"): shutil.rmtree(d, ignore_errors=True) @@ -469,7 +486,7 @@ def start_service(config): stdout=subprocess.PIPE, stderr=subprocess.PIPE) time.sleep(1) - return(service) + return service def stop_service(service): @@ -477,7 +494,7 @@ def stop_service(service): # The no-op case when no service was started if service is None: - return(success) + return success # This handles when the service is running as a direct child process service.terminate() @@ -511,7 +528,7 @@ def stop_service(service): with open("capture_stderr.log", "w") as serviceerr: serviceerr.write(stderr.decode("utf-8")) - return(success) + return success def tlog(message, quiet=False):