mirror of
https://github.com/rpm-software-management/tito.git
synced 2025-02-23 20:22:46 +00:00
Fix releasers and respect offline flag.
This commit is contained in:
parent
9474b0ab95
commit
8342529dd9
3 changed files with 82 additions and 5 deletions
|
@ -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(
|
||||||
|
|
|
@ -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")
|
||||||
|
|
||||||
|
|
72
test/functional/release_yum_tests.py
Normal file
72
test/functional/release_yum_tests.py
Normal 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"))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue