Fix releasers and respect offline flag.

This commit is contained in:
Devan Goodwin 2014-02-27 11:46:00 -04:00
parent 9474b0ab95
commit 8342529dd9
3 changed files with 82 additions and 5 deletions

View file

@ -610,14 +610,15 @@ class ReleaseModule(BaseCliModule):
releaser_class = get_class_by_name(releaser_config.get(target, "releaser")) releaser_class = get_class_by_name(releaser_config.get(target, "releaser"))
debug("Using releaser class: %s" % releaser_class) debug("Using releaser class: %s" % releaser_class)
builder_args = {} builder_args = {}
if len(self.options.builder_args) > 0: if self.options.builder_args and len(self.options.builder_args) > 0:
for arg in self.options.builder_args: for arg in self.options.builder_args:
key, val = arg.split('=') key, val = arg.split('=')
debug("Passing builder arg: %s = %s" % (key, val)) debug("Passing builder arg: %s = %s" % (key, val))
# TODO: support list values # TODO: support list values
builder_args[key] = val builder_args[key] = val
kwargs = { kwargs = {
'builder_args': builder_args 'builder_args': builder_args,
'offline': self.options.offline
} }
releaser = releaser_class( releaser = releaser_class(

View file

@ -73,12 +73,14 @@ class Releaser(ConfigObject):
self.builder_args = dict(config_builder_args.items() + self.builder_args = dict(config_builder_args.items() +
kwargs['builder_args'].items()) kwargs['builder_args'].items())
# While we create a builder here, we don't actually call run on it # While we create a builder here, we don't actually call run on it
# unless the releaser needs to: # unless the releaser needs to:
self.offline = False
if 'offline' in kwargs:
self.offline=kwargs['offline']
self.builder = create_builder(name, tag, self.builder = create_builder(name, tag,
config, config,
build_dir, user_config, self.builder_args) build_dir, user_config, self.builder_args, offline=self.offline)
self.project_name = self.builder.project_name self.project_name = self.builder.project_name
# TODO: if it looks like we need custom CVSROOT's for different users, # TODO: if it looks like we need custom CVSROOT's for different users,
@ -304,10 +306,12 @@ class RsyncReleaser(Releaser):
# Use the builder from the release target, rather than the default # Use the builder from the release target, rather than the default
# one defined for this git repo or sub-package: # one defined for this git repo or sub-package:
# TODO: this is a little sketchy, creating two builders?
self.builder = create_builder(name, tag, self.builder = create_builder(name, tag,
config, config,
build_dir, user_config, self.builder_args, build_dir, user_config, self.builder_args,
builder_class=self.releaser_config.get(self.target, 'builder')) builder_class=self.releaser_config.get(self.target, 'builder'),
offline=self.offline)
if self.releaser_config.has_option(self.target, "scl"): if self.releaser_config.has_option(self.target, "scl"):
self.builder.scl = self.releaser_config.get(self.target, "scl") self.builder.scl = self.releaser_config.get(self.target, "scl")

View file

@ -0,0 +1,72 @@
#
# Copyright (c) 2008-2014 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
"""
Functional Tests for the FetchBuilder.
"""
import ConfigParser
import glob
import os
import shutil
import tempfile
from os.path import join
from fixture import TitoGitTestFixture, tito
PKG_NAME = "releaseme"
RELEASER_CONF = """
[yum-test]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.Builder
rsync = %s
"""
class YumReleaserTests(TitoGitTestFixture):
def setUp(self):
TitoGitTestFixture.setUp(self)
self.create_project(PKG_NAME)
# Setup test config:
self.config = ConfigParser.RawConfigParser()
self.config.add_section("buildconfig")
self.config.set("buildconfig", "builder",
"tito.builder.Builder")
self.config.set("buildconfig", "offline",
"true")
self.output_dir = tempfile.mkdtemp("-titotestoutput")
def tearDown(self):
TitoGitTestFixture.tearDown(self)
shutil.rmtree(self.output_dir)
pass
def _setup_fetchbuilder_releaser(self, yum_repo_dir):
self.write_file(join(self.repo_dir, 'rel-eng/releasers.conf'),
RELEASER_CONF % yum_repo_dir)
def test_with_releaser(self):
yum_repo_dir = os.path.join(self.output_dir, 'yum')
self._setup_fetchbuilder_releaser(yum_repo_dir)
tito('release --debug yum-test')
self.assertEquals(1, len(glob.glob(join(yum_repo_dir,
"releaseme-0.0.1-1.*.noarch.rpm"))))
self.assertEquals(1, len(glob.glob(join(yum_repo_dir,
"repodata/repomd.xml"))))