def test0(self): def fileCheck(*fpaths): for fpath in fpaths: self.assertTrue(fs.exists(fpath)) self.assertTrue(fs.isfile(fpath)) self.assertFalse(fs.isdir(fpath)) def dirCheck(*fpaths): for fpath in fpaths: self.assertTrue(fs.exists(fpath)) self.assertFalse(fs.isfile(fpath)) self.assertTrue(fs.isdir(fpath)) fs = MockFS() self.assertFalse(fs.exists('src/math/vector.c')) self.assertFalse(fs.isfile('src/math/vector.c')) self.assertFalse(fs.isdir('src/math/vector.c')) fs.mkdirs('src/math/utils') fs.write('README.txt', 'hello') self.assertEquals('hello', fs.read('README.txt')) fs.write('README.txt', 'Hello!') self.assertEquals('Hello!', fs.read('README.txt')) fs.write('src/main.c', '// main') self.assertEquals('// main', fs.read('src/main.c')) try: fs.mkdirs('src/main.c/utils') self.fail() except: pass print fs.show() fileCheck('README.txt', 'src/main.c') dirCheck('', 'src', 'src/math', 'src/math/', 'src/math/utils')
def testRmDir(self): fs = MockFS() fs.mkdirs('src/petymeg/pupak') fs.mkdirs('src/hallo/csocsi') self.assertTrue(fs.isdir('src/petymeg/pupak')) fs.rmdir('src/petymeg/pupak') fs.rmdir('src/hallo/csocsi') print fs.show()
def testTryPlantUML(self): if False: print '--- try PlantUML ---' fs = MockFS() cont = self.createContent() cont.create(fs) with createBldr(fs) as bldr: self.createTasks(bldr, cont) bldr.buildOne('all') print bldr.db.genPlantUML()
def test1(self): def createTasks(bldr): bldr.addTask( targets=['out/concat.txt'], fileDeps=['src/a.txt', 'src/b.txt'], upToDate=targetUpToDate, action=concat) def expectBuild(): with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'out/concat.txt', mustHave=['INFO: Building out/concat.txt.', 'INFO: BUILD PASSED!'], forbidden=['INFO: out/concat.txt is up-to-date.']), 0) def expectUpToDate(): with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'out/concat.txt', mustHave=['INFO: out/concat.txt is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=['INFO: Building out/concat.txt.']), 0) print '>>>--- Test1 ---<<<' # setXDebug(True) fs = MockFS() fs.write('src/a.txt', "aFile\n", mkDirs=True) fs.write('src/b.txt', "bFile\n", mkDirs=True) expectBuild() # print fs.show() self.assertEquals("aFile\nbFile\n", fs.read('out/concat.txt')) # rebuild print '--- rebuild ---' expectUpToDate() self.assertEquals("aFile\nbFile\n", fs.read('out/concat.txt')) print '--- modify a source ---' fs.write('src/b.txt', "__bFile\n", mkDirs=True) # print fs.show() expectBuild() self.assertEquals("aFile\n__bFile\n", fs.read('out/concat.txt')) print '--- TODO: remove target ----' fs.remove('out/concat.txt') expectBuild() print '--- modify target ----' fs.write('out/concat.txt', "Lofasz es estifeny", mkDirs=True) expectBuild() self.assertEquals("aFile\n__bFile\n", fs.read('out/concat.txt'))
def testRemove(self): fs = MockFS() fs.write('src/petymeg/pupak.c', 'Hello', mkDirs=True) fs.write('src/petymeg/piroska.c', 'Bello', mkDirs=True) self.assertTrue(fs.isfile('src/petymeg/pupak.c')) self.assertTrue(fs.isfile('src/petymeg/piroska.c')) self.assertTrue(fs.isdir('src/petymeg/')) self.assertTrue(fs.isdir('src')) fs.remove('src/petymeg/pupak.c') self.assertFalse(fs.isfile('src/petymeg/pupak.c')) self.assertTrue(fs.isfile('src/petymeg/piroska.c')) self.assertTrue(fs.isdir('src/petymeg/')) self.assertTrue(fs.isdir('src'))
def testJoinPath(self): fs = MockFS() def check(rpath, *tokens): fpath = fs.joinPath(*tokens) print '{} -> {}'.format(tokens, fpath) self.assertEqual(rpath, fpath) check('', '') check('/', '/') check('/home', '/', 'home') check('c:/users/ebak', 'c:', 'users', 'ebak') check('/home/endre/stuff', '/home', 'endre', 'stuff')
def testTokenizePath(self): fs = MockFS() def check(fpath, refTokens): tokens = fs.tokenizePath(fpath) print '{} -> {}'.format(fpath, tokens) self.assertListEqual(refTokens, tokens) check('/home/endre/cucc', ['/home', 'endre', 'cucc']) check('endre/cucc', ['endre', 'cucc']) check('', []) check('.', []) check('/', ['/']) check('/file1.txt', ['/file1.txt']) check('\\', []) check(r'C:\Users\ebak\picea\readme.txt', ['C:/Users', 'ebak', 'picea', 'readme.txt']) check(r'C:\Users\ebak\picea/readme.txt', ['C:/Users', 'ebak', 'picea', 'readme.txt'])
def buildFsTree(self, maxDepth=3, dirLeafs=3, fileLeafs=3): fs = MockFS() dirPaths, filePaths = set(), set() def fillDir(dirPath, depth): for fn in range(fileLeafs): fpath = joinPath(dirPath, 'file{}.txt'.format(fn)) fs.write(fpath, 'file {} content\n'.format(fn)) filePaths.add(fpath) if depth < maxDepth: subDepth = depth + 1 for dn in range(dirLeafs): subDirPath = joinPath(dirPath, 'dir{}'.format(dn)) dirPaths.add(subDirPath) fs.mkdirs(subDirPath) fillDir(subDirPath, subDepth) fillDir('/', 0) return fs, dirPaths, filePaths
def testRace(self): '''This doesn't induce race condition.''' def createTasks(bldr): bldr.addTask( targets=['out/concat.txt'], fileDeps=['src/a.txt', 'src/b.txt'], upToDate=targetUpToDate, action=concat) fs = MockFS() fs.write('src/a.txt', "aFile\n", mkDirs=True) fs.write('src/b.txt', "bFile\n", mkDirs=True) with createBldr(fs) as bldr: createTasks(bldr) bldr.buildOne('out/concat.txt') print '--- rebuild ---' with createBldr(fs) as bldr: createTasks(bldr) bldr.buildOne('out/concat.txt') print '--- modify a source ---' fs.write('src/b.txt', "__bFile\n", mkDirs=True) # print fs.show() with createBldr(fs) as bldr: createTasks(bldr) bldr.buildOne('out/concat.txt') self.assertEquals("aFile\n__bFile\n", fs.read('out/concat.txt')) print '--- TODO: remove target ----' fs.remove('out/concat.txt') with createBldr(fs) as bldr: createTasks(bldr) bldr.buildOne('out/concat.txt') print '--- modify target ----' fs.write('out/concat.txt', "Lofasz es estifeny", mkDirs=True) with createBldr(fs) as bldr: createTasks(bldr) bldr.buildOne('out/concat.txt') self.assertEquals("aFile\n__bFile\n", fs.read('out/concat.txt'))
def test0(self): def createTasks(bldr, cont): return self.createTasks(bldr, cont) cont = ContentHelper( cEnts=['main', 'helper', 'mgr'], vEnts=['core', 'CzokCodec', 'SPI'], libPath='out/sw/liba.so', binPath='out/hw/a.bin', cfgPath='cfg/pupak.desc', cfg=('c: mp3\nc: ogg\nc: avi\nc:mp4\n' 'v:add8_8_C\nv:mul16_16\nv: CzokEngiene: 10')) print '--- clean all ---' fs = MockFS() cont.create(fs) # print 'FS content before build:\n' + fs.show() with Builder(fs=fs) as bldr: createTasks(bldr, cont) self.assertEquals(0, bldr.buildOne('all')) allTasks = bldr.db.taskIdSavedTaskDict.keys() self.assertEquals(A_BIN_REF, fs.read('out/hw/a.bin')) self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) # print 'FS content after build:\n' + fs.show() with Builder(fs=fs) as bldr: createTasks(bldr, cont) # logger.setLevel(logging.DEBUG) self.cleanAndMatchOutput( bldr, 'all', ['INFO: Removed folder: gen', 'INFO: Removed folder: out']) print 'FS content after clean All:\n' + fs.show() # print str(fs.getFileList()) for d in ('gen', 'out'): self.assertFalse(fs.isdir(d)) files = [ 'cfg/pupak.desc', 'src/helper.c', 'src/main.c', 'src/mgr.c', 'vhdl/CzokCodec.vhdl', 'vhdl/SPI.vhdl', 'vhdl/core.vhdl', 'default.xbuild' ] for f in files: self.assertTrue(fs.isfile(f), '{} does not exist'.format(f)) # check DB # print fs.read('default.xbuild') self.checkDB(fs, allTasks, allTasks) print '--- clean hwTask ---' fs = MockFS() cont.create(fs) # print 'FS content before build:\n' + fs.show() with Builder(fs=fs) as bldr: createTasks(bldr, cont) bldr.buildOne('all') allTasks = bldr.db.taskIdSavedTaskDict.keys() # print 'FS content after build:\n' + fs.show() with Builder(fs=fs) as bldr: createTasks(bldr, cont) # logger.setLevel(logging.DEBUG) self.cleanAndMatchOutput(bldr, 'hwTask', ['INFO: Removed folder: out/hw']) print 'FS content after clean All:\n' + fs.show() # print str(fs.getFileList()) for d in ['out/hw']: self.assertFalse(fs.isdir(d)) files = [ 'cfg/pupak.desc', 'gen/pupak/src/avi.c', 'gen/pupak/src/mp3.c', 'gen/pupak/src/mp4.c', 'gen/pupak/src/ogg.c', 'out/sw/avi.o', 'out/sw/helper.o', 'out/sw/liba.so', 'out/sw/main.o', 'out/sw/mgr.o', 'out/sw/mp3.o', 'out/sw/mp4.o', 'out/sw/ogg.o', 'src/helper.c', 'src/main.c', 'src/mgr.c', 'vhdl/CzokCodec.vhdl', 'vhdl/SPI.vhdl', 'vhdl/core.vhdl', 'default.xbuild' ] for f in files: self.assertTrue(fs.isfile(f), '{} does not exist'.format(f)) # print str(sorted(allTasks)) removedTasks = [ 'hwTask', 'out/hw/CzokCodec.o', 'out/hw/CzokEngiene.o', 'out/hw/SPI.o', 'out/hw/add8_8_C.o', 'out/hw/core.o', 'out/hw/mul16_16.o' ] # check DB # print fs.read('default.xbuild') self.checkDB(fs, removedTasks, allTasks) print '--- clean out/hw/CzokEngiene.o ---' fs = MockFS() cont.create(fs) # print 'FS content before build:\n' + fs.show() with Builder(fs=fs) as bldr: createTasks(bldr, cont) bldr.buildOne('all') allTasks = bldr.db.taskIdSavedTaskDict.keys() # print 'FS content after build:\n' + fs.show() with Builder(fs=fs) as bldr: createTasks(bldr, cont) # logger.setLevel(logging.DEBUG) self.cleanAndMatchOutput( bldr, 'out/hw/CzokEngiene.o', ['INFO: Removed file: out/hw/CzokEngiene.o']) print 'FS content after clean out/hw/CzokEngiene.o:\n' + fs.show() # print str(fs.getFileList()) # for d in ['out/hw']: self.assertFalse(fs.isdir(d)) files = [ 'cfg/pupak.desc', 'gen/pupak/src/avi.c', 'gen/pupak/src/mp3.c', 'gen/pupak/src/mp4.c', 'gen/pupak/src/ogg.c', 'gen/pupak/vhdl/CzokEngiene.vhdl', 'gen/pupak/vhdl/add8_8_C.vhdl', 'gen/pupak/vhdl/mul16_16.vhdl', 'out/hw/CzokCodec.o', 'out/hw/SPI.o', 'out/hw/a.bin', 'out/hw/add8_8_C.o', 'out/hw/core.o', 'out/hw/mul16_16.o', 'out/sw/avi.o', 'out/sw/helper.o', 'out/sw/liba.so', 'out/sw/main.o', 'out/sw/mgr.o', 'out/sw/mp3.o', 'out/sw/mp4.o', 'out/sw/ogg.o', 'src/helper.c', 'src/main.c', 'src/mgr.c', 'vhdl/CzokCodec.vhdl', 'vhdl/SPI.vhdl', 'vhdl/core.vhdl', 'default.xbuild' ] for f in files: self.assertTrue(fs.isfile(f), '{} does not exist'.format(f)) # print str(sorted(allTasks)) removedTasks = ['out/hw/CzokEngiene.o'] # check DB # print fs.read('default.xbuild') self.checkDB(fs, removedTasks, allTasks) print '--- cleanAll() ---' fs = MockFS() cont.create(fs) # print 'FS content before build:\n' + fs.show() with Builder(fs=fs) as bldr: createTasks(bldr, cont) bldr.buildOne('all') allTasks = bldr.db.taskIdSavedTaskDict.keys() with Builder(fs=fs) as bldr: createTasks(bldr, cont) # logger.setLevel(logging.DEBUG) bldr.db.cleanAll() # TODO: asserts print 'FS content after cleanAll():\n' + fs.show() # print str(fs.getFileList()) for d in ('gen', 'out'): self.assertFalse(fs.isdir(d)) files = [ 'cfg/pupak.desc', 'src/helper.c', 'src/main.c', 'src/mgr.c', 'vhdl/CzokCodec.vhdl', 'vhdl/SPI.vhdl', 'vhdl/core.vhdl', 'default.xbuild' ] for f in files: self.assertTrue(fs.isfile(f), '{} does not exist'.format(f)) # check DB # print fs.read('default.xbuild') self.checkDB(fs, allTasks, allTasks)
if trg.endswith('.size'): assert src.endswith('.txt') prefix, countFn = 'size of', len elif trg.endswith('.lines'): assert src.endswith('.json') prefix, countFn = 'number of lines in', countLines tasks.append( Task( targets=[trg], fileDeps=[src], action=(countAction, {'prefix': prefix, 'countFn': countFn}))) return tasks # This example runs on a virtual (mock) filesystem. fs = MockFS() # Creating a generator configuration file. # Here content 2 means the number of files, the generator creates. fs.write('cfg/cfg.txt', '2', mkDirs=True) # Create a Builder. with Builder(fs=fs) as bldr: # Create the generator task. bldr.addTask( name='generator', fileDeps=['cfg/cfg.txt'], action=generatorAction, taskFactory=taskFactory) # Create a task for concatenating the .size files bldr.addTask( name='concatSizeFiles', targets=['out/txtInfo.txt'],
def test3(self): '''Testing when more targets depends on the same file.''' def createTasks(bldr): bldr.addTask( targets=['out/c1.txt'], fileDeps=['src/a.txt', 'src/b.txt'], upToDate=targetUpToDate, action=concat) bldr.addTask( targets=['out/c2.txt'], fileDeps=['src/b.txt', 'src/c.txt'], upToDate=targetUpToDate, action=concat) bldr.addTask( targets=['out/c3.txt'], fileDeps=['src/d.txt', 'src/e.txt'], upToDate=targetUpToDate, action=concat) bldr.addTask( name='all', fileDeps=['out/c1.txt', 'out/c2.txt', 'out/c3.txt'], upToDate=targetUpToDate) print '>>>--- Test3 ---<<<' fs = MockFS() fs.write('src/a.txt', 'aFile\n', mkDirs=True) fs.write('src/b.txt', 'bFile\n', mkDirs=True) fs.write('src/c.txt', 'cFile\n', mkDirs=True) fs.write('src/d.txt', 'dFile\n', mkDirs=True) fs.write('src/e.txt', 'eFile\n', mkDirs=True) with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: Building out/c1.txt.', 'INFO: Building out/c2.txt.', 'INFO: Building out/c3.txt.', 'INFO: Building all.', 'INFO: BUILD PASSED!'], forbidden=[]), 0) self.assertEquals('aFile\nbFile\n', fs.read('out/c1.txt')) self.assertEquals('bFile\ncFile\n', fs.read('out/c2.txt')) self.assertEquals('dFile\neFile\n', fs.read('out/c3.txt')) print '--- rebuild ---' with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: out/c1.txt is up-to-date.', 'INFO: out/c2.txt is up-to-date.', 'INFO: out/c3.txt is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]), 0) self.assertEquals('aFile\nbFile\n', fs.read('out/c1.txt')) self.assertEquals('bFile\ncFile\n', fs.read('out/c2.txt')) self.assertEquals('dFile\neFile\n', fs.read('out/c3.txt')) print '--- modify common depend file ---' fs.write('src/b.txt', 'brrrFile\n', mkDirs=True) with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: out/c3.txt is up-to-date.', 'INFO: Building out/c1.txt.', 'INFO: Building out/c2.txt.', 'INFO: BUILD PASSED!'], forbidden=[]), 0) self.assertEquals('aFile\nbrrrFile\n', fs.read('out/c1.txt')) self.assertEquals('brrrFile\ncFile\n', fs.read('out/c2.txt')) self.assertEquals('dFile\neFile\n', fs.read('out/c3.txt'))
def test2(self): def countAction(bldr, task, **kwargs): def countChars(trg, fileDeps): res = '' for fileDep in fileDeps: content = bldr.fs.read(fileDep) res += 'fileName: {}, chars: {}\n'.format(fileDep, len(content)) bldr.fs.write(trg, res, mkDirs=True) def calcHash(trg, fileDeps): res = '' for fileDep in fileDeps: hashCode = HashEnt.calcHash(bldr.fs.read(fileDep)) res += 'fileName: {}, hash: {}\n'.format(fileDep, hashCode) bldr.fs.write(trg, res, mkDirs=True) fileDeps = task.getFileDeps() for trg in task.targets: if 'charCnt.txt' == bldr.fs.basename(trg): countChars(trg, fileDeps) elif 'hash.txt' == bldr.fs.basename(trg): calcHash(trg, fileDeps) return 0 def createTasks(bldr): bldr.addTask( name='all', targets=['out/charCnt.txt', 'out/hash.txt'], fileDeps=['out/concat.txt', 'src/a.txt', 'src/b.txt'], upToDate=targetUpToDate, action=countAction) bldr.addTask( targets=['out/concat.txt'], fileDeps=['src/a.txt', 'src/b.txt'], upToDate=targetUpToDate, action=concat) return bldr print '>>>--- Test2 ---<<<' fs = MockFS() fs.write('src/a.txt', 'aFile\n', mkDirs=True) fs.write('src/b.txt', 'bFile\n', mkDirs=True) with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'out/hash.txt', mustHave=['INFO: Building out/concat.txt.', 'INFO: Building all.', 'INFO: BUILD PASSED!'], forbidden=[]), 0) # print fs.show() self.assertEquals('aFile\nbFile\n', fs.read('out/concat.txt')) self.assertTrue(fs.isfile('out/hash.txt')) print "--- rebuild ---" with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'out/hash.txt', mustHave=['INFO: out/concat.txt is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]), 0) print "--- modify a source ---" fs.write('src/b.txt', 'brrrr\n', mkDirs=True) with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'out/hash.txt', mustHave=['INFO: Building out/concat.txt.', 'INFO: Building all.', 'INFO: BUILD PASSED!'], forbidden=[]), 0) # print fs.show() self.assertEquals('aFile\nbrrrr\n', fs.read('out/concat.txt')) self.assertTrue(fs.isfile('out/hash.txt')) print "--- remove a top level target ---" fs.remove('out/hash.txt') with createBldr(fs) as bldr: createTasks(bldr) self.assertEquals( self.buildAndCheckOutput( bldr, 'out/hash.txt', mustHave=['INFO: out/concat.txt is up-to-date.', 'INFO: Building all.', 'INFO: BUILD PASSED!'], forbidden=[]), 0)
def test0(self): def createTasks(bldr, cont): return self.createTasks(bldr, cont) print '--- 1st build ---' cont = self.createContent() fs = MockFS() cont.create(fs) # print 'FS content before build:\n' + fs.show() with createBldr(fs) as bldr: createTasks(bldr, cont) bldr.buildOne('all') # hwTask = bldr._getTaskByName('hwTask') # print 'FS content after build:\n' + fs.show() # print 'a.bin:\n' + fs.read('out/hw/a.bin') self.assertEquals(A_BIN_REF, fs.read('out/hw/a.bin')) self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) if True: print '--- rebuild ---' with createBldr(fs) as bldr: createTasks(bldr, cont) self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: generator is up-to-date.', 'INFO: out/hw/core.o is up-to-date.', 'INFO: out/hw/SPI.o is up-to-date.', 'INFO: out/hw/CzokCodec.o is up-to-date.', 'INFO: hwTask is up-to-date.', 'INFO: out/sw/main.o is up-to-date.', 'INFO: out/sw/helper.o is up-to-date.', 'INFO: out/sw/mgr.o is up-to-date.', 'INFO: swTask is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]) self.assertEquals(A_BIN_REF, fs.read('out/hw/a.bin')) self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) if True: print '--- modify static dependency ---' fs.write('vhdl/SPI.vhdl', 'lofasz es estifeny\n') with createBldr(fs) as bldr: createTasks(bldr, cont) self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: generator is up-to-date.', 'INFO: out/hw/core.o is up-to-date.', 'INFO: Building out/hw/SPI.o.', 'INFO: out/hw/CzokCodec.o is up-to-date.', 'INFO: Building hwTask.', 'INFO: out/sw/main.o is up-to-date.', 'INFO: out/sw/helper.o is up-to-date.', 'INFO: out/sw/mgr.o is up-to-date.', 'INFO: swTask is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]) # print fs.read('out/hw/a.bin') self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) self.assertEquals(A_BIN_SPI_HACK, fs.read('out/hw/a.bin')) if True: print '--- modify config ---' fs.write( 'cfg/pupak.desc', ('c: mp3\nc: ogg\nc: avi\nc:mp4\n' 'v:add8_8_C\nv:mul16_16\nv: ALU: 10')) with createBldr(fs) as bldr: createTasks(bldr, cont) self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: Building generator.', 'INFO: out/hw/core.o is up-to-date.', 'INFO: out/hw/SPI.o is up-to-date.', 'INFO: out/hw/CzokCodec.o is up-to-date.', 'INFO: Building out/hw/ALU.o.', 'INFO: out/hw/add8_8_C.o is up-to-date.', 'INFO: out/hw/mul16_16.o is up-to-date.', 'INFO: Building hwTask.', 'INFO: out/sw/main.o is up-to-date.', 'INFO: out/sw/helper.o is up-to-date.', 'INFO: out/sw/mgr.o is up-to-date.', 'INFO: out/sw/mp3.o is up-to-date.', 'INFO: out/sw/ogg.o is up-to-date.', 'INFO: out/sw/avi.o is up-to-date.', 'INFO: out/sw/mp4.o is up-to-date.', 'INFO: swTask is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]) self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) self.assertEquals(A_BIN_SPI_HACK2, fs.read('out/hw/a.bin')) if True: print '--- modify source of dynamic dependency ---' fs.write('gen/pupak/vhdl/ALU.vhdl', 'Macsonya bacsi') with createBldr(fs) as bldr: createTasks(bldr, cont) # bldr.showDepGraph() self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: Building generator.', 'INFO: out/hw/core.o is up-to-date.', 'INFO: out/hw/SPI.o is up-to-date.', 'INFO: out/hw/CzokCodec.o is up-to-date.', 'INFO: out/hw/ALU.o is up-to-date.', 'INFO: out/hw/add8_8_C.o is up-to-date.', 'INFO: out/hw/mul16_16.o is up-to-date.', 'INFO: hwTask is up-to-date.', 'INFO: out/sw/main.o is up-to-date.', 'INFO: out/sw/helper.o is up-to-date.', 'INFO: out/sw/mgr.o is up-to-date.', 'INFO: out/sw/mp3.o is up-to-date.', 'INFO: out/sw/ogg.o is up-to-date.', 'INFO: out/sw/avi.o is up-to-date.', 'INFO: out/sw/mp4.o is up-to-date.', 'INFO: swTask is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]) # bldr.db.showDepGraph() self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) self.assertEquals(A_BIN_SPI_HACK2, fs.read('out/hw/a.bin')) if True: print '--- modify object of dynamic dependency ---' fs.write('out/hw/ALU.o', 'Macsonya bacsi') with createBldr(fs) as bldr: createTasks(bldr, cont) self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: generator is up-to-date.', 'INFO: out/hw/core.o is up-to-date.', 'INFO: out/hw/SPI.o is up-to-date.', 'INFO: out/hw/CzokCodec.o is up-to-date.', 'INFO: Building out/hw/ALU.o.', 'INFO: out/hw/add8_8_C.o is up-to-date.', 'INFO: out/hw/mul16_16.o is up-to-date.', 'INFO: hwTask is up-to-date.', 'INFO: out/sw/main.o is up-to-date.', 'INFO: out/sw/helper.o is up-to-date.', 'INFO: out/sw/mgr.o is up-to-date.', 'INFO: out/sw/mp3.o is up-to-date.', 'INFO: out/sw/ogg.o is up-to-date.', 'INFO: out/sw/avi.o is up-to-date.', 'INFO: out/sw/mp4.o is up-to-date.', 'INFO: swTask is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]) self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) self.assertEquals(A_BIN_SPI_HACK2, fs.read('out/hw/a.bin')) if True: print '--- remove object of dynamic dependency ---' fs.remove('out/hw/ALU.o') with createBldr(fs) as bldr: createTasks(bldr, cont) # print bldr.show() self.buildAndCheckOutput( bldr, 'all', mustHave=[ 'INFO: generator is up-to-date.', 'INFO: out/hw/core.o is up-to-date.', 'INFO: out/hw/SPI.o is up-to-date.', 'INFO: out/hw/CzokCodec.o is up-to-date.', 'INFO: Building out/hw/ALU.o.', 'INFO: out/hw/add8_8_C.o is up-to-date.', 'INFO: out/hw/mul16_16.o is up-to-date.', 'INFO: hwTask is up-to-date.', 'INFO: out/sw/main.o is up-to-date.', 'INFO: out/sw/helper.o is up-to-date.', 'INFO: out/sw/mgr.o is up-to-date.', 'INFO: out/sw/mp3.o is up-to-date.', 'INFO: out/sw/ogg.o is up-to-date.', 'INFO: out/sw/avi.o is up-to-date.', 'INFO: out/sw/mp4.o is up-to-date.', 'INFO: swTask is up-to-date.', 'INFO: all is up-to-date.', 'INFO: BUILD PASSED!'], forbidden=[]) self.assertEquals(LIBA_SO_REF, fs.read('out/sw/liba.so')) self.assertEquals(A_BIN_SPI_HACK2, fs.read('out/hw/a.bin'))
def createFS(self): fs = MockFS() for n in ('a', 'b', 'c', 'd'): fs.write('src/{}.txt'.format(n), '{}File'.format(n), mkDirs=True) return fs