def test_Include(self): """ test Syntax.Include """ Environment.SetCurrent(self._env) # arg starts with $WORKSPACE tag = Syntax.Include("$WORKSPACE/baidu/broc") self.assertTrue("baidu/broc" in tag.V()) self.assertTrue("baidu/agile" not in tag.V()) # arg starts with broc_out tag = Syntax.Include("broc_out/baidu/broc") self.assertTrue("broc_out/baidu/broc" in tag.V()) self.assertTrue("broc_out/baidu/agile" not in tag.V()) # arg is abs path tag = Syntax.Include("/opt/include") self.assertTrue("/opt/include" in tag.V()) self.assertTrue("/home/include" not in tag.V()) # arg in self module tag = Syntax.Include("./include") #incpath = os.path.normpath(os.path.join(self._module.workspace, \ # self._module.module_cvspath, "include")) incpath=os.path.join(self._module.module_cvspath, 'include') self.assertTrue(incpath in tag.V())
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_ParseNameAndArgs(self): """ test Syntax._ParseNameAndArgs """ #only has name files, args = Syntax._ParseNameAndArgs("broc") self.assertEqual(files, ["broc"]) self.assertEqual(args, []) #more args inctag = Syntax.Include("./ ./include") cpptag = Syntax.CppFlags("-DDEBUG", "-DBROC") ctag = Syntax.CFlags("-O2", "-O0") cxxtag = Syntax.CxxFlags("-Werror", "-Wall") files, args = Syntax._ParseNameAndArgs("./*.cpp", inctag) self.assertEqual(files, ["./*.cpp"]) self.assertEqual(args, [inctag]) files, args = Syntax._ParseNameAndArgs("./*.cpp", inctag, cpptag) self.assertEqual(files, ["./*.cpp"]) self.assertEqual(args, [inctag, cpptag]) files, args = Syntax._ParseNameAndArgs("./*.cpp", cpptag, ctag) self.assertEqual(files, ["./*.cpp"]) self.assertEqual(args, [cpptag, ctag]) files, args = Syntax._ParseNameAndArgs("./*.cpp", "./*.c", cxxtag, ctag) self.assertEqual(files, ["./*.cpp", "./*.c"]) self.assertEqual(args, [cxxtag, ctag]) files, args = Syntax._ParseNameAndArgs("./*.cpp", "./*.c", inctag, cpptag, cxxtag, ctag) self.assertEqual(files, ["./*.cpp", "./*.c"]) self.assertEqual(args, [inctag, cpptag, cxxtag, ctag])
def test_Sources(self): """ test Syntax.Sources """ #get local flags tag cpptags = Syntax.CppFlags("-DDEBUG_LOCAL", "-DRELEASE_LOCAL") cxxtags = Syntax.CxxFlags("-Wwrite-strings", "-Wswitch") ctags = Syntax.CFlags("-Wwrite-strings", "-Wswitch") incflags = Syntax.Include("$WORKSPACE/baidu/bcloud") tag = Syntax.Sources("hello.cpp", cpptags, cxxtags, ctags, incflags) src = tag.V()[0] Source.Source.Action(src) self.assertEqual(src.cppflags, ["-DDEBUG_LOCAL"]) self.assertEqual(src.cxxflags, ["-Wwrite-strings"]) self.assertEqual(src.cflags, ["-Wwrite-strings"]) self.assertEqual(src.includes, [".", "broc_out", "baidu/bcloud"]) self.assertEqual(src.infile, "baidu/broc/hello.cpp")
def test_CreateSources(self): """ test Syntax._CreateSource """ #init env global flags self._env._g_cppflags = SyntaxTag.TagCPPFLAGS() self._env._g_cflags = SyntaxTag.TagCFLAGS() self._env._g_cxxflags = SyntaxTag.TagCXXFLAGS() self._env._g_incflags = SyntaxTag.TagINCLUDE() self._env._g_incflags.AddV('. broc_out') self._env._build_mode = 'debug' #set local flags tag cpptags = Syntax.CppFlags("-DDEBUG_LOCAL", "-DRELEASE_LOCAL") cxxtags = Syntax.CxxFlags("-Wwrite-strings", "-Wswitch") ctags = Syntax.CFlags("-Wwrite-strings", "-Wswitch") incflag = Syntax.Include("$WORKSPACE/baidu/bcloud") #no flags src = Syntax._CreateSources("baidu/broc/hello.cpp", []) Source.Source.Action(src) self.assertEqual(src.cppflags, []) self.assertEqual(src.cxxflags, []) self.assertEqual(src.cflags, []) self.assertEqual(src.includes, [".", "broc_out"]) self.assertEqual(src.infile, "baidu/broc/hello.cpp") #only local flags src = Syntax._CreateSources("baidu/broc/hello.cpp", \ [cpptags, cxxtags, ctags, incflag]) Source.Source.Action(src) self.assertEqual(src.cppflags, ["-DDEBUG_LOCAL"]) self.assertEqual(src.cxxflags, ["-Wwrite-strings"]) self.assertEqual(src.cflags, ["-Wwrite-strings"]) self.assertEqual(src.includes, [".", "broc_out", "baidu/bcloud"]) #only global flags Syntax.CFLAGS("-Werror -O2", "-W") Syntax.CXXFLAGS("-Werror -O2", "-W") Syntax.CPPFLAGS("-DDEBUG", "-DRELEASE") Syntax.INCLUDE("$WORKSPACE/baidu/broc") src = Syntax._CreateSources("baidu/broc/hello.cpp", []) Source.Source.Action(src) self.assertEqual(src.cppflags, ["-DDEBUG"]) self.assertEqual(src.cxxflags, ["-Werror -O2"]) self.assertEqual(src.cflags, ["-Werror -O2"]) self.assertEqual(src.includes, [".", "broc_out", "baidu/broc"]) self.assertEqual(src.infile, "baidu/broc/hello.cpp") #more value of global flags Syntax.CFLAGS("-Wall", "-Wall") Syntax.CXXFLAGS("-Wall", "-Wall") Syntax.CPPFLAGS("-DBROC", "-DBROC") src = Syntax._CreateSources("baidu/broc/hello.cpp", []) Source.Source.Action(src) self.assertEqual(src.cppflags, ["-DDEBUG", "-DBROC"]) self.assertEqual(src.cxxflags, ["-Werror -O2", "-Wall"]) self.assertEqual(src.cflags, ["-Werror -O2", "-Wall"]) self.assertEqual(src.includes, [".", "broc_out", "baidu/broc"]) self.assertEqual(src.infile, "baidu/broc/hello.cpp") #local flags cover golbal flags src = Syntax._CreateSources("baidu/broc/hello.cpp", [cpptags, cxxtags]) Source.Source.Action(src) self.assertEqual(src.cppflags, ["-DDEBUG_LOCAL"]) self.assertEqual(src.cxxflags, ["-Wwrite-strings"]) self.assertEqual(src.cflags, ["-Werror -O2", "-Wall"]) self.assertEqual(src.includes, [".", "broc_out", "baidu/broc"]) self.assertEqual(src.infile, "baidu/broc/hello.cpp")