def testGetProductVersion(self): productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enableMethod('getProductVersion') product = mock.MockObject() product.getProductVersion._mock.setDefaultReturn('42.42') productStore.getProduct._mock.setDefaultReturn(product) self.assertEquals(productStore.getProductVersion(), '42.42')
def testGetPlatformAutoLoadRecipes(self): pd = proddef.ProductDefinition() handle = conaryfacadetest.MockHandle() handle.product = pd handle.facade = mock.MockObject() handle.getConfig().user = ('JeanValjean', 'password') productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enableMethod('getPlatformAutoLoadRecipes') productStore._mock.set(_handle=handle) facade = conaryfacade.ConaryFacade(handle) repos = conaryfacadetest.MockRepositoryClient() self.mock(facade, '_getRepositoryClient', lambda: repos) handle.facade._mock.set(conary=facade) alr = productStore.getPlatformAutoLoadRecipes() self.assertEquals(alr, []) alRecipes = ['foo', 'bar'] for troveName in alRecipes: pd.addPlatformAutoLoadRecipe(troveName) pkg1 = self.makeTroveTuple('foo=/foo.rpath.com@foo:2/2-2-2') groupTup1 = self.makeTroveTuple('group-foo=/foo.rpath.com@foo:1/1-1-1') groupTrv1 = mock.MockObject(stableReturnValues=True) groupTrv1.iterTroveList._mock.setDefaultReturn([pkg1]) self.mock(repos, 'getTroves', lambda *args, **kwargs: [groupTrv1]) pd.addSearchPath(groupTup1[0], label=str(groupTup1[1].branch()), version=str(groupTup1[1].trailingRevision())) alr = productStore.getPlatformAutoLoadRecipes() self.assertEquals(alr, ['foo=/foo.rpath.com@foo:2/2-2-2'])
def testStatusStore(self): productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.set(statusStore=None) productStore._mock.enableMethod('setStatus') productStore._mock.enableMethod('getStatus') productStore._mock.enableMethod('_getStatusStore') productStore._mock.enableMethod('getPackageJobId') productStore._mock.enableMethod('getGroupJobId') productStore._mock.enableMethod('getImageJobId') productStore._mock.enableMethod('setPackageJobId') productStore._mock.enableMethod('setGroupJobId') productStore._mock.enableMethod('setImageJobId') productStore.iterStageNames._mock.setDefaultReturn(['teststage']) productStore.getActiveStageName._mock.setDefaultReturn('teststage') productStore._mock.enable('_baseDirectory') productStore._baseDirectory = self.workDir assert (productStore.getGroupJobId() is None) assert (productStore.getImageJobId() is None) assert (productStore.getPackageJobId() is None) productStore.setGroupJobId(10) assert (productStore.getGroupJobId() is 10) productStore.setImageJobId(15) assert (productStore.getImageJobId() is 15) productStore.setPackageJobId(20) assert (productStore.getGroupJobId() is 10) assert (productStore.getImageJobId() is 15) assert (productStore.getPackageJobId() is 20) # key 'foo' is not defined self.assertRaises(KeyError, productStore.setStatus, 'foo', 'asdf')
def testUpdateError(self): productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enableMethod('update') productStore._handle.facade.conary.updateCheckout._mock.setDefaultReturn( False) err = self.assertRaises(errors.RbuildError, productStore.update) assert (str(err) == "Failed to update product definition")
def testHasSpecialTroves(self): dh = mock.MockInstance(dephandler.DependencyHandler) dh._mock.enableMethod('hasSpecialTroves') dh._mock.set(inactiveSpecial=['foo']) assert (dh.hasSpecialTroves()) dh._mock.set(inactiveSpecial=[]) assert (not dh.hasSpecialTroves())
def testGetPackagePath(self): realListDir = os.listdir realExists = os.path.exists def mockListDir(path): if path.endswith('/qa'): return ['asdf' ] return realListDir(path) def mockExists(path): if path.endswith('CONARY'): return True if path.startswith('/PROD'): return True return realExists(path) self.mock(os, 'listdir', lambda *args: mockListDir(*args)) self.mock(os.path, 'exists', lambda *args: mockExists(*args)) productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enableMethod('getPackagePath') productStore.getStageDirectory._mock.setDefaultReturn('/PROD/qa') handle = self.getRbuildHandle(productStore=productStore) productStore._handle.facade.conary = mock.MockObject() stateObj = mock.MockObject() stateObj.getSourceState().getName._mock.setDefaultReturn('asdf:source') mock.mock(state, 'ConaryStateFromFile') state.ConaryStateFromFile._mock.setDefaultReturn(stateObj) productStore._handle.facade.conary.getNameForCheckout._mock.setDefaultReturn('asdf') productStore._handle.facade.conary.isGroupName._mock.setDefaultReturn(False) packagePath = productStore.getPackagePath('asdf') assert(packagePath == '/PROD/qa/asdf') packagePath = productStore.getPackagePath('blah') assert(packagePath is None)
def testCheckoutPlatform(self): productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._handle.product.getProductDefinitionLabel._mock.setDefaultReturn( 'localhost@rpl:2') productStore.getPlatformDefinitionDirectory._mock.setDefaultReturn( self.workDir) productStore._mock.enableMethod('checkoutPlatform') productStore.checkoutPlatform() productStore._handle.facade.conary.checkout._mock.assertCalled( 'platform-definition', 'localhost@rpl:2', targetDir=self.workDir)
def testGetEditedRecipeDicts(self): realListDir = os.listdir realExists = os.path.exists def mockListDir(path): if path.endswith('/qa'): return ['asdf'] return realListDir(path) def mockExists(path): if path.endswith('CONARY'): return True if path.startswith('/PROD'): return True return realExists(path) self.mock(os, 'listdir', lambda *args: mockListDir(*args)) self.mock(os.path, 'exists', lambda *args: mockExists(*args)) productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enableMethod('getEditedRecipeDicts') productStore.getRbuildConfigPath._mock.setReturn(self.workDir + '/rbuildrc') handle = self.getRbuildHandle(productStore=productStore) productStore._handle.facade.conary = mock.MockObject() stateObj = mock.MockObject() stateObj.getSourceState().getName._mock.setDefaultReturn('asdf:source') mock.mock(state, 'ConaryStateFromFile') state.ConaryStateFromFile._mock.setDefaultReturn(stateObj) productStore._handle.facade.conary.getNameForCheckout._mock.setDefaultReturn( 'asdf') productStore._handle.facade.conary.isGroupName._mock.setDefaultReturn( False) productStore.getActiveStageName._mock.setDefaultReturn(None) productStore.getStageDirectory._mock.setDefaultReturn('/PROD/qa') packageDict, groupDict = productStore.getEditedRecipeDicts('qa') assert packageDict == {'asdf': '/PROD/qa/asdf/asdf.recipe'} assert groupDict == {} productStore.getActiveStageName._mock.setDefaultReturn('qa') packageDict, groupDict = productStore.getEditedRecipeDicts() assert packageDict == {'asdf': '/PROD/qa/asdf/asdf.recipe'} assert groupDict == {} productStore._handle.facade.conary.getNameForCheckout._mock.setDefaultReturn( 'group-asdf') productStore._handle.facade.conary.isGroupName._mock.setDefaultReturn( True) stateObj.getSourceState().getName._mock.setDefaultReturn( 'group-asdf:source') packageDict, groupDict = productStore.getEditedRecipeDicts('qa') assert packageDict == {} assert groupDict == {'group-asdf': '/PROD/qa/asdf/group-asdf.recipe'}
def testInitializeBuild(self): builderObj = mock.MockInstance(builder.Builder) regTrv = mock.MockObject() regTrv2 = mock.MockObject() specTrv = mock.MockObject() regTrv.isSpecial._mock.setReturn(False) regTrvTup = self.makeTroveTuple('reg:source') regTrv.getNameVersionFlavor._mock.setReturn(regTrvTup) regTrv2.isSpecial._mock.setReturn(False) regTrv2Tup = self.makeTroveTuple('reg:source') regTrv2.getNameVersionFlavor._mock.setReturn(regTrv2Tup) specTrv.isSpecial._mock.setReturn(True) job = mock.MockObject(jobId=1) job.iterConfigList._mock.setDefaultReturn([]) job.getMainConfig()._mock.set(primaryTroves=[]) job.iterTroves._mock.setDefaultReturn([regTrv, regTrv2, specTrv]) job.iterLoadableTroveList._mock.setDefaultReturn( [regTrvTup, regTrv2Tup]) job.isLoading._mock.setDefaultReturn(False) job.isFailed._mock.setDefaultReturn(False) job.isLoaded._mock.setDefaultReturn(True) mock.mock(dephandler, 'DependencyHandler') builderObj._mock.set(job=job) builderObj._mock.enableMethod('initializeBuild') builderObj._mock.set(serverCfg=self.rmakeCfg) builderObj.buildCfg._mock.set(isolateTroves=False) # Call self.failUnless(builderObj.initializeBuild()) builderObj.worker.loadTroves._mock.assertCalled( job, [regTrvTup, regTrv2Tup], builderObj.eventHandler, self.rmakeCfg.reposName) expectReg = sorted([regTrv, regTrv2]) expected = sorted(expectReg + [specTrv]) job.setBuildTroves._mock.assertCalled(expected) logDir = builderObj.serverCfg.getBuildLogDir(1) rscache = self.rmakeCfg.getResolverCachePath() dephandler.DependencyHandler._mock.assertCalled( builderObj.job.getPublisher(), builderObj.logger, expectReg, [specTrv], logDir, dumbMode=False, resolverCachePath=rscache)
def testGetStageDirectory(self): productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enableMethod('getStageDirectory') mock.mock(os.path, 'exists') os.path.exists._mock.setReturn(False, self.workDir + '/foo') productStore._mock.set(_baseDirectory=self.workDir) err = self.assertRaises(errors.RbuildError, productStore.getStageDirectory, 'foo') assert (str(err) == "Stage directory for 'foo' does not exist") os.path.exists._mock.setReturn(True, self.workDir + '/foo') workDir = productStore.getStageDirectory('foo') assert (workDir == self.workDir + '/foo') productStore.getActiveStageName._mock.setReturn(None) workDir = productStore.getStageDirectory() assert (workDir is None) productStore.getActiveStageName._mock.assertCalled()
def testGetConfigData(self): productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enable('_baseDirectory') productStore._baseDirectory = self.workDir productStore._mock.enableMethod('getRbuildConfigData') productStore._mock.enableMethod('getRbuildConfigPath') productStore._mock.enableMethod('getRmakeConfigData') productStore._mock.enableMethod('getRmakeConfigPath') productStore.getProductDefinitionDirectory._mock.setDefaultReturn( self.workDir) os.chdir(self.workDir) util.mkdirChain('.rbuild') self.writeFile('.rbuild/rbuildrc', 'rbuildrcContents\n') self.writeFile('rmakerc', 'rmakercContents\n') self.assertEquals(productStore.getRbuildConfigData(), 'rbuildrcContents\n') self.assertEquals(productStore.getRmakeConfigData(), 'rmakercContents\n')
def testGetBuildsWithFullFlavors(self): handle = self.getRbuildHandle() productStore = abstract.ProductStore(handle) product = mock.MockInstance(proddef.ProductDefinition) handle.product = product build1 = mock.MockObject() build1.getBuildBaseFlavor._mock.setDefaultReturn('is: x86') build2 = mock.MockObject() build2.getBuildBaseFlavor._mock.setDefaultReturn('is: x86_64') product.getBuildsForStage._mock.setDefaultReturn([build1, build2]) product.getBaseFlavor._mock.setDefaultReturn('qt') r = productStore.getBuildsWithFullFlavors('devel') self.assertEquals(r, [(build1, 'qt is: x86'), (build2, 'qt is: x86_64')]) product.getBuildsForStage._mock.setDefaultReturn([]) self.assertRaises(errors.MissingImageDefinitionError, productStore.getBuildsWithFullFlavors, 'devel')
def testBuild(self): trv = imagetrove.ImageTrove(1, *self.makeTroveTuple('group-foo')) builderObj = mock.MockInstance(builder.Builder) dh = mock.MockObject() worker = mock.MockObject() dh.hasBuildableTroves._mock.setReturn(False) dh.hasSpecialTroves._mock.setReturns([True, False]) dh.moreToDo._mock.setReturns([True, True, False]) dh.popSpecialTrove._mock.setReturn(trv) dh.jobPassed._mock.setReturn(True) worker._checkForResults._mock.setReturn(False) builderObj._mock.set(dh=dh, worker=worker) builderObj._mock.enableMethod('build') builderObj._mock.enableMethod('actOnTrove') builderObj.build() worker.actOnTrove._mock.assertCalled(trv.getCommand(), trv.cfg, trv.jobId, trv, builderObj.eventHandler, builderObj.startTroveLogger(trv))
def testGetCheckoutDirectory(self): productStore = mock.MockInstance(dirstore.CheckoutProductStore) productStore._mock.enableMethod('getCheckoutDirectory') productStore.getStageDirectory._mock.setDefaultReturn('/PROD////qa') self.assertEquals(productStore.getCheckoutDirectory('foo'), '/PROD/qa/foo')
def getMockHelper(self): h = mock.MockInstance(helper.rMakeHelper) h._mock.set(buildConfig=self.cfg) mock.mockMethod(h.buildConfig.initializeFlavors) return h