import traceback
from wizard import tests
from wizard.util import *
lockfile = tests.getTestFile("util_test.lock")
class MyError(Exception):
def __str__(self):
return """
ERROR: Foo
"""
class MyErrorWithHTML(Exception):
def __str__(self):
return """
ERROR: Bar
No good!
"""
def test_dictmap():
assert dictmap(lambda x: x + 1, {'a': 0, 'b': 1}) == {'a': 1, 'b': 2}
def test_get_dir_uid():
if os.getuid(): return # only run if on a scripts server. This is crude
assert get_dir_uid("/mit/ezyang/web_scripts/test-wiki") == 537864399
def test_get_dir_uid_locker():
if os.getuid(): return
assert get_dir_uid("/mit/apo/web_scripts/") == 536956980
def test_get_exception_name():
try:
raise NotImplementedError
except NotImplementedError:
assert get_exception_name(traceback.format_exc()) == "NotImplementedError"
def test_get_exception_name_withstr():
try:
raise MyError
except MyError:
assert get_exception_name(traceback.format_exc()) == "MyError"
def test_get_exception_name_withhtml():
try:
raise MyErrorWithHTML
except MyErrorWithHTML:
assert get_exception_name(traceback.format_exc()) == "MyErrorWithHTML"
def test_get_exception_name_withstr2():
try:
raise Exception("This is extra info we don't care about");
except Exception:
assert get_exception_name(traceback.format_exc()) == "Exception"
def test_lock():
soft_unlink(lockfile)
with LockDirectory(lockfile):
pass
def test_locked():
soft_unlink(lockfile)
with LockDirectory(lockfile):
try:
with LockDirectory(lockfile):
assert False
except DirectoryLockedError:
pass
def test_break_orphan_lock():
soft_unlink(lockfile)
open(lockfile, "w").write("obviouslyboguspid")
with LockDirectory(lockfile):
pass
def test_break_stale_lock():
soft_unlink(lockfile)
with LockDirectory(lockfile):
with LockDirectory(lockfile, expiry = 0):
pass