def test_subgen(self): output = self.from_build_dir("out") sub_output = self.from_build_dir("sub", "out") build_ninja = config.BUILD_FILENAME sub_build_ninja = os.path.join("sub", config.BUILD_FILENAME) fs = self.create_fs_tree({ build_ninja: \ textwrap.dedent("""\ subninja sub/build.ninja rule echo command = echo foo > $out build {output}: echo rule cp command = cp $in $out build build.ninja: cp || sub/build.ninja """.format(output=output, manifest=os.path.join(self.tmpdir, "sub", self.MANIFEST_FILENAME), build_dir=self.build_dir())), sub_build_ninja: textwrap.dedent("""\ rule echo command = echo foo > $out build {sub_output}: echo rule cp command = cp $in $out build sub/build.ninja: cp """.format(sub_output=sub_output)), }) outputs = _get_all_ninja_outputs(self.tmpdir) self.assertCountEqual(outputs, list(map(lambda x: os.path.join(self.tmpdir, x), (output, sub_output, build_ninja, sub_build_ninja)))) ### Test with top_build_dir outputs = _get_all_ninja_outputs(os.path.join(self.tmpdir, "sub"), top_build_dir=self.tmpdir) self.assertCountEqual(outputs, list(map(lambda x: os.path.join(self.tmpdir, x), (sub_output, sub_build_ninja))))
def test_error(self): with self.assertRaisesRegex(RuntimeError, r"ninja: error: loading"): _get_all_ninja_outputs(self.tmpdir)