def test_prj_implicit_value_args(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir]) prj = Project(cfg) tool = prj.tools.add_tool(TestTool) tool.noop(v1="a", v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 1) # ----------------------------------------------------------- self.built_nodes = 0 tool.noop(v1="aa", v2="bb", v3="cc") prj.build() self.assertEqual(self.built_nodes, 0) # ----------------------------------------------------------- self.built_nodes = 0 v1 = SimpleEntity("a", name="value1") tool.noop(v1=v1, v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 1) # ----------------------------------------------------------- self.built_nodes = 0 v1 = SimpleEntity("ab", name="value1") tool.noop(v1=v1, v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 1) # ----------------------------------------------------------- self.built_nodes = 0 v1 = SimpleEntity("ab", name="value1") tool.noop(v1=v1, v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 0)
def test_prj_implicit_value_args(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir]) prj = Project(cfg) tool = prj.tools.add_tool(_NullTool) tool.noop(v1="a", v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 1) # ----------------------------------------------------------- self.built_nodes = 0 tool.noop(v1="aa", v2="bb", v3="cc") prj.build() self.assertEqual(self.built_nodes, 0) # ----------------------------------------------------------- self.built_nodes = 0 v1 = SimpleEntity("a", name="value1") tool.noop(v1=v1, v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 1) # ----------------------------------------------------------- self.built_nodes = 0 v1 = SimpleEntity("ab", name="value1") tool.noop(v1=v1, v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 1) # ----------------------------------------------------------- self.built_nodes = 0 v1 = SimpleEntity("ab", name="value1") tool.noop(v1=v1, v2="b", v3="c") prj.build() self.assertEqual(self.built_nodes, 0)
def test_prj_expensive(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir]) prj = Project(cfg) cmd_heavy = prj.tools.ExecuteCommand( sys.executable, "-c", "print('test expensive')") prj.tools.ExecuteCommand(sys.executable, "-c", "print('test light')") prj.expensive(cmd_heavy) prj.build() self.assertEqual(self.built_nodes, 2)
def test_prj_default_targets(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir]) prj = Project(cfg) prj.tools.ExecuteCommand( "python", "-c", "print('test builtin')") cmd_other = prj.tools.ExecuteCommand( "python", "-c", "print('test other')") cmd_other2 = prj.tools.ExecuteCommand( "python", "-c", "print('test other2')") prj.default_build([cmd_other, cmd_other2]) prj.build() self.assertEqual(self.built_nodes, 2)
def test_prj_targets(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir, "test", "run"]) prj = Project(cfg) cmd = prj.tools.ExecuteCommand( "python", "-c", "print('test builtin')") prj.tools.ExecuteCommand("python", "-c", "print('test other')") self.assertSequenceEqual(prj.get_build_targets(), ['test', 'run']) prj.alias_nodes(prj.get_build_targets(), cmd) prj.build() self.assertEqual(self.built_nodes, 1)
def test_prj_default_targets(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir]) prj = Project(cfg) prj.tools.ExecuteCommand( sys.executable, "-c", "print('test builtin')") cmd_other = prj.tools.ExecuteCommand( sys.executable, "-c", "print('test other')") cmd_other2 = prj.tools.ExecuteCommand( sys.executable, "-c", "print('test other2')") prj.default_build([cmd_other, cmd_other2]) prj.build() self.assertEqual(self.built_nodes, 2)
def test_prj_targets(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir, "test", "run"]) prj = Project(cfg) cmd = prj.tools.ExecuteCommand( sys.executable, "-c", "print('test builtin')") prj.tools.ExecuteCommand(sys.executable, "-c", "print('test other')") self.assertSequenceEqual(prj.get_build_targets(), ['test', 'run']) prj.alias_nodes(prj.get_build_targets(), cmd) prj.build() self.assertEqual(self.built_nodes, 1)
def test_prj_builtin_tools(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir]) prj = Project(cfg) prj.tools.ExecuteCommand("python", "-c", "print('test builtin')") prj.build() self.assertEqual(self.building_started, 1) self.assertEqual(self.built_nodes, 1) self.building_started = 0 prj = Project(cfg) prj.tools.ExecuteCommand("python", "-c", "print('test builtin')") prj.build() self.assertEqual(self.building_started, 0)
def test_gcc_compiler_target_errors(self): with Tempdir() as tmp_dir: build_dir = os.path.join(tmp_dir, 'build') src_dir = os.path.join(tmp_dir, 'src') os.makedirs(src_dir) num_src_files = 2 src_files, hdr_files = self.generate_cpp_files( src_dir, 'foo', num_src_files) cfg = ProjectConfig(args=["build_dir=%s" % build_dir]) prj = Project(cfg) tools_path = os.path.join(os.path.dirname(__file__), '../../tools') gcc = prj.tools.try_tool('g++', tools_path=tools_path) if gcc is None: print("WARNING: GCC tool has not been found. Skip the test.") return gcc.Compile(src_files, target='src_file0', batch_build=False) try: prj.build() raise AssertionError("No Exception") except Exception as ex: self.assertEqual(ex.__class__.__name__, 'ErrorCompileWithCustomTarget') gcc.Compile(src_files, target='src_file0', batch_build=True) try: prj.build() raise AssertionError("No Exception") except Exception as ex: self.assertEqual(ex.__class__.__name__, 'ErrorBatchCompileWithCustomTarget')
def test_prj_builtin_tools(self): with Tempdir() as tmp_dir: cfg = ProjectConfig(args=["build_dir=%s" % tmp_dir]) prj = Project(cfg) cmd = sys.executable, "-c", "print('test builtin')" prj.tools.ExecuteCommand(cmd) prj.build() self.assertEqual(self.building_started, 1) self.assertEqual(self.built_nodes, 1) self.building_started = 0 prj = Project(cfg) prj.tools.ExecuteCommand(cmd) prj.build() self.assertEqual(self.building_started, 0)