Ejemplo n.º 1
0
 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')
Ejemplo n.º 2
0
    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'])
Ejemplo n.º 3
0
    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')
Ejemplo n.º 4
0
 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")
Ejemplo n.º 5
0
 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())
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
    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'}
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
 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()
Ejemplo n.º 11
0
 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')
Ejemplo n.º 12
0
    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')
Ejemplo n.º 13
0
    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))
Ejemplo n.º 14
0
 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')
Ejemplo n.º 15
0
 def getMockHelper(self):
     h = mock.MockInstance(helper.rMakeHelper)
     h._mock.set(buildConfig=self.cfg)
     mock.mockMethod(h.buildConfig.initializeFlavors)
     return h