def testGetJobBasedOnProductGroups(self): handle = self.getRbuildHandle() self.rbuildCfg.serverUrl = None from rbuild_plugins.build import groups handle.productStore = mock.MockObject() handle.product = mock.MockObject() groupFlavors = [('group-dist', 'is: x86'), ('group-dist', 'is: x86_64')] handle.productStore.getGroupFlavors._mock.setReturn(groupFlavors) handle.productStore.getRmakeConfigPath._mock.setReturn( self.workDir + '/rmakerc') label = 'localhost@rpl:linux' handle.productStore.getActiveStageLabel._mock.setReturn(label) handle.product.getLabelForStage._mock.setReturn(label) handle.product.getBaseFlavor._mock.setReturn('') mock.mockMethod(handle.facade.conary._findTroves) groupSpec = ('group-dist:source', None, None) groupTup = self.makeTroveTuple('group-dist:source=@rpl:linux/1.0-1') handle.facade.conary._findTroves._mock.setReturn( {groupSpec : [groupTup]}, [groupSpec], label, allowMissing=True) groupsToBuild = ['group-dist{x86}', 'group-dist{x86_64}'] mock.mockMethod(handle.facade.rmake.createBuildJobForStage) handle.facade.rmake.createBuildJobForStage._mock.setReturn('r1', groupsToBuild, recurse=True) # test1 job = groups._getJobBasedOnProductGroups(handle, {}, recurse=True) assert(job == 'r1') # test2: test to see what it does when there are no groups. handle.facade.conary._findTroves._mock.setReturn({}, [groupSpec], label, allowMissing=True) job = groups._getJobBasedOnProductGroups(handle, {}, recurse=True) assert(job is None) # test3: when there is a replacement group recipe, we should use # the one on disk and not search the repository for it. groupRecipe = self.workDir + '/group-dist.recipe' groupsToBuild = [ groupRecipe + '{x86}', groupRecipe + '{x86_64}'] handle.facade.rmake.createBuildJobForStage._mock.setReturn('r2', groupsToBuild, recurse=True) handle.facade.conary._findTroves._mock.setReturn({}, [], label, allowMissing=True) job = groups._getJobBasedOnProductGroups(handle, {'group-dist' : groupRecipe}, recurse=True) assert(job == 'r2') # test 3 - no groups. handle.productStore.getGroupFlavors._mock.setReturn([]) job = groups._getJobBasedOnProductGroups(handle, {}, recurse=True) assert(job is None)
def testGetJobBasedOnProductGroups(self): handle = self.getRbuildHandle() self.rbuildCfg.serverUrl = None from rbuild_plugins.build import groups handle.productStore = mock.MockObject() handle.product = mock.MockObject() groupFlavors = [("group-dist", "is: x86"), ("group-dist", "is: x86_64")] handle.productStore.getGroupFlavors._mock.setReturn(groupFlavors) handle.productStore.getRmakeConfigPath._mock.setReturn(self.workDir + "/rmakerc") label = "localhost@rpl:linux" handle.productStore.getActiveStageLabel._mock.setReturn(label) handle.product.getLabelForStage._mock.setReturn(label) handle.product.getBaseFlavor._mock.setReturn("") mock.mockMethod(handle.facade.conary._findTroves) groupSpec = ("group-dist:source", None, None) groupTup = self.makeTroveTuple("group-dist:source=@rpl:linux/1.0-1") handle.facade.conary._findTroves._mock.setReturn({groupSpec: [groupTup]}, [groupSpec], label, allowMissing=True) groupsToBuild = ["group-dist{x86}", "group-dist{x86_64}"] mock.mockMethod(handle.facade.rmake.createBuildJobForStage) handle.facade.rmake.createBuildJobForStage._mock.setReturn("r1", groupsToBuild, recurse=True) # test1 job = groups._getJobBasedOnProductGroups(handle, {}, recurse=True) assert job == "r1" # test2: test to see what it does when there are no groups. handle.facade.conary._findTroves._mock.setReturn({}, [groupSpec], label, allowMissing=True) job = groups._getJobBasedOnProductGroups(handle, {}, recurse=True) assert job is None # test3: when there is a replacement group recipe, we should use # the one on disk and not search the repository for it. groupRecipe = self.workDir + "/group-dist.recipe" groupsToBuild = [groupRecipe + "{x86}", groupRecipe + "{x86_64}"] handle.facade.rmake.createBuildJobForStage._mock.setReturn("r2", groupsToBuild, recurse=True) handle.facade.conary._findTroves._mock.setReturn({}, [], label, allowMissing=True) job = groups._getJobBasedOnProductGroups(handle, {"group-dist": groupRecipe}, recurse=True) assert job == "r2" # test 3 - no groups. handle.productStore.getGroupFlavors._mock.setReturn([]) job = groups._getJobBasedOnProductGroups(handle, {}, recurse=True) assert job is None
def _createRmakeJobForPackages(handle, packageList=None, recurse=True): if packageList and not recurse: return _getJobFromNames(handle, packageList) else: allRecipes = handle.productStore.getEditedRecipeDicts() packageRecipes, groupRecipes = allRecipes if packageList is not None: packageRecipes = dict(x for x in packageRecipes.items() if x[0] in packageList) if len(packageRecipes) < len(packageList): notFound = set(packageList) - set(packageRecipes) raise errors.PluginError( 'the following packages' ' were not found: %s' % ', '.join(sorted(notFound))) assert(len(packageRecipes) == len(packageList)) elif not packageRecipes: raise errors.PluginError( 'no packages are currently being edited - nothing to build') mainJob = groups._getJobBasedOnProductGroups(handle, groupRecipes, recurse=True) # overlay the main job with the recipes that are checked out. return _addInEditedPackages(handle, mainJob, packageRecipes)
def _createRmakeJobForPackages(handle, packageList=None, recurse=True): if packageList and not recurse: return _getJobFromNames(handle, packageList) else: allRecipes = handle.productStore.getEditedRecipeDicts() packageRecipes, groupRecipes = allRecipes if packageList is not None: packageRecipes = dict(x for x in packageRecipes.items() if x[0] in packageList) if len(packageRecipes) < len(packageList): notFound = set(packageList) - set(packageRecipes) raise errors.PluginError('the following packages' ' were not found: %s' % ', '.join(sorted(notFound))) assert (len(packageRecipes) == len(packageList)) elif not packageRecipes: raise errors.PluginError( 'no packages are currently being edited - nothing to build') mainJob = groups._getJobBasedOnProductGroups(handle, groupRecipes, recurse=True) # overlay the main job with the recipes that are checked out. return _addInEditedPackages(handle, mainJob, packageRecipes)