def test_key_error(): d = {"a": 1, "b": 2} try: d["c"] except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "KeyError: 'c'" in result if friendly_traceback.get_lang() == "en": assert "that cannot be found is 'c'." in result return result
def test_type_error16(): try: raise "exception" except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "TypeError: exceptions must derive from BaseException" in result if friendly_traceback.get_lang() == "en": assert "In Python 3, exceptions must be derived from BaseException." in result return result, message
def test_index_error2(): a = list(range(40)) b = tuple(range(50)) try: print(a[50], b[0]) except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "IndexError: list index out of range" in result if friendly_traceback.get_lang() == 'en': assert "In this case, the sequence is a list." in result return result
def test_type_error3a(): try: a = (1, 2) b = [3, 4] b -= a except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for -=:" in result if friendly_traceback.get_lang() == "en": assert "a `list` and a `tuple`" in result return result
def test_type_error2(): try: one = 1 none = None result = one + none except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for +:" in result if friendly_traceback.get_lang() == "en": assert "an integer (`int`) and a variable equal to None (`NoneType`)" in result return result
def test_type_error10(): try: a = "a" b = 42 b < a except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: '<' not supported between instances of 'int' and 'str'" in result if friendly_traceback.get_lang() == "en": assert "You tried to do an order comparison (<)" in result return result
def test_type_error8a(): try: a = "a" b = 42 a >>= b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for >>=:" in result if friendly_traceback.get_lang() == "en": assert "You tried to perform the bit shifting operation >>" in result return result
def test_type_error6(): try: a = "a" b = 2 result = a & b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for &:" in result if friendly_traceback.get_lang() == "en": assert "a string (`str`) and an integer (`int`)" in result return result
def test_name_error4(): try: cost # wrote from math import * above except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "NameError: name 'cost' is not defined" in result if friendly_traceback.get_lang() == "en": assert "perhaps you meant one of the following" in result return result, message
def test_name_error(): try: this = something except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "NameError: name 'something' is not defined" in result if friendly_traceback.get_lang() == "en": assert "In your program, `something` is an unknown name." in result return result, message
def test_name_error3(): try: y = x except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "NameError: name 'x' is not defined" in result if friendly_traceback.get_lang() == "en": assert "x = 3" in result return result, message
def test_import_error(): try: from math import Pi except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "ImportError: cannot import name 'Pi'" in result if friendly_traceback.get_lang() == "en": assert "Did you mean `pi`" in result return result, message
def test_index_error1(): a = (1, 2, 3) b = [1, 2, 3] try: print(a[3], b[2]) except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "IndexError: tuple index out of range" in result return result, message
def test_index_error2(): a = list(range(40)) b = tuple(range(50)) try: print(a[50], b[0]) except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "IndexError: list index out of range" in result return result, message
def test_unbound_local_error(): """Should raise UnboundLocalError""" try: outer() except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "UnboundLocalError: local variable 'a' referenced" in result if friendly_traceback.get_lang() == 'en': assert "The variable that appears to cause the problem is 'a'." in result return result
def test_type_error5(): try: a = {1: 1, 2: 2} b = 3.1416 result = a / b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for /:" in result if friendly_traceback.get_lang() == "en": assert "a dictionary (`dict`) and a number (`float`)" in result return result
def test_type_error5c(): try: a = {1: 1, 2: 2} b = 3.1416 b //= a except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for //=:" in result if friendly_traceback.get_lang() == "en": assert "an integer (`int`) and a dictionary (`dict`)" return result
def test_module_not_found_error(): try: import Tkinter except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "ModuleNotFoundError: No module named 'Tkinter'" in result if friendly_traceback.get_lang() == "en": assert "Did you mean `tkinter`" in result return result, message
def test_type_error7a(): try: a = {1: 1, 2: 2} b = 3.1416 a **= b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for ** or pow():" in result if friendly_traceback.get_lang() == "en": assert "You tried to exponentiate (raise to a power)" in result return result
def test_type_error4(): try: a = 1j b = {2, 3} result = a * b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for *:" in result if friendly_traceback.get_lang() == 'en': assert "a complex number and a set" in result return result
def test_type_error9a(): try: a = "a" b = 2 a @= b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for @=:" in result if friendly_traceback.get_lang() == "en": assert "You tried to use the operator @" in result return result
def test_type_error5a(): try: a = {1: 1, 2: 2} b = 3.1416 b /= a except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for /=:" in result if friendly_traceback.get_lang() == 'en': assert "a number ('float') and a dictionary ('dict')" in result return result
def test_type_error1b(): try: a_tuple = (1, 2, 3) a_list = [1, 2, 3] result = a_tuple + a_list except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: can only concatenate" in result if friendly_traceback.get_lang() == "en": assert "a `tuple` and a `list`" in result return result
def test_type_error5b(): try: a = {1: 1, 2: 2} b = 1 result = a // b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for //:" in result if friendly_traceback.get_lang() == 'en': assert "a dictionary ('dict') and an integer ('int')" in result return result
def test_type_error2a(): try: one = 1 two = "two" one += two except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for +=:" in result if friendly_traceback.get_lang() == "en": assert "an integer (`int`) and a string (`str`)" in result return result
def test_type_error6a(): try: a = "a" b = 2 b &= a except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for &=:" in result if friendly_traceback.get_lang() == 'en': assert "an integer ('int') and a string ('str')" in result return result
def test_zero_division_error(): try: 1 / 0 except Exception as e: message = str(e) friendly_traceback.explain_traceback(redirect="capture") result = friendly_traceback.get_output() assert not "debug_warning" in result, "Internal error found." assert "ZeroDivisionError: division by zero" in result if friendly_traceback.get_lang() == "en": assert "A `ZeroDivisionError` occurs when" in result return result, message
def test_type_error3(): try: a = (1, 2) b = [3, 4] result = a - b except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for -:" in result if friendly_traceback.get_lang() == 'en': assert "a tuple and a list" in result return result
def test_index_error1(): a = (1, 2, 3) b = [1, 2, 3] try: print(a[3], b[2]) except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "IndexError: tuple index out of range" in result if friendly_traceback.get_lang() == 'en': assert "In this case, the sequence is a tuple." in result return result
def test_type_error4a(): try: a = 1j b = {2, 3} b *= a except Exception: friendly_traceback.explain(redirect="capture") result = friendly_traceback.get_output() assert "TypeError: unsupported operand type(s) for *=:" in result if friendly_traceback.get_lang() == "en": assert "a `set` and a complex number" in result return result