# Buggy code
def __init__(
    self,
    name: str,
    project: str,
    suite: str,
    fname: T.List[str],
    is_cross_built: bool,
    exe_wrapper: T.Optional[dependencies.ExternalProgram],
    needs_exe_wrapper: bool,
    is_parallel: bool,
    cmd_args: T.List[str],
    env: build.EnvironmentVariables,
    should_fail: bool,
    timeout: T.Optional[int],
    workdir: T.Optional[str],
    extra_paths: T.List[str],
    protocol: TestProtocol,
    priority: int,
    cmd_is_built: bool,
    depends: T.List[str],
):
    self.name = name
    self.project_name = project
    self.suite = suite
    self.fname = fname
    self.is_cross_built = is_cross_built
    if exe_wrapper is not None:
        assert isinstance(exe_wrapper, dependencies.ExternalProgram)
    self.exe_runner = exe_wrapper
    self.is_parallel = is_parallel
    self.cmd_args = cmd_args
    self.env = env
    self.should_fail = should_fail
    self.timeout = timeout
    self.workdir = workdir
    self.extra_paths = extra_paths
    self.protocol = protocol
    self.priority = priority
    self.needs_exe_wrapper = needs_exe_wrapper
    self.cmd_is_built = cmd_is_built
    self.depends = depends


# Traceback (AttributeError)
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/mesonbuild/mesonmain.py", line 131, in run
return options.run_func(options)
File "/usr/lib/python3.8/site-packages/mesonbuild/mtest.py", line 1220, in run
return th.doit()
File "/usr/lib/python3.8/site-packages/mesonbuild/mtest.py", line 975, in doit
self.run_tests(tests)
File "/usr/lib/python3.8/site-packages/mesonbuild/mtest.py", line 1130, in run_tests
self.drain_futures(futures)
File "/usr/lib/python3.8/site-packages/mesonbuild/mtest.py", line 1146, in drain_futures
self.process_test_result(result.result())
File "/usr/lib/python3.8/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib/python3.8/concurrent/futures/_base.py", line 388, in __get_result
raise self._exception
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/lib/python3.8/site-packages/mesonbuild/mtest.py", line 628, in run
cmd = self._get_cmd()
File "/usr/lib/python3.8/site-packages/mesonbuild/mtest.py", line 612, in _get_cmd
elif self.test.cmd_is_built and self.test.needs_exe_wrapper:
AttributeError: 'TestSerialisation' object has no attribute 'cmd_is_built'

# Fixed code
def __init__(
    self,
    name: str,
    project: str,
    suite: str,
    fname: T.List[str],
    is_cross_built: bool,
    exe_wrapper: T.Optional[dependencies.ExternalProgram],
    needs_exe_wrapper: bool,
    is_parallel: bool,
    cmd_args: T.List[str],
    env: build.EnvironmentVariables,
    should_fail: bool,
    timeout: T.Optional[int],
    workdir: T.Optional[str],
    extra_paths: T.List[str],
    protocol: TestProtocol,
    priority: int,
    cmd_is_built: bool,
    depends: T.List[str],
    version: str,
):
    self.name = name
    self.project_name = project
    self.suite = suite
    self.fname = fname
    self.is_cross_built = is_cross_built
    if exe_wrapper is not None:
        assert isinstance(exe_wrapper, dependencies.ExternalProgram)
    self.exe_runner = exe_wrapper
    self.is_parallel = is_parallel
    self.cmd_args = cmd_args
    self.env = env
    self.should_fail = should_fail
    self.timeout = timeout
    self.workdir = workdir
    self.extra_paths = extra_paths
    self.protocol = protocol
    self.priority = priority
    self.needs_exe_wrapper = needs_exe_wrapper
    self.cmd_is_built = cmd_is_built
    self.depends = depends
    self.version = version