예제 #1
0
    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))))
예제 #2
0
 def test_error(self):
     with self.assertRaisesRegex(RuntimeError, r"ninja: error: loading"):
         _get_all_ninja_outputs(self.tmpdir)