コード例 #1
0
ファイル: test_Syntax.py プロジェクト: wotsen-star/broc
 def test_CppFlags(self):
     """
     test Syntax.CppFlags
     """
     #test case of debug mode
     self._env._build_mode = 'debug'
     tag = Syntax.CppFlags("-g -Wall", "-g -O2")
     self.assertTrue("-g -Wall" in tag._v and "-g -O2" not in tag.V())
     
     #test case of release mode
     self._env._build_mode = 'release'
     tag2 = Syntax.CppFlags("-g -Wall", "-g -O2")
     self.assertTrue("-g -O2" in tag2.V() and "-g -Wall" not in tag2.V())
コード例 #2
0
ファイル: test_Syntax.py プロジェクト: wotsen-star/broc
    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"])
コード例 #3
0
ファイル: test_Syntax.py プロジェクト: wotsen-star/broc
    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])
コード例 #4
0
ファイル: test_Syntax.py プロジェクト: wotsen-star/broc
    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"])
コード例 #5
0
    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)
コード例 #6
0
ファイル: test_Syntax.py プロジェクト: wotsen-star/broc
 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")
コード例 #7
0
ファイル: test_Syntax.py プロジェクト: wotsen-star/broc
    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")