def testDefaults(self): class Defl: pass obj = Defl() obj.setField = ["v0"] obj.setBoolField = True obj.resetBoolField = False consInfo = Console2obj.argArr2obj( [ "python", "TestConsole2Obj.py", "--setField", "v1", "v2", "-b-resetBoolField", "True", "-b-notsetBoolField", "True" ], obj, ) self.assertEquals( { "setField": ["v1", "v2"], "setBoolField": True, "resetBoolField": True, "notsetBoolField": True, } , consInfo.__dict__ )
def testFillDevelopCompilation(self): from wudoo.console import Console2obj project = TestFront.build_useexphdr_prj.getProject() compilation = DefaultCPPCompilation() import tempfile tmpDir = tempfile.mkdtemp() argsObj = Console2obj.argArr2obj(("--profile develop --buildroot " + tmpDir).split(" "), DefaultArgsObj()) willExecutor = StoreCallsWillExecutor() def setupCompilationCallback(compilation, project): profilesChain(compilation, project, argsObj) wdefaultBuild(project, setupCompilationCallback, willExecutor) history = willExecutor.history history = "@@@".join(history).replace(tmpDir, "__WS__").split("@@@") src = os.path.normpath(os.path.join(project.getModuleFile(), "..", "..", "..")) history = "@@@".join(history).replace(src, "__SRC__").split("@@@") self.assertEquals( [ 'g++ -c "__SRC__\\ExportHeaders\\Src\\ExportHello.cpp" -o "__WS__\\Outer\\ExportHdr\\Src\\ExportHello.o" -I"__SRC__\\ExportHeaders\\Hdr" -I"__SRC__\\ExportHeaders\\ExportHrd" -g3 -O0', 'g++ -c "__SRC__\\ExportHeaders\\SrcMain\\main.cpp" -o "__WS__\\Outer\\ExportHdr\\SrcMain\\main.o" -I"__SRC__\\ExportHeaders\\Hdr" -I"__SRC__\\ExportHeaders\\ExportHrd" -g3 -O0', 'g++ -c "__SRC__\\UseExportHeaders\\Src\\main.cpp" -o "__WS__\\Obj\\Src\\main.o" -I"__SRC__\\ExportHeaders\\ExportHrd" -g3 -O0', 'g++ "__WS__\\Outer\\ExportHdr\\Src\\ExportHello.o" "__WS__\\Obj\\Src\\main.o" -o "__WS__\\Bin\\UseExportHdr"', ], history )
def testOneVal(self): consInfo = Console2obj.argArr2obj( [ "python", "TestConsole2Obj.py", "ignore", "it", "--field0", "v0" ] ) self.assertEquals(["v0"], consInfo.field0)
def testMultiVal(self): consInfo = Console2obj.argArr2obj( [ "python", "TestConsole2Obj.py", "ignore", "it", "--field0", "v0", "--field1", "v0", "v1", "v2", "--field2", "v0", "v1", "v2", ] ) self.assertEquals( { "field2": ["v0", "v1", "v2"], "field1": ["v0", "v1", "v2"], "field0": ["v0"], } , consInfo.__dict__ )
def testSkipStrat(self): skroot = TestStoringCompilation.cloneSkipTest() import build_easyskip as skipprj from wudoo.console import Console2obj tmpDir = tempfile.mktemp() def faikGPF(self, project): return os.path.join(tmpDir, "StoreCompilationPool_" + project.getName() + ".data") getPoolFile = StoreCompilationPool._StoreCompilationPool__getPoolFile StoreCompilationPool._StoreCompilationPool__getPoolFile = faikGPF skipinfoprj = skipprj.getProject() argsObj = Console2obj.argArr2obj(("--profile develop --buildroot " + tmpDir).split(" "), DefaultArgsObj()) def setupCompilationCallback(compilation, project): profilesChain(compilation, project, argsObj) scwe = StoreCallsWillExecutor() wdefaultBuild(skipinfoprj, setupCompilationCallback, scwe) history = "@".join(scwe.history).replace(skroot, "__TRUNK__").replace(tmpDir, "__TMP__").split("@") self.assertEqual( [ 'g++ -c "__TRUNK__\\Src\\foo-0.cpp" -o "__TMP__\\Obj\\Src\\foo-0.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ -c "__TRUNK__\\Src\\foo-1.cpp" -o "__TMP__\\Obj\\Src\\foo-1.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ -c "__TRUNK__\\Src\\main.cpp" -o "__TMP__\\Obj\\Src\\main.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ "__TMP__\\Obj\\Src\\foo-0.o" "__TMP__\\Obj\\Src\\foo-1.o" "__TMP__\\Obj\\Src\\main.o" -o "__TMP__\\Bin\\EasySkip"' ], history ) del history swe = SystemWillExecutor() for cmd in scwe.history: swe.execute(cmd) del scwe project = CPPProject("Prj", tmpDir, tmpDir) project.addSrcFolders("\n".join(os.listdir(project.getRoot()))) project.setSourceFilter(ExtensionBasedFilter({"o": "o", "exe": "exe", "a": "a", "skipcrc": "skipcrc"})); project.findSources() objItems = project.getSourceItems() objPaths = [io.getPathNameExt(1) for io in objItems] objPaths.sort() self.assertEquals( [ 'Bin\\EasySkip.exe', 'Obj\\EasySkip-info.skipcrc', 'Obj\\Src\\foo-0.o', 'Obj\\Src\\foo-1.o', 'Obj\\Src\\main.o', ], objPaths ) ## no ch import subprocess executableLoc = os.path.join(tmpDir, "Bin") scwe = StoreCallsWillExecutor() wdefaultBuild(skipinfoprj, setupCompilationCallback, scwe) history = "@".join(scwe.history).replace(skroot, "__TRUNK__").replace(tmpDir, "__TMP__").split("@") self.assertEqual( [ #'g++ -c "__TRUNK__\\Src\\foo-0.cpp" -o "__TMP__\\Obj\\Src\\foo-0.o" -I"__TRUNK__\\Hdr" -g3 -O0', #'g++ -c "__TRUNK__\\Src\\foo-1.cpp" -o "__TMP__\\Obj\\Src\\foo-1.o" -I"__TRUNK__\\Hdr" -g3 -O0', #'g++ -c "__TRUNK__\\Src\\main.cpp" -o "__TMP__\\Obj\\Src\\main.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ "__TMP__\\Obj\\Src\\foo-0.o" "__TMP__\\Obj\\Src\\foo-1.o" "__TMP__\\Obj\\Src\\main.o" -o "__TMP__\\Bin\\EasySkip"' ], history ) swe = SystemWillExecutor() for cmd in scwe.history: swe.execute(cmd) del scwe executable = None for sf in os.listdir(executableLoc): if os.path.splitext(sf)[0] == "EasySkip": executable = sf self.assertFalse(executable is None) executable = os.path.join(executableLoc, executable) result = subprocess.Popen(executable, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0] self.assertEqual("Foo-0\r\nFoo-1", result) ## with ch cpp chpth = os.path.join(skroot, "Src", "foo-1.cpp") b = open(chpth, "r").read().replace("THE_RESULT", "THE_RESULT_CH") f = open(chpth, "w") f.write(b) f.close() scwe = StoreCallsWillExecutor() wdefaultBuild(skipinfoprj, setupCompilationCallback, scwe) #trunk = os.path.normpath(os.path.join(sys.path[0], "..")) history = "@".join(scwe.history).replace(skroot, "__TRUNK__").replace(tmpDir, "__TMP__").split("@") self.assertEqual( [ #'g++ -c "__TRUNK__\\Src\\foo-0.cpp" -o "__TMP__\\Obj\\Src\\foo-0.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ -c "__TRUNK__\\Src\\foo-1.cpp" -o "__TMP__\\Obj\\Src\\foo-1.o" -I"__TRUNK__\\Hdr" -g3 -O0', #'g++ -c "__TRUNK__\\Src\\main.cpp" -o "__TMP__\\Obj\\Src\\main.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ "__TMP__\\Obj\\Src\\foo-0.o" "__TMP__\\Obj\\Src\\foo-1.o" "__TMP__\\Obj\\Src\\main.o" -o "__TMP__\\Bin\\EasySkip"' ], history ) swe = SystemWillExecutor() for cmd in scwe.history: swe.execute(cmd) del scwe result = subprocess.Popen(executable, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0] self.assertEqual("Foo-0\r\nFoo-1 - ch", result) ## with ch hdr chpth = os.path.join(skroot, "Hdr", "results.h") b = open(chpth, "r").read().replace('"Foo-1 - ch"', '"Foo-1 - ch - hdr"') f = open(chpth, "w") f.write(b) f.close() scwe = StoreCallsWillExecutor() wdefaultBuild(skipinfoprj, setupCompilationCallback, scwe) #trunk = os.path.normpath(os.path.join(sys.path[0], "..")) history = "@".join(scwe.history).replace(skroot, "__TRUNK__").replace(tmpDir, "__TMP__").split("@") self.assertEqual( [ #'g++ -c "__TRUNK__\\Src\\foo-0.cpp" -o "__TMP__\\Obj\\Src\\foo-0.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ -c "__TRUNK__\\Src\\foo-1.cpp" -o "__TMP__\\Obj\\Src\\foo-1.o" -I"__TRUNK__\\Hdr" -g3 -O0', #'g++ -c "__TRUNK__\\Src\\main.cpp" -o "__TMP__\\Obj\\Src\\main.o" -I"__TRUNK__\\Hdr" -g3 -O0', 'g++ "__TMP__\\Obj\\Src\\foo-0.o" "__TMP__\\Obj\\Src\\foo-1.o" "__TMP__\\Obj\\Src\\main.o" -o "__TMP__\\Bin\\EasySkip"' ], history ) swe = SystemWillExecutor() for cmd in scwe.history: swe.execute(cmd) del scwe result = subprocess.Popen(executable, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0] self.assertEqual("Foo-0\r\nFoo-1 - ch - hdr", result)