File size: 15,725 Bytes
85f14d3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | t3_bugs = [
# 6 bugs: wrong argument order
{
"id": "t3_003", "difficulty": 3, "bug_type": "wrong_argument_order", "function_name": "process_user",
"buggy_code": "def format_name(first, last):\n return f'{last}, {first}'\n\ndef process_user(first_name, last_name):\n return format_name(last_name, first_name)",
"original_code": "def format_name(first, last):\n return f'{last}, {first}'\n\ndef process_user(first_name, last_name):\n return format_name(first_name, last_name)",
"initial_error": "AssertionError: expected 'Doe, John', got 'John, Doe'", "bug_location": {"function": "process_user", "line_start": 5},
"test_cases": [{"input": ["John", "Doe"], "expected_output": "Doe, John"}, {"input": ["Alice", "Smith"], "expected_output": "Smith, Alice"}, {"input": ["A", "B"], "expected_output": "B, A"}, {"input": ["X", "Y"], "expected_output": "Y, X"}]
},
{
"id": "t3_004", "difficulty": 3, "bug_type": "wrong_argument_order", "function_name": "calculate_total",
"buggy_code": "def apply_discount(price, discount):\n return price - (price * discount)\n\ndef calculate_total(price, discount_rate):\n return apply_discount(discount_rate, price)",
"original_code": "def apply_discount(price, discount):\n return price - (price * discount)\n\ndef calculate_total(price, discount_rate):\n return apply_discount(price, discount_rate)",
"initial_error": "AssertionError: expected 80.0, got -19.8", "bug_location": {"function": "calculate_total", "line_start": 5},
"test_cases": [{"input": [100, 0.2], "expected_output": 80.0}, {"input": [50, 0.1], "expected_output": 45.0}, {"input": [200, 0.5], "expected_output": 100.0}, {"input": [10, 0.0], "expected_output": 10.0}]
},
{
"id": "t3_005", "difficulty": 3, "bug_type": "wrong_argument_order", "function_name": "build_url",
"buggy_code": "def join_parts(domain, path):\n return f'https://{domain}/{path}'\n\ndef build_url(domain, path):\n return join_parts(path, domain)",
"original_code": "def join_parts(domain, path):\n return f'https://{domain}/{path}'\n\ndef build_url(domain, path):\n return join_parts(domain, path)",
"initial_error": "AssertionError: expected 'https://example.com/api', got 'https://api/example.com'", "bug_location": {"function": "build_url", "line_start": 5},
"test_cases": [{"input": ["example.com", "api"], "expected_output": "https://example.com/api"}, {"input": ["google.com", "search"], "expected_output": "https://google.com/search"}, {"input": ["a.com", "b"], "expected_output": "https://a.com/b"}, {"input": ["x.org", "y"], "expected_output": "https://x.org/y"}]
},
{
"id": "t3_006", "difficulty": 3, "bug_type": "wrong_argument_order", "function_name": "divide_numbers",
"buggy_code": "def safe_divide(num, den):\n if den == 0:\n return 0\n return num / den\n\ndef divide_numbers(a, b):\n return safe_divide(b, a)",
"original_code": "def safe_divide(num, den):\n if den == 0:\n return 0\n return num / den\n\ndef divide_numbers(a, b):\n return safe_divide(a, b)",
"initial_error": "AssertionError: expected 2.0, got 0.5", "bug_location": {"function": "divide_numbers", "line_start": 7},
"test_cases": [{"input": [10, 5], "expected_output": 2.0}, {"input": [5, 0], "expected_output": 0}, {"input": [100, 10], "expected_output": 10.0}, {"input": [0, 5], "expected_output": 0.0}]
},
{
"id": "t3_007", "difficulty": 3, "bug_type": "wrong_argument_order", "function_name": "create_rectangle",
"buggy_code": "def calc_area(w, h):\n return w * h\n\ndef create_rectangle(width, height):\n return {'w': width, 'h': height, 'area': calc_area(height, width)}",
"original_code": "def calc_area(w, h):\n return w * h\n\ndef create_rectangle(width, height):\n return {'w': width, 'h': height, 'area': calc_area(width, height)}",
"initial_error": "AssertionError: doesn't strictly fail math but conceptually wrong", "bug_location": {"function": "create_rectangle", "line_start": 5},
"test_cases": [{"input": [5, 10], "expected_output": {'w': 5, 'h': 10, 'area': 50}}, {"input": [2, 3], "expected_output": {'w': 2, 'h': 3, 'area': 6}}, {"input": [1, 1], "expected_output": {'w': 1, 'h': 1, 'area': 1}}, {"input": [0, 5], "expected_output": {'w': 0, 'h': 5, 'area': 0}}]
},
{
"id": "t3_008", "difficulty": 3, "bug_type": "wrong_argument_order", "function_name": "power_wrapper",
"buggy_code": "def compute_pow(base, exp):\n return base ** exp\n\ndef power_wrapper(base, exp):\n return compute_pow(exp, base)",
"original_code": "def compute_pow(base, exp):\n return base ** exp\n\ndef power_wrapper(base, exp):\n return compute_pow(base, exp)",
"initial_error": "AssertionError: expected 8, got 9", "bug_location": {"function": "power_wrapper", "line_start": 5},
"test_cases": [{"input": [2, 3], "expected_output": 8}, {"input": [3, 2], "expected_output": 9}, {"input": [5, 2], "expected_output": 25}, {"input": [2, 4], "expected_output": 16}]
},
# 6 bugs: state not reset
{
"id": "t3_009", "difficulty": 3, "bug_type": "state_not_reset", "function_name": "get_unique_items",
"buggy_code": "seen = set()\ndef filter_unique(items):\n res = []\n for item in items:\n if item not in seen:\n seen.add(item)\n res.append(item)\n return res\n\ndef get_unique_items(items):\n return filter_unique(items)",
"original_code": "def filter_unique(items, seen):\n res = []\n for item in items:\n if item not in seen:\n seen.add(item)\n res.append(item)\n return res\n\ndef get_unique_items(items):\n return filter_unique(items, set())",
"initial_error": "AssertionError: test fails on second call", "bug_location": {"function": "filter_unique", "line_start": 4},
"test_cases": [{"input": [[1, 2, 2, 3]], "expected_output": [1, 2, 3]}, {"input": [[1, 2, 2, 3]], "expected_output": [1, 2, 3]}, {"input": [[4, 4, 5]], "expected_output": [4, 5]}, {"input": [[4, 4, 5]], "expected_output": [4, 5]}]
},
{
"id": "t3_010", "difficulty": 3, "bug_type": "state_not_reset", "function_name": "accumulate_values",
"buggy_code": "total = 0\ndef add_to_total(val):\n global total\n total += val\n return total\n\ndef accumulate_values(vals):\n return [add_to_total(v) for v in vals]",
"original_code": "def accumulate_values(vals):\n total = 0\n res = []\n for v in vals:\n total += v\n res.append(total)\n return res",
"initial_error": "AssertionError: expected [1, 3], got [1, 3] then [4, 6] on next call", "bug_location": {"function": "add_to_total", "line_start": 4},
"test_cases": [{"input": [[1, 2]], "expected_output": [1, 3]}, {"input": [[1, 2]], "expected_output": [1, 3]}, {"input": [[5, 5]], "expected_output": [5, 10]}, {"input": [[5, 5]], "expected_output": [5, 10]}]
},
{
"id": "t3_011", "difficulty": 3, "bug_type": "state_not_reset", "function_name": "append_to_default",
"buggy_code": "def helper(val, lst=[]):\n lst.append(val)\n return lst\n\ndef append_to_default(val):\n return helper(val)",
"original_code": "def helper(val, lst=None):\n if lst is None:\n lst = []\n lst.append(val)\n return lst\n\ndef append_to_default(val):\n return helper(val)",
"initial_error": "AssertionError: expected [2], got [1, 2]", "bug_location": {"function": "helper", "line_start": 1},
"test_cases": [{"input": 1, "expected_output": [1]}, {"input": 2, "expected_output": [2]}, {"input": 3, "expected_output": [3]}, {"input": 4, "expected_output": [4]}]
},
{
"id": "t3_012", "difficulty": 3, "bug_type": "state_not_reset", "function_name": "count_calls",
"buggy_code": "calls = 0\ndef tracker():\n global calls\n calls += 1\n return calls\n\ndef count_calls(n):\n res = []\n for _ in range(n):\n res.append(tracker())\n return res",
"original_code": "def count_calls(n):\n calls = 0\n res = []\n for _ in range(n):\n calls += 1\n res.append(calls)\n return res",
"initial_error": "AssertionError: expected [1, 2], got [3, 4] on second run", "bug_location": {"function": "tracker", "line_start": 4},
"test_cases": [{"input": 2, "expected_output": [1, 2]}, {"input": 2, "expected_output": [1, 2]}, {"input": 3, "expected_output": [1, 2, 3]}, {"input": 3, "expected_output": [1, 2, 3]}]
},
{
"id": "t3_013", "difficulty": 3, "bug_type": "state_not_reset", "function_name": "build_sentence",
"buggy_code": "words_cache = []\ndef add_word(w):\n words_cache.append(w)\n return ' '.join(words_cache)\n\ndef build_sentence(words):\n res = ''\n for w in words:\n res = add_word(w)\n return res",
"original_code": "def build_sentence(words):\n words_cache = []\n def add_word(w):\n words_cache.append(w)\n return ' '.join(words_cache)\n res = ''\n for w in words:\n res = add_word(w)\n return res",
"initial_error": "AssertionError: expected 'hello world', got '... hello world'", "bug_location": {"function": "add_word", "line_start": 3},
"test_cases": [{"input": [["hello", "world"]], "expected_output": "hello world"}, {"input": [["foo", "bar"]], "expected_output": "foo bar"}, {"input": [["a", "b", "c"]], "expected_output": "a b c"}, {"input": [["x"]], "expected_output": "x"}]
},
{
"id": "t3_014", "difficulty": 3, "bug_type": "state_not_reset", "function_name": "collect_errors",
"buggy_code": "errors = []\ndef log_error(err):\n errors.append(err)\n return errors\n\ndef collect_errors(err_list):\n for e in err_list:\n res = log_error(e)\n return res if err_list else []",
"original_code": "def collect_errors(err_list):\n errors = []\n def log_error(err):\n errors.append(err)\n return errors\n res = []\n for e in err_list:\n res = log_error(e)\n return res",
"initial_error": "AssertionError: state leak between calls", "bug_location": {"function": "log_error", "line_start": 3},
"test_cases": [{"input": [["e1"]], "expected_output": ["e1"]}, {"input": [["e2"]], "expected_output": ["e2"]}, {"input": [["e3", "e4"]], "expected_output": ["e3", "e4"]}, {"input": [["e5"]], "expected_output": ["e5"]}]
},
# 6 bugs: missing edge case in helper
{
"id": "t3_015", "difficulty": 3, "bug_type": "missing_edge_case", "function_name": "process_data",
"buggy_code": "def get_first(lst):\n return lst[0]\n\ndef process_data(data):\n if not data:\n return None\n return [get_first(d) for d in data]",
"original_code": "def get_first(lst):\n if not lst:\n return None\n return lst[0]\n\ndef process_data(data):\n if not data:\n return []\n return [get_first(d) for d in data]",
"initial_error": "IndexError: list index out of range", "bug_location": {"function": "get_first", "line_start": 2},
"test_cases": [{"input": [[[1, 2], [3, 4]]], "expected_output": [1, 3]}, {"input": [[[1], []]], "expected_output": [1, None]}, {"input": [[[], [2]]], "expected_output": [None, 2]}, {"input": [[]], "expected_output": []}]
},
{
"id": "t3_016", "difficulty": 3, "bug_type": "missing_edge_case", "function_name": "average_scores",
"buggy_code": "def calc_avg(scores):\n return sum(scores) / len(scores)\n\ndef average_scores(students):\n return {k: calc_avg(v) for k, v in students.items()}",
"original_code": "def calc_avg(scores):\n if not scores:\n return 0\n return sum(scores) / len(scores)\n\ndef average_scores(students):\n return {k: calc_avg(v) for k, v in students.items()}",
"initial_error": "ZeroDivisionError: division by zero", "bug_location": {"function": "calc_avg", "line_start": 2},
"test_cases": [{"input": [{"Alice": [10, 20], "Bob": []}], "expected_output": {"Alice": 15.0, "Bob": 0}}, {"input": [{"A": [5]}], "expected_output": {"A": 5.0}}, {"input": [{}], "expected_output": {}}, {"input": [{"B": []}], "expected_output": {"B": 0}}]
},
{
"id": "t3_017", "difficulty": 3, "bug_type": "missing_edge_case", "function_name": "find_max_nested",
"buggy_code": "def find_max(lst):\n return max(lst)\n\ndef find_max_nested(nested_lists):\n return [find_max(l) for l in nested_lists]",
"original_code": "def find_max(lst):\n if not lst:\n return None\n return max(lst)\n\ndef find_max_nested(nested_lists):\n return [find_max(l) for l in nested_lists]",
"initial_error": "ValueError: max() arg is an empty sequence", "bug_location": {"function": "find_max", "line_start": 2},
"test_cases": [{"input": [[[1, 2], []]], "expected_output": [2, None]}, {"input": [[[1], [2, 3]]], "expected_output": [1, 3]}, {"input": [[[], []]], "expected_output": [None, None]}, {"input": [[]], "expected_output": []}]
},
{
"id": "t3_018", "difficulty": 3, "bug_type": "missing_edge_case", "function_name": "get_extensions",
"buggy_code": "def extract_ext(filename):\n return filename.split('.')[1]\n\ndef get_extensions(files):\n return [extract_ext(f) for f in files]",
"original_code": "def extract_ext(filename):\n parts = filename.split('.')\n if len(parts) < 2:\n return ''\n return parts[-1]\n\ndef get_extensions(files):\n return [extract_ext(f) for f in files]",
"initial_error": "IndexError: list index out of range", "bug_location": {"function": "extract_ext", "line_start": 2},
"test_cases": [{"input": [["a.txt", "b"]], "expected_output": ["txt", ""]}, {"input": [["a.txt", "b.pdf"]], "expected_output": ["txt", "pdf"]}, {"input": [["noext"]], "expected_output": [""]}, {"input": [[]], "expected_output": []}]
},
{
"id": "t3_019", "difficulty": 3, "bug_type": "missing_edge_case", "function_name": "get_lengths",
"buggy_code": "def get_len(item):\n return len(item)\n\ndef get_lengths(items):\n return [get_len(i) for i in items]",
"original_code": "def get_len(item):\n if item is None:\n return 0\n return len(item)\n\ndef get_lengths(items):\n return [get_len(i) for i in items]",
"initial_error": "TypeError: object of type 'NoneType' has no len()", "bug_location": {"function": "get_len", "line_start": 2},
"test_cases": [{"input": [["abc", None]], "expected_output": [3, 0]}, {"input": [["a", "b"]], "expected_output": [1, 1]}, {"input": [[None, None]], "expected_output": [0, 0]}, {"input": [[]], "expected_output": []}]
},
{
"id": "t3_020", "difficulty": 3, "bug_type": "missing_edge_case", "function_name": "parse_integers",
"buggy_code": "def to_int(s):\n return int(s)\n\ndef parse_integers(strings):\n return [to_int(s) for s in strings]",
"original_code": "def to_int(s):\n try:\n return int(s)\n except ValueError:\n return 0\n\ndef parse_integers(strings):\n return [to_int(s) for s in strings]",
"initial_error": "ValueError: invalid literal for int() with base 10", "bug_location": {"function": "to_int", "line_start": 2},
"test_cases": [{"input": [["1", "abc"]], "expected_output": [1, 0]}, {"input": [["1", "2"]], "expected_output": [1, 2]}, {"input": [["foo", "bar"]], "expected_output": [0, 0]}, {"input": [[]], "expected_output": []}]
}
]
|