def METHOD_NAME(self):
    for path in self.configs:
        # Parse YAML config file.
        with open(path) as f:
            config = yaml.safe_load(f)
        default = config.get("default")
        wrapper = default.get("test").get("wrapper")
        base_flags = default.get("build").get("flags")
        test_dir = ex_dir / "ex_static_lib"
        for exec_type in ExecType:
            flags = get_flags(base_flags, exec_type)
            if (path.stem, exec_type) in (
                ("linux-elf-x86", ExecType.PIE),
                ("qemu-elf-arm", ExecType.NO_PIE),
            ):
                # TODO: fix and re-enable this.
                # See issue #330, #331
                continue
            with cd(test_dir), self.subTest(
                platform=path.stem, flags=flags
            ):
                self.assertTrue(
                    compile(
                        default.get("build").get("c")[0],
                        default.get("build").get("cpp")[0],
                        default.get("build").get("optimizations")[0],
                        flags,
                        exec_wrapper=wrapper,
                    )
                )
                binary = "libmsg.a"
                modules = [
                    "msg_one",
                    "msg_two",
                    "msg_three",
                    "msg_four_with_a_long_name",
                ]
                gtirb_file = "libmsg.gtirb"
                self.assertTrue(
                    disassemble(binary, gtirb_file, format="--ir")[0]
                )
                self.assertEqual(
                    len(modules),
                    len(gtirb.IR.load_protobuf(gtirb_file).modules),
                )
                asm_dir = Path("libmsg-tmp")
                self.assertTrue(
                    disassemble(binary, str(asm_dir), format="--asm")[0]
                )
                self.assertTrue(asm_dir.exists())
                self.assertTrue(asm_dir.is_dir())
                self.assertEqual(
                    {name + ".s" for name in modules},
                    set(os.listdir(asm_dir)),
                )
                # reassemble object files
                print(
                    "# Reassembling",
                    ", ".join([obj + ".s" for obj in modules]),
                    "into",
                    binary,
                )
                re_compiler = default.get("reassemble").get("compiler")
                # Filter out -nostartfiles since we are building object
                # files. It isn't needed while linking, either, because we
                # use the original ex.o.
                re_flags = [
                    f
                    for f in default.get("reassemble").get("flags")
                    if f != "-nostartfiles"
                ]
                for obj in modules:
                    subprocess.run(
                        [
                            re_compiler,
                            "-c",
                            str(asm_dir / (obj + ".s")),
                            "-o",
                            obj + ".o",
                        ]
                        + re_flags,
                        check=True,
                    )
                # re-build static archive
                objects = [obj + ".o" for obj in modules]
                subprocess.run(
                    ["ar", "-rcs", binary] + objects, check=True
                )
                # re-link
                self.assertTrue(
                    link(re_compiler, "ex", ["ex.o", binary], re_flags)
                )
                self.assertTrue(test(wrapper))