def test_Libs(self): """ test Syntax.Libs """ #one lib in arg tag = Syntax.Libs("$OUT_ROOT/baidu/broc/lib/libbroc.a") self.assertTrue("broc_out/baidu/broc/lib/libbroc.a" in tag.V()) #more than one libs in args flag = True tag = Syntax.Libs("$OUT_ROOT/baidu/broc/lib/libbroc.a", \ "$OUT_ROOT/protobuf/lib/libprotobuf.a", \ "$OUT_ROOT/ccode/lib/libccode.a" \ "$OUT_ROOT/dict/lib/libdict.a") lib_list = ["broc_out/baidu/broc/lib/libbroc.a", \ "broc_out/protobuf/lib/libprotobuf.a", \ "broc_out/ccode/lib/libccode.a" \ "broc_out/dict/lib/libdict.a"] for lib in lib_list: if lib not in tag.V(): flag = False self.assertTrue(flag) #arg not start with $OUT_ROOT flag = False try: tag = Syntax.Libs("baidu/broc/lib/libbroc.a") except Syntax.BrocArgumentIllegalError as ex: flag = True self.assertTrue(flag)
def test_PROTO_LIBRARY(self): """ test Syntax.PROTO_LIBRARY """ #make a new proto file Function.RunCommand("touch %s/hello.proto" % self._module.root_path, \ ignore_stderr_when_ok = True) #set local flags cpptags = Syntax.CppFlags("-DDEBUG_LOCAL", "-DRELEASE_LOCAL") cxxtags = Syntax.CxxFlags("-Wwrite-strings", "-Wswitch") incflag = Syntax.Include("") libflag = Syntax.Libs("$OUT_ROOT/baidu/broc/output/lib/libhello.a") now_dir = os.getcwd() os.chdir(self._module.workspace) protos = Syntax.PROTO_LIBRARY("hello", "*.proto", cpptags, cxxtags, incflag, libflag) proto_library = self._env.Targets()[0] src = proto_library.tag_sources.V()[0] proto_library.Action() os.chdir(now_dir) #check result proto_cmd = """mkdir -p broc_out/baidu/broc && protoc \ --cpp_out=broc_out/baidu/broc -I=baidu/broc \ -I=. baidu/broc/*.proto\n""" self.assertEqual(' '.join(protos.__str__().split()), ' '.join(proto_cmd.split())) self.assertEqual(src.cppflags, ["-DDEBUG_LOCAL"]) self.assertEqual(src.cxxflags, ["-Wwrite-strings"]) self.assertEqual(src.includes, [".", "broc_out", 'baidu/broc', u'broc_out/baidu/broc']) self.assertEqual(src.infile, "broc_out/baidu/broc/hello.pb.cc") self.assertEqual(proto_library.tag_libs.V(), \ ["broc_out/baidu/broc/output/lib/libhello.a"])
def test_APPLICATION(self): """ test Syntax.APPLICATION """ #set local flags tag ldflag = Syntax.LDFlags("-lpthread", "-lcrypto") libs = Syntax.Libs("$OUT_ROOT/baidu/broc/libhello.a") cpptags = Syntax.CppFlags("-DBROC", "-DRELEASE") #set global flags Syntax.LDFLAGS("-lmcpack", "-lrt") src = Syntax.Sources("hello.cpp") #an error name of application flag = False try: Syntax.APPLICATION("^*^&*!*$^", src) except Syntax.BrocArgumentIllegalError as ex: flag = True self.assertTrue(flag) #an error args of application flag = False try: Syntax.APPLICATION("hello", src, cpptags) except Syntax.BrocArgumentIllegalError as ex: flag = True self.assertTrue(flag) #global ldflags Syntax.APPLICATION("hello", src) app = self._env.Targets()[0] app.Action() self.assertEqual(app.link_options, ["-lmcpack"]) self.assertEqual(app.tag_libs.V(), []) #two samename target flag = False try: Syntax.APPLICATION("hello", src) except Syntax.BrocArgumentIllegalError as ex: flag = True self.assertTrue(flag) #local ldflags Syntax.APPLICATION("hello2", src, ldflag) app = self._env.Targets()[1] app.Action() self.assertEqual(app.link_options, ["-lpthread"]) self.assertEqual(app.tag_libs.V(), []) #Libs Syntax.APPLICATION("hello3", src, ldflag, libs) app = self._env.Targets()[2] app.Action() self.assertEqual(app.link_options, ["-lpthread"]) self.assertEqual(app.tag_libs.V(), ["broc_out/baidu/broc/libhello.a"])
def test_STATIC_LIBRARY(self): """ test Syntax.STATIC_LIBRARY """ #set local flags tag libs = Syntax.Libs("$OUT_ROOT/baidu/broc/libhello.a") cpptags = Syntax.CppFlags("-DBROC", "-DRELEASE") src = Syntax.Sources("hello.cpp") #an error name of application flag = False try: Syntax.STATIC_LIBRARY("^*^&*!*$^", src) except Syntax.BrocArgumentIllegalError as ex: flag = True self.assertTrue(flag) #an error args of application flag = False try: Syntax.STATIC_LIBRARY("hello", src, cpptags) except Syntax.BrocArgumentIllegalError as ex: flag = True self.assertTrue(flag) #Libs Syntax.STATIC_LIBRARY("hello", src, libs) library = self._env.Targets()[0] library.Action() self.assertEqual(library.tag_libs.V(), ["broc_out/baidu/broc/libhello.a"]) #two samename target flag = False try: Syntax.STATIC_LIBRARY("hello", src) except Syntax.BrocArgumentIllegalError as ex: flag = True self.assertTrue(flag) #library DoCopy Function.RunCommand("mkdir -p %s/lib" % self._module.root_path, \ ignore_stderr_when_ok = True) Function.RunCommand("touch %s/lib/libhello1.a" % self._module.root_path, \ ignore_stderr_when_ok = True) now_dir = os.getcwd() os.chdir(self._module.workspace) Syntax.STATIC_LIBRARY("hello1") lib_paths = os.path.join(self._module.workspace, "broc_out", \ self._module.module_cvspath, "output/lib/libhello1.a") self.assertTrue(os.path.exists(lib_paths)) os.chdir(now_dir)