diff options
Diffstat (limited to 'src/software/test/util.py')
-rw-r--r-- | src/software/test/util.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/software/test/util.py b/src/software/test/util.py new file mode 100644 index 0000000..da55e6a --- /dev/null +++ b/src/software/test/util.py @@ -0,0 +1,82 @@ +#!/usr/bin/python +# -*- Coding:utf-8 -*- +# +# Copyright (C) 2012 Red Hat, Inc. All rights reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Authors: Radek Novacek <rnovacek@redhat.com> +# Authors: Michal Minar <miminar@redhat.com> + +""" +Common test utilities. +""" + +import re +from subprocess import check_output + +RE_NEVRA = re.compile( + r'^(?P<name>.+)-(?P<evra>(?P<epoch>\d+):(?P<ver>[^-]+)' + r'-(?P<rel>.+)\.(?P<arch>[^.]+))$') +RE_NEVRA_OPT_EPOCH = re.compile( + r'^(?P<name>.+)-(?P<evra>((?P<epoch>\d+):)?(?P<ver>[^-]+)' + r'-(?P<rel>.+)\.(?P<arch>[^.]+))$') +RE_ENVRA = re.compile( + r'^(?P<epoch>\d+|\(none\)):(?P<name>.+)-(?P<ver>[^-]+)' + r'-(?P<rel>.+)\.(?P<arch>[^.]+)$') + +def make_nevra(name, epoch, ver, rel, arch, with_epoch='NOT_ZERO'): + """ + @param with_epoch may be one of: + "NOT_ZERO" - include epoch only if it's not zero + "ALWAYS" - include epoch always + "NEVER" - do not include epoch at all + """ + estr = '' + if with_epoch.lower() == "always": + estr = epoch + elif with_epoch.lower() == "not_zero": + if epoch and epoch.lower() not in {"0", "(none)"}: + estr = epoch + if len(estr): + estr += ":" + return "%s-%s%s-%s.%s" % (name, estr, ver, rel, arch) + +def make_evra(epoch, ver, rel, arch): + """ @return evra string """ + if not epoch or epoch.lower() == "(none)": + epoch = "0" + return "%s:%s-%s.%s" % (epoch, ver, rel, arch) + +def run_yum(*params, **kwargs): + """ + Runs yum with params and returns its output + It's here especially to allow pass a repolist argument, that + specifies list of repositories, to run the command on. + """ + cmd = ['yum'] + list(params) + repolist = kwargs.get('repolist', None) + if repolist is None: + repolist = [] + if repolist: + cmd += ['--disablerepo=*'] + cmd += ['--enablerepo='+r for r in repolist] + return check_output(cmd) + +def get_system_architecture(): + """ + @return the system architecture name as seen by rpm + """ + return check_output(['rpm', '-q', '--qf', '%{ARCH}\n', 'rpm']) + |