Target E202 - Whitespace before ')'
https://www.flake8rules.com/rules/E202.html
This commit is contained in:
parent
529d1dafae
commit
54079e949f
2
.flake8
2
.flake8
@ -1,4 +1,4 @@
|
|||||||
[flake8]
|
[flake8]
|
||||||
exclude = abichecker
|
exclude = abichecker
|
||||||
max-line-length = 100
|
max-line-length = 100
|
||||||
ignore = W503,W504,E501,F401,E128,E251,E201,E202
|
ignore = W503,W504,E501,F401,E128,E251,E201
|
||||||
|
18
ReviewBot.py
18
ReviewBot.py
@ -78,7 +78,7 @@ class ReviewBot(object):
|
|||||||
return (None|True|False)
|
return (None|True|False)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
DEFAULT_REVIEW_MESSAGES = { 'accepted': 'ok', 'declined': 'review failed' }
|
DEFAULT_REVIEW_MESSAGES = { 'accepted': 'ok', 'declined': 'review failed'}
|
||||||
REVIEW_CHOICES = ('normal', 'no', 'accept', 'accept-onpass', 'fallback-onfail', 'fallback-always')
|
REVIEW_CHOICES = ('normal', 'no', 'accept', 'accept-onpass', 'fallback-onfail', 'fallback-always')
|
||||||
|
|
||||||
COMMENT_MARKER_REGEX = re.compile(r'<!-- (?P<bot>[^ ]+) state=(?P<state>[^ ]+)(?: result=(?P<result>[^ ]+))? -->')
|
COMMENT_MARKER_REGEX = re.compile(r'<!-- (?P<bot>[^ ]+) state=(?P<state>[^ ]+)(?: result=(?P<result>[^ ]+))? -->')
|
||||||
@ -120,7 +120,7 @@ class ReviewBot(object):
|
|||||||
def _load_config(self, handle = None):
|
def _load_config(self, handle = None):
|
||||||
d = self.__class__.config_defaults
|
d = self.__class__.config_defaults
|
||||||
y = yaml.safe_load(handle) if handle is not None else {}
|
y = yaml.safe_load(handle) if handle is not None else {}
|
||||||
return namedtuple('BotConfig', sorted(d.keys()))(*[ y.get(p, d[p]) for p in sorted(d.keys()) ])
|
return namedtuple('BotConfig', sorted(d.keys()))(*[ y.get(p, d[p]) for p in sorted(d.keys())])
|
||||||
|
|
||||||
def load_config(self, filename = None):
|
def load_config(self, filename = None):
|
||||||
if filename:
|
if filename:
|
||||||
@ -166,7 +166,7 @@ class ReviewBot(object):
|
|||||||
|
|
||||||
def set_request_ids(self, ids):
|
def set_request_ids(self, ids):
|
||||||
for rqid in ids:
|
for rqid in ids:
|
||||||
u = osc.core.makeurl(self.apiurl, [ 'request', rqid ], { 'withfullhistory': '1' })
|
u = osc.core.makeurl(self.apiurl, [ 'request', rqid], { 'withfullhistory': '1'})
|
||||||
r = osc.core.http_GET(u)
|
r = osc.core.http_GET(u)
|
||||||
root = ET.parse(r).getroot()
|
root = ET.parse(r).getroot()
|
||||||
req = osc.core.Request()
|
req = osc.core.Request()
|
||||||
@ -559,7 +559,7 @@ class ReviewBot(object):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
@memoize(session=True)
|
@memoize(session=True)
|
||||||
def _get_sourceinfo(apiurl, project, package, rev=None):
|
def _get_sourceinfo(apiurl, project, package, rev=None):
|
||||||
query = { 'view': 'info' }
|
query = { 'view': 'info'}
|
||||||
if rev is not None:
|
if rev is not None:
|
||||||
query['rev'] = rev
|
query['rev'] = rev
|
||||||
url = osc.core.makeurl(apiurl, ('source', project, package), query=query)
|
url = osc.core.makeurl(apiurl, ('source', project, package), query=query)
|
||||||
@ -585,7 +585,7 @@ class ReviewBot(object):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
props = ('package', 'rev', 'vrev', 'srcmd5', 'lsrcmd5', 'verifymd5')
|
props = ('package', 'rev', 'vrev', 'srcmd5', 'lsrcmd5', 'verifymd5')
|
||||||
return namedtuple('SourceInfo', props)(*[ root.get(p) for p in props ])
|
return namedtuple('SourceInfo', props)(*[ root.get(p) for p in props])
|
||||||
|
|
||||||
# TODO: what if there is more than _link?
|
# TODO: what if there is more than _link?
|
||||||
def _get_linktarget_self(self, src_project, src_package):
|
def _get_linktarget_self(self, src_project, src_package):
|
||||||
@ -637,7 +637,7 @@ class ReviewBot(object):
|
|||||||
review = "@by_user='%s' and @state='new'" % self.review_user
|
review = "@by_user='%s' and @state='new'" % self.review_user
|
||||||
if self.review_group:
|
if self.review_group:
|
||||||
review = osc.core.xpath_join(review, "@by_group='%s' and @state='new'" % self.review_group)
|
review = osc.core.xpath_join(review, "@by_group='%s' and @state='new'" % self.review_group)
|
||||||
url = osc.core.makeurl(self.apiurl, ('search', 'request'), { 'match': "state/@name='review' and review[%s]" % review, 'withfullhistory': 1 } )
|
url = osc.core.makeurl(self.apiurl, ('search', 'request'), { 'match': "state/@name='review' and review[%s]" % review, 'withfullhistory': 1})
|
||||||
root = ET.parse(osc.core.http_GET(url)).getroot()
|
root = ET.parse(osc.core.http_GET(url)).getroot()
|
||||||
|
|
||||||
self.requests = []
|
self.requests = []
|
||||||
@ -651,7 +651,7 @@ class ReviewBot(object):
|
|||||||
def ids_project(self, project, typename):
|
def ids_project(self, project, typename):
|
||||||
url = osc.core.makeurl(self.apiurl, ('search', 'request'),
|
url = osc.core.makeurl(self.apiurl, ('search', 'request'),
|
||||||
{ 'match': "(state/@name='review' or state/@name='new') and (action/target/@project='%s' and action/@type='%s')" % (project, typename),
|
{ 'match': "(state/@name='review' or state/@name='new') and (action/target/@project='%s' and action/@type='%s')" % (project, typename),
|
||||||
'withfullhistory': 1 })
|
'withfullhistory': 1})
|
||||||
root = ET.parse(osc.core.http_GET(url)).getroot()
|
root = ET.parse(osc.core.http_GET(url)).getroot()
|
||||||
|
|
||||||
ret = []
|
ret = []
|
||||||
@ -790,7 +790,7 @@ class ReviewBot(object):
|
|||||||
|
|
||||||
if history_limit:
|
if history_limit:
|
||||||
self.logger.debug("%s not the latest version, checking history", rev)
|
self.logger.debug("%s not the latest version, checking history", rev)
|
||||||
u = osc.core.makeurl(self.apiurl, [ 'source', project, package, '_history' ], { 'limit': history_limit })
|
u = osc.core.makeurl(self.apiurl, [ 'source', project, package, '_history'], { 'limit': history_limit})
|
||||||
try:
|
try:
|
||||||
r = osc.core.http_GET(u)
|
r = osc.core.http_GET(u)
|
||||||
except HTTPError:
|
except HTTPError:
|
||||||
@ -1002,4 +1002,4 @@ class CommandLineInterface(cmdln.Cmdln):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app = CommandLineInterface()
|
app = CommandLineInterface()
|
||||||
sys.exit( app.main() )
|
sys.exit( app.main())
|
||||||
|
@ -94,7 +94,7 @@ class ToolBase(object):
|
|||||||
|
|
||||||
def meta_get_packagelist(self, prj, deleted=None, expand=False):
|
def meta_get_packagelist(self, prj, deleted=None, expand=False):
|
||||||
root = ET.fromstring(self._meta_get_packagelist(prj, deleted, expand))
|
root = ET.fromstring(self._meta_get_packagelist(prj, deleted, expand))
|
||||||
return [ node.get('name') for node in root.findall('entry') if not node.get('name') == '000product' and not node.get('name').startswith('patchinfo.') ]
|
return [ node.get('name') for node in root.findall('entry') if not node.get('name') == '000product' and not node.get('name').startswith('patchinfo.')]
|
||||||
|
|
||||||
def latest_packages(self, project):
|
def latest_packages(self, project):
|
||||||
data = self.cached_GET(self.makeurl(['project', 'latest_commits', project]))
|
data = self.cached_GET(self.makeurl(['project', 'latest_commits', project]))
|
||||||
@ -204,4 +204,4 @@ class CommandLineInterface(cmdln.Cmdln):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app = CommandLineInterface()
|
app = CommandLineInterface()
|
||||||
sys.exit( app.main() )
|
sys.exit( app.main())
|
||||||
|
@ -53,7 +53,7 @@ class BiArchTool(ToolBase.ToolBase):
|
|||||||
if expand:
|
if expand:
|
||||||
query['expand'] = 1
|
query['expand'] = 1
|
||||||
root = ET.fromstring(self.cached_GET(self.makeurl(['source', self.project, package], query)))
|
root = ET.fromstring(self.cached_GET(self.makeurl(['source', self.project, package], query)))
|
||||||
return [ node.get('name') for node in root.findall('entry') ]
|
return [ node.get('name') for node in root.findall('entry')]
|
||||||
|
|
||||||
def has_baselibs(self, package):
|
def has_baselibs(self, package):
|
||||||
if package in self._has_baselibs:
|
if package in self._has_baselibs:
|
||||||
@ -125,7 +125,7 @@ class BiArchTool(ToolBase.ToolBase):
|
|||||||
if self.rdeps is not None:
|
if self.rdeps is not None:
|
||||||
return
|
return
|
||||||
self.rdeps = dict()
|
self.rdeps = dict()
|
||||||
url = self.makeurl(['build', self.project, 'standard', self.arch, '_builddepinfo' ], {'view': 'revpkgnames'})
|
url = self.makeurl(['build', self.project, 'standard', self.arch, '_builddepinfo'], {'view': 'revpkgnames'})
|
||||||
x = ET.fromstring(self.cached_GET(url))
|
x = ET.fromstring(self.cached_GET(url))
|
||||||
for pnode in x.findall('package'):
|
for pnode in x.findall('package'):
|
||||||
name = pnode.get('name')
|
name = pnode.get('name')
|
||||||
@ -201,7 +201,7 @@ class BiArchTool(ToolBase.ToolBase):
|
|||||||
bn = pkgmeta.find('build')
|
bn = pkgmeta.find('build')
|
||||||
if bn is None:
|
if bn is None:
|
||||||
bn = ET.SubElement(pkgmeta, 'build')
|
bn = ET.SubElement(pkgmeta, 'build')
|
||||||
ET.SubElement(bn, 'disable', { 'arch': self.arch })
|
ET.SubElement(bn, 'disable', { 'arch': self.arch})
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
if changed:
|
if changed:
|
||||||
@ -214,7 +214,7 @@ class BiArchTool(ToolBase.ToolBase):
|
|||||||
self.http_POST(self.makeurl(['build', self.project], {
|
self.http_POST(self.makeurl(['build', self.project], {
|
||||||
'cmd': 'wipe',
|
'cmd': 'wipe',
|
||||||
'arch': self.arch,
|
'arch': self.arch,
|
||||||
'package': pkg }))
|
'package': pkg}))
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
logger.error('failed to update %s: %s', pkg, e)
|
logger.error('failed to update %s: %s', pkg, e)
|
||||||
|
|
||||||
@ -264,7 +264,7 @@ class BiArchTool(ToolBase.ToolBase):
|
|||||||
bn = pkgmeta.find('build')
|
bn = pkgmeta.find('build')
|
||||||
if bn is None:
|
if bn is None:
|
||||||
bn = ET.SubElement(pkgmeta, 'build')
|
bn = ET.SubElement(pkgmeta, 'build')
|
||||||
ET.SubElement(bn, 'disable', { 'arch': self.arch })
|
ET.SubElement(bn, 'disable', { 'arch': self.arch})
|
||||||
changed = True
|
changed = True
|
||||||
else:
|
else:
|
||||||
logger.debug('%s already disabled for %s', pkg, self.arch)
|
logger.debug('%s already disabled for %s', pkg, self.arch)
|
||||||
@ -296,7 +296,7 @@ class BiArchTool(ToolBase.ToolBase):
|
|||||||
self.http_POST(self.makeurl(['build', self.project], {
|
self.http_POST(self.makeurl(['build', self.project], {
|
||||||
'cmd': 'wipe',
|
'cmd': 'wipe',
|
||||||
'arch': self.arch,
|
'arch': self.arch,
|
||||||
'package': pkg }))
|
'package': pkg}))
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
logger.error('failed to update %s: %s', pkg, e)
|
logger.error('failed to update %s: %s', pkg, e)
|
||||||
|
|
||||||
@ -371,4 +371,4 @@ class CommandLineInterface(ToolBase.CommandLineInterface):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app = CommandLineInterface()
|
app = CommandLineInterface()
|
||||||
sys.exit( app.main() )
|
sys.exit( app.main())
|
||||||
|
@ -55,7 +55,7 @@ class BugownerTool(ToolBase.ToolBase):
|
|||||||
url = self.makeurl(['person', name])
|
url = self.makeurl(['person', name])
|
||||||
root = ET.fromstring(self.cached_GET(url))
|
root = ET.fromstring(self.cached_GET(url))
|
||||||
|
|
||||||
person = Person(*[ root.find('./{}'.format(field)).text for field in Person._fields ])
|
person = Person(*[ root.find('./{}'.format(field)).text for field in Person._fields])
|
||||||
self.persons[name] = person
|
self.persons[name] = person
|
||||||
|
|
||||||
return person
|
return person
|
||||||
@ -116,7 +116,7 @@ class BugownerTool(ToolBase.ToolBase):
|
|||||||
logging.debug("%s was last touched by %s, ignored." % (package, user))
|
logging.debug("%s was last touched by %s, ignored." % (package, user))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return [ Owner('person', user) ]
|
return [ Owner('person', user)]
|
||||||
|
|
||||||
def is_release_manager(self, name):
|
def is_release_manager(self, name):
|
||||||
if self.release_managers is None:
|
if self.release_managers is None:
|
||||||
|
@ -211,7 +211,7 @@ maintainer/bugowner did not yet find the time to look into the
|
|||||||
matter and he/she would certainly appreciate help to get this
|
matter and he/she would certainly appreciate help to get this
|
||||||
sorted.
|
sorted.
|
||||||
|
|
||||||
""" % { 'project': project }
|
""" % { 'project': project}
|
||||||
for pkg in ProjectComplainList:
|
for pkg in ProjectComplainList:
|
||||||
text += "- %s\n" % pkg
|
text += "- %s\n" % pkg
|
||||||
text += u"""
|
text += u"""
|
||||||
@ -220,7 +220,7 @@ package(s) are going to be removed from %(project)s.
|
|||||||
|
|
||||||
Kind regards,
|
Kind regards,
|
||||||
%(sender)s
|
%(sender)s
|
||||||
""" % { 'project': project, 'sender': sender }
|
""" % { 'project': project, 'sender': sender}
|
||||||
SendMail(logger, project, sender, to, fullname, subject, text)
|
SendMail(logger, project, sender, to, fullname, subject, text)
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ class MaintenanceChecker(ReviewBot.ReviewBot):
|
|||||||
self.logger.debug("%s looks wrong as maintainer, skipped", prj)
|
self.logger.debug("%s looks wrong as maintainer, skipped", prj)
|
||||||
continue
|
continue
|
||||||
self.add_review(req, by_project = prj, by_package = pkg,
|
self.add_review(req, by_project = prj, by_package = pkg,
|
||||||
msg = 'Submission for {} by someone who is not maintainer in the devel project ({}). Please review'.format(pkg, prj) )
|
msg = 'Submission for {} by someone who is not maintainer in the devel project ({}). Please review'.format(pkg, prj))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@memoize(session=True)
|
@memoize(session=True)
|
||||||
@ -157,4 +157,4 @@ class MaintenanceChecker(ReviewBot.ReviewBot):
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app = ReviewBot.CommandLineInterface()
|
app = ReviewBot.CommandLineInterface()
|
||||||
app.clazz = MaintenanceChecker
|
app.clazz = MaintenanceChecker
|
||||||
sys.exit( app.main() )
|
sys.exit( app.main())
|
||||||
|
@ -272,7 +272,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def suppresses_whitelist_warnings( self, source_project, source_package ):
|
def suppresses_whitelist_warnings( self, source_project, source_package):
|
||||||
# checks if there's a rpmlintrc that suppresses warnings that we check
|
# checks if there's a rpmlintrc that suppresses warnings that we check
|
||||||
found_entries = set()
|
found_entries = set()
|
||||||
contents = source_file_load(self.apiurl, source_project, source_package, source_package + '-rpmlintrc')
|
contents = source_file_load(self.apiurl, source_project, source_package, source_package + '-rpmlintrc')
|
||||||
@ -295,7 +295,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
|||||||
|
|
||||||
return found_entries
|
return found_entries
|
||||||
|
|
||||||
def has_whitelist_warnings( self, source_project, source_package, target_project, target_package ):
|
def has_whitelist_warnings( self, source_project, source_package, target_project, target_package):
|
||||||
# this checks if this is a submit to an product project and it has warnings for non-whitelisted permissions/files
|
# this checks if this is a submit to an product project and it has warnings for non-whitelisted permissions/files
|
||||||
found_entries = set()
|
found_entries = set()
|
||||||
url = osc.core.makeurl(self.apiurl, ['build', target_project])
|
url = osc.core.makeurl(self.apiurl, ['build', target_project])
|
||||||
|
@ -21,8 +21,8 @@ class FactorySourceChecker(ReviewBot.ReviewBot):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
ReviewBot.ReviewBot.__init__(self, *args, **kwargs)
|
ReviewBot.ReviewBot.__init__(self, *args, **kwargs)
|
||||||
self.factory = [ "openSUSE:Factory" ]
|
self.factory = [ "openSUSE:Factory"]
|
||||||
self.review_messages = { 'accepted': 'ok', 'declined': 'the package needs to be accepted in Factory first' }
|
self.review_messages = { 'accepted': 'ok', 'declined': 'the package needs to be accepted in Factory first'}
|
||||||
self.history_limit = 5
|
self.history_limit = 5
|
||||||
|
|
||||||
def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package):
|
def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package):
|
||||||
@ -165,4 +165,4 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app = CommandLineInterface()
|
app = CommandLineInterface()
|
||||||
sys.exit( app.main() )
|
sys.exit( app.main())
|
||||||
|
@ -18,7 +18,7 @@ class TagChecker(ReviewBot.ReviewBot):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(TagChecker, self).__init__(*args, **kwargs)
|
super(TagChecker, self).__init__(*args, **kwargs)
|
||||||
self.factory = [ "openSUSE:Factory" ]
|
self.factory = [ "openSUSE:Factory"]
|
||||||
self.review_messages['declined'] = """
|
self.review_messages['declined'] = """
|
||||||
(This is a script, so report bugs)
|
(This is a script, so report bugs)
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
|
|||||||
bot = ReviewBot.CommandLineInterface.setup_checker(self)
|
bot = ReviewBot.CommandLineInterface.setup_checker(self)
|
||||||
|
|
||||||
if self.options.factory:
|
if self.options.factory:
|
||||||
bot.factory = [ self.options.factory ]
|
bot.factory = [ self.options.factory]
|
||||||
|
|
||||||
return bot
|
return bot
|
||||||
|
|
||||||
|
@ -47,11 +47,11 @@ class Fetcher(object):
|
|||||||
self.projects.append(Project(self, name, kwargs))
|
self.projects.append(Project(self, name, kwargs))
|
||||||
|
|
||||||
def build_summary(self, project, repository):
|
def build_summary(self, project, repository):
|
||||||
url = makeurl(self.apiurl, ['build', project, '_result'], { 'repository': repository, 'view': 'summary' })
|
url = makeurl(self.apiurl, ['build', project, '_result'], { 'repository': repository, 'view': 'summary'})
|
||||||
try:
|
try:
|
||||||
f = http_GET(url)
|
f = http_GET(url)
|
||||||
except HTTPError:
|
except HTTPError:
|
||||||
return { 'building': -1 }
|
return { 'building': -1}
|
||||||
root = ET.parse(f).getroot()
|
root = ET.parse(f).getroot()
|
||||||
failed = 0
|
failed = 0
|
||||||
unresolvable = 0
|
unresolvable = 0
|
||||||
@ -85,7 +85,7 @@ class Fetcher(object):
|
|||||||
return { 'building': 10000 - int(building * 10000 / (building + failed + succeeded + broken)),
|
return { 'building': 10000 - int(building * 10000 / (building + failed + succeeded + broken)),
|
||||||
'failed': failed,
|
'failed': failed,
|
||||||
'broken': broken,
|
'broken': broken,
|
||||||
'unresolvable': unresolvable }
|
'unresolvable': unresolvable}
|
||||||
|
|
||||||
def generate_all_archs(self, project):
|
def generate_all_archs(self, project):
|
||||||
meta = ET.fromstringlist(show_project_meta(self.apiurl, project))
|
meta = ET.fromstringlist(show_project_meta(self.apiurl, project))
|
||||||
|
@ -85,7 +85,7 @@ class ChangeLogger(cmdln.Cmdln):
|
|||||||
if srpm in changelogs:
|
if srpm in changelogs:
|
||||||
changelogs[srpm]['packages'].append(binrpm)
|
changelogs[srpm]['packages'].append(binrpm)
|
||||||
else:
|
else:
|
||||||
data = { 'packages': [ binrpm ] }
|
data = { 'packages': [ binrpm]}
|
||||||
data['changelogtime'] = h['changelogtime']
|
data['changelogtime'] = h['changelogtime']
|
||||||
data['changelogtext'] = h['changelogtext']
|
data['changelogtext'] = h['changelogtext']
|
||||||
for (t, txt) in enumerate(data['changelogtext']):
|
for (t, txt) in enumerate(data['changelogtext']):
|
||||||
@ -104,7 +104,7 @@ class ChangeLogger(cmdln.Cmdln):
|
|||||||
|
|
||||||
# On Tumbleweed, there is no '/suse' prefix
|
# On Tumbleweed, there is no '/suse' prefix
|
||||||
for path in ['/suse/x86_64', '/suse/noarch', '/suse/aarch64',
|
for path in ['/suse/x86_64', '/suse/noarch', '/suse/aarch64',
|
||||||
'/suse/s390x', '/x86_64', '/noarch', '/aarch64', '/s390x' ]:
|
'/suse/s390x', '/x86_64', '/noarch', '/aarch64', '/s390x']:
|
||||||
file_stats = iso.readdir(path)
|
file_stats = iso.readdir(path)
|
||||||
if file_stats is None:
|
if file_stats is None:
|
||||||
continue
|
continue
|
||||||
@ -125,7 +125,7 @@ class ChangeLogger(cmdln.Cmdln):
|
|||||||
for pkg in [ os.path.join(root, file) for file in files]:
|
for pkg in [ os.path.join(root, file) for file in files]:
|
||||||
if not pkg.endswith('.rpm'):
|
if not pkg.endswith('.rpm'):
|
||||||
continue
|
continue
|
||||||
h = self.readRpmHeader( pkg )
|
h = self.readRpmHeader( pkg)
|
||||||
_getdata(h)
|
_getdata(h)
|
||||||
else:
|
else:
|
||||||
raise Exception("don't know what to do with %s" % arg)
|
raise Exception("don't know what to do with %s" % arg)
|
||||||
@ -281,4 +281,4 @@ class ChangeLogger(cmdln.Cmdln):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app = ChangeLogger()
|
app = ChangeLogger()
|
||||||
sys.exit( app.main() )
|
sys.exit( app.main())
|
||||||
|
@ -228,7 +228,7 @@ class FccSubmitter(object):
|
|||||||
|
|
||||||
def check_multiple_specfiles(self, project, package):
|
def check_multiple_specfiles(self, project, package):
|
||||||
try:
|
try:
|
||||||
url = makeurl(self.apiurl, ['source', project, package], { 'expand': '1' } )
|
url = makeurl(self.apiurl, ['source', project, package], { 'expand': '1'})
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
if e.code == 404:
|
if e.code == 404:
|
||||||
return None
|
return None
|
||||||
@ -241,7 +241,7 @@ class FccSubmitter(object):
|
|||||||
else:
|
else:
|
||||||
data['linkinfo'] = None
|
data['linkinfo'] = None
|
||||||
|
|
||||||
files = [ entry.get('name').replace('.spec', '') for entry in root.findall('entry') if entry.get('name').endswith('.spec') ]
|
files = [ entry.get('name').replace('.spec', '') for entry in root.findall('entry') if entry.get('name').endswith('.spec')]
|
||||||
data['specs'] = files
|
data['specs'] = files
|
||||||
|
|
||||||
if len(files) > 1:
|
if len(files) > 1:
|
||||||
|
@ -273,7 +273,7 @@ class LegalAuto(ReviewBot.ReviewBot):
|
|||||||
'external_link': tproject}
|
'external_link': tproject}
|
||||||
if revision:
|
if revision:
|
||||||
params['rev'] = revision
|
params['rev'] = revision
|
||||||
old_id = self.pkg_cache.get(package, { None: None }).get(revision, None)
|
old_id = self.pkg_cache.get(package, { None: None}).get(revision, None)
|
||||||
if old_id:
|
if old_id:
|
||||||
return old_id
|
return old_id
|
||||||
|
|
||||||
@ -288,7 +288,7 @@ class LegalAuto(ReviewBot.ReviewBot):
|
|||||||
return None
|
return None
|
||||||
legaldb_id = obj['saved']['id']
|
legaldb_id = obj['saved']['id']
|
||||||
self.logger.debug("PKG {}/{}[{}]->{} is {}".format(sproject, package, revision, tproject, legaldb_id))
|
self.logger.debug("PKG {}/{}[{}]->{} is {}".format(sproject, package, revision, tproject, legaldb_id))
|
||||||
self.pkg_cache[package] = { revision: legaldb_id }
|
self.pkg_cache[package] = { revision: legaldb_id}
|
||||||
if obj['saved']['state'] == 'obsolete':
|
if obj['saved']['state'] == 'obsolete':
|
||||||
url = osc.core.makeurl(self.legaldb, ['packages', 'import', str(legaldb_id)], {
|
url = osc.core.makeurl(self.legaldb, ['packages', 'import', str(legaldb_id)], {
|
||||||
'result': f'Reopened for {tproject}', 'state': 'new',
|
'result': f'Reopened for {tproject}', 'state': 'new',
|
||||||
|
@ -22,7 +22,7 @@ class AcceptCommand(object):
|
|||||||
|
|
||||||
def find_new_requests(self, project):
|
def find_new_requests(self, project):
|
||||||
match = f"state/@name='new' and action/target/@project='{project}'"
|
match = f"state/@name='new' and action/target/@project='{project}'"
|
||||||
url = self.api.makeurl(['search', 'request'], { 'match': match })
|
url = self.api.makeurl(['search', 'request'], { 'match': match})
|
||||||
|
|
||||||
f = http_GET(url)
|
f = http_GET(url)
|
||||||
root = ET.parse(f).getroot()
|
root = ET.parse(f).getroot()
|
||||||
@ -70,7 +70,7 @@ class AcceptCommand(object):
|
|||||||
print('ERROR: Not compatible with force option')
|
print('ERROR: Not compatible with force option')
|
||||||
return False
|
return False
|
||||||
|
|
||||||
self.requests = { 'delete': [], 'submit': [] }
|
self.requests = { 'delete': [], 'submit': []}
|
||||||
staging_packages = {}
|
staging_packages = {}
|
||||||
|
|
||||||
if accept_all_green:
|
if accept_all_green:
|
||||||
@ -104,7 +104,7 @@ class AcceptCommand(object):
|
|||||||
|
|
||||||
# we have checked ourselves and accepting one staging project creates a race
|
# we have checked ourselves and accepting one staging project creates a race
|
||||||
# for the other staging projects to appear building again
|
# for the other staging projects to appear building again
|
||||||
opts = { 'force': '1' }
|
opts = { 'force': '1'}
|
||||||
|
|
||||||
print('triggering staging accepts...')
|
print('triggering staging accepts...')
|
||||||
for project in staging_packages.keys():
|
for project in staging_packages.keys():
|
||||||
|
@ -1271,6 +1271,6 @@ def message_suffix(action, message=None):
|
|||||||
|
|
||||||
|
|
||||||
def request_state_change(apiurl, request_id, state):
|
def request_state_change(apiurl, request_id, state):
|
||||||
query = { 'newstate': state, 'cmd': 'changestate' }
|
query = { 'newstate': state, 'cmd': 'changestate'}
|
||||||
url = makeurl(apiurl, ['request', request_id], query)
|
url = makeurl(apiurl, ['request', request_id], query)
|
||||||
return ET.parse(http_POST(url)).getroot().get('code')
|
return ET.parse(http_POST(url)).getroot().get('code')
|
||||||
|
@ -198,13 +198,13 @@ def config_resolve_create_workarounds(config, values_workaround, origins_skip):
|
|||||||
|
|
||||||
values_new = deepcopy(values)
|
values_new = deepcopy(values)
|
||||||
values_new.update(values_workaround)
|
values_new.update(values_workaround)
|
||||||
origins.insert(i, { origin_new: values_new })
|
origins.insert(i, { origin_new: values_new})
|
||||||
|
|
||||||
|
|
||||||
def config_resolve_create_family(apiurl, project, config, position, origin, values):
|
def config_resolve_create_family(apiurl, project, config, position, origin, values):
|
||||||
projects = project_list_family_prior_pattern(apiurl, origin, project)
|
projects = project_list_family_prior_pattern(apiurl, origin, project)
|
||||||
for origin_expanded in reversed(projects):
|
for origin_expanded in reversed(projects):
|
||||||
config['origins'].insert(position, { str(origin_expanded): values })
|
config['origins'].insert(position, { str(origin_expanded): values})
|
||||||
|
|
||||||
|
|
||||||
def config_resolve_apply(config, values_apply, key=None, workaround=False, until=None):
|
def config_resolve_apply(config, values_apply, key=None, workaround=False, until=None):
|
||||||
|
@ -21,7 +21,7 @@ class PrioCommand(object):
|
|||||||
req = osc.core.get_request(self.api.apiurl, reqid)
|
req = osc.core.get_request(self.api.apiurl, reqid)
|
||||||
if req.priority == priority:
|
if req.priority == priority:
|
||||||
continue
|
continue
|
||||||
query = { 'cmd': 'setpriority', 'priority': priority }
|
query = { 'cmd': 'setpriority', 'priority': priority}
|
||||||
url = osc.core.makeurl(self.api.apiurl, ['request', reqid], query)
|
url = osc.core.makeurl(self.api.apiurl, ['request', reqid], query)
|
||||||
print(f"raising priority of {r.get('package')} [{r.get('request')}] to {priority}")
|
print(f"raising priority of {r.get('package')} [{r.get('request')}] to {priority}")
|
||||||
try:
|
try:
|
||||||
|
@ -160,7 +160,7 @@ class RequestFinder(object):
|
|||||||
This function is only called for its side effect.
|
This function is only called for its side effect.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1 })
|
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1})
|
||||||
status = ET.parse(self.api.retried_GET(url)).getroot()
|
status = ET.parse(self.api.retried_GET(url)).getroot()
|
||||||
|
|
||||||
for p in pkgs:
|
for p in pkgs:
|
||||||
@ -180,7 +180,7 @@ class RequestFinder(object):
|
|||||||
all requests staged in it
|
all requests staged in it
|
||||||
"""
|
"""
|
||||||
project = self.api.prj_from_short(project)
|
project = self.api.prj_from_short(project)
|
||||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects', project], { 'requests': 1 })
|
url = self.api.makeurl(['staging', self.api.project, 'staging_projects', project], { 'requests': 1})
|
||||||
try:
|
try:
|
||||||
staging = ET.parse(self.api.retried_GET(url)).getroot()
|
staging = ET.parse(self.api.retried_GET(url)).getroot()
|
||||||
except HTTPError:
|
except HTTPError:
|
||||||
|
@ -229,7 +229,7 @@ class RequestSplitter(object):
|
|||||||
'project': project,
|
'project': project,
|
||||||
'bootstrapped': bootstrapped,
|
'bootstrapped': bootstrapped,
|
||||||
# TODO: find better place for splitter info
|
# TODO: find better place for splitter info
|
||||||
'splitter_info': { 'strategy': { 'name': 'none' } },
|
'splitter_info': { 'strategy': { 'name': 'none'}},
|
||||||
'status': status
|
'status': status
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ class SelectCommand(object):
|
|||||||
package = self._package(request)
|
package = self._package(request)
|
||||||
|
|
||||||
candidates = [] # Store candidates to be supersede by 'request'
|
candidates = [] # Store candidates to be supersede by 'request'
|
||||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1 })
|
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1})
|
||||||
status = ET.parse(self.api.retried_GET(url)).getroot()
|
status = ET.parse(self.api.retried_GET(url)).getroot()
|
||||||
for prj in status.findall('staging_project'):
|
for prj in status.findall('staging_project'):
|
||||||
for req in prj.findall('./staged_requests/request'):
|
for req in prj.findall('./staged_requests/request'):
|
||||||
|
@ -247,7 +247,7 @@ class StagingAPI(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
packages_staged = {}
|
packages_staged = {}
|
||||||
url = self.makeurl(['staging', self.project, 'staging_projects'], { 'requests': 1 })
|
url = self.makeurl(['staging', self.project, 'staging_projects'], { 'requests': 1})
|
||||||
status = ET.parse(self.retried_GET(url)).getroot()
|
status = ET.parse(self.retried_GET(url)).getroot()
|
||||||
for prj in status.findall('staging_project'):
|
for prj in status.findall('staging_project'):
|
||||||
for req in prj.findall('./staged_requests/request'):
|
for req in prj.findall('./staged_requests/request'):
|
||||||
@ -566,13 +566,13 @@ class StagingAPI(object):
|
|||||||
def add_ignored_request(self, request_id, comment):
|
def add_ignored_request(self, request_id, comment):
|
||||||
url = self.makeurl(['staging', self.project, 'excluded_requests'])
|
url = self.makeurl(['staging', self.project, 'excluded_requests'])
|
||||||
root = ET.Element('excluded_requests')
|
root = ET.Element('excluded_requests')
|
||||||
ET.SubElement(root, 'request', { 'id': str(request_id), 'description': comment })
|
ET.SubElement(root, 'request', { 'id': str(request_id), 'description': comment})
|
||||||
http_POST(url, data=ET.tostring(root))
|
http_POST(url, data=ET.tostring(root))
|
||||||
|
|
||||||
def del_ignored_request(self, request_id):
|
def del_ignored_request(self, request_id):
|
||||||
url = self.makeurl(['staging', self.project, 'excluded_requests'])
|
url = self.makeurl(['staging', self.project, 'excluded_requests'])
|
||||||
root = ET.Element('excluded_requests')
|
root = ET.Element('excluded_requests')
|
||||||
ET.SubElement(root, 'request', { 'id': str(request_id) })
|
ET.SubElement(root, 'request', { 'id': str(request_id)})
|
||||||
http_DELETE(url, data=ET.tostring(root))
|
http_DELETE(url, data=ET.tostring(root))
|
||||||
|
|
||||||
@memoize(session=True, add_invalidate=True)
|
@memoize(session=True, add_invalidate=True)
|
||||||
@ -592,7 +592,7 @@ class StagingAPI(object):
|
|||||||
where = "@by_group='{}' and @state='new'".format(self.cstaging_group)
|
where = "@by_group='{}' and @state='new'".format(self.cstaging_group)
|
||||||
target = "target[@project='{}']".format(self.project)
|
target = "target[@project='{}']".format(self.project)
|
||||||
|
|
||||||
query = {'match': f"state/@name='review' and review[{where}] and {target}" }
|
query = {'match': f"state/@name='review' and review[{where}] and {target}"}
|
||||||
if query_extra is not None:
|
if query_extra is not None:
|
||||||
query.update(query_extra)
|
query.update(query_extra)
|
||||||
url = self.makeurl(['search', 'request'], query)
|
url = self.makeurl(['search', 'request'], query)
|
||||||
@ -957,7 +957,7 @@ class StagingAPI(object):
|
|||||||
if not project:
|
if not project:
|
||||||
project = self.project
|
project = self.project
|
||||||
|
|
||||||
url = self.makeurl(['source', project, package], { 'cmd': 'showlinked' })
|
url = self.makeurl(['source', project, package], { 'cmd': 'showlinked'})
|
||||||
f = http_POST(url)
|
f = http_POST(url)
|
||||||
root = ET.parse(f).getroot()
|
root = ET.parse(f).getroot()
|
||||||
result = []
|
result = []
|
||||||
@ -984,7 +984,7 @@ class StagingAPI(object):
|
|||||||
# now trigger wipebinaries to emulate a delete
|
# now trigger wipebinaries to emulate a delete
|
||||||
self._wipe_package(project, package)
|
self._wipe_package(project, package)
|
||||||
|
|
||||||
url = self.makeurl(['source', project, package], { 'view': 'getmultibuild' })
|
url = self.makeurl(['source', project, package], { 'view': 'getmultibuild'})
|
||||||
f = http_GET(url)
|
f = http_GET(url)
|
||||||
root = ET.parse(f).getroot()
|
root = ET.parse(f).getroot()
|
||||||
for entry in root.findall('entry'):
|
for entry in root.findall('entry'):
|
||||||
@ -1148,7 +1148,7 @@ class StagingAPI(object):
|
|||||||
return status.tag
|
return status.tag
|
||||||
|
|
||||||
def switch_flag_in_prj(self, project, flag='build', state='disable', repository=None, arch=None):
|
def switch_flag_in_prj(self, project, flag='build', state='disable', repository=None, arch=None):
|
||||||
query = { 'cmd': 'set_flag', 'flag': flag, 'status': state }
|
query = { 'cmd': 'set_flag', 'flag': flag, 'status': state}
|
||||||
if repository:
|
if repository:
|
||||||
query['repository'] = repository
|
query['repository'] = repository
|
||||||
if arch:
|
if arch:
|
||||||
|
@ -158,7 +158,7 @@ def mail_send_with_details(relay, sender, subject, to, text, xmailer=None, follo
|
|||||||
return
|
return
|
||||||
logger.info("%s: %s", msg['To'], msg['Subject'])
|
logger.info("%s: %s", msg['To'], msg['Subject'])
|
||||||
s = smtplib.SMTP(relay)
|
s = smtplib.SMTP(relay)
|
||||||
s.sendmail(msg['From'], {msg['To'], sender }, msg.as_string())
|
s.sendmail(msg['From'], {msg['To'], sender}, msg.as_string())
|
||||||
s.quit()
|
s.quit()
|
||||||
|
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ class RepoChecker():
|
|||||||
|
|
||||||
query = {'cmd': 'rebuild', 'repository': repository, 'arch': arch, 'package': rebuilds}
|
query = {'cmd': 'rebuild', 'repository': repository, 'arch': arch, 'package': rebuilds}
|
||||||
url = makeurl(self.apiurl, ['build', project])
|
url = makeurl(self.apiurl, ['build', project])
|
||||||
headers = { 'Content-Type': 'application/x-www-form-urlencoded' }
|
headers = { 'Content-Type': 'application/x-www-form-urlencoded'}
|
||||||
http_request('POST', url, headers, data=urlencode(query, doseq=True))
|
http_request('POST', url, headers, data=urlencode(query, doseq=True))
|
||||||
|
|
||||||
self.store_yaml(oldstate, project, repository, arch)
|
self.store_yaml(oldstate, project, repository, arch)
|
||||||
|
@ -431,7 +431,7 @@ class StagingWorkflow(ABC):
|
|||||||
root = ET.fromstring(meta)
|
root = ET.fromstring(meta)
|
||||||
persons = ET.SubElement(root, 'person')
|
persons = ET.SubElement(root, 'person')
|
||||||
for user in users:
|
for user in users:
|
||||||
ET.SubElement(persons, 'person', {'userid': user} )
|
ET.SubElement(persons, 'person', {'userid': user})
|
||||||
meta = ET.tostring(root)
|
meta = ET.tostring(root)
|
||||||
|
|
||||||
if name not in self.groups:
|
if name not in self.groups:
|
||||||
@ -855,20 +855,20 @@ class Project(object):
|
|||||||
|
|
||||||
root = ET.fromstring(meta)
|
root = ET.fromstring(meta)
|
||||||
for group in reviewer.get('groups', []):
|
for group in reviewer.get('groups', []):
|
||||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'reviewer'} )
|
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'reviewer'})
|
||||||
for group in reviewer.get('users', []):
|
for group in reviewer.get('users', []):
|
||||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'reviewer'} )
|
ET.SubElement(root, 'person', { 'userid': group, 'role': 'reviewer'})
|
||||||
# TODO: avoid this duplication
|
# TODO: avoid this duplication
|
||||||
for group in maintainer.get('groups', []):
|
for group in maintainer.get('groups', []):
|
||||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'maintainer'} )
|
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'maintainer'})
|
||||||
for group in maintainer.get('users', []):
|
for group in maintainer.get('users', []):
|
||||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'maintainer'} )
|
ET.SubElement(root, 'person', { 'userid': group, 'role': 'maintainer'})
|
||||||
|
|
||||||
for link in project_links:
|
for link in project_links:
|
||||||
ET.SubElement(root, 'link', { 'project': link })
|
ET.SubElement(root, 'link', { 'project': link})
|
||||||
|
|
||||||
if with_repo:
|
if with_repo:
|
||||||
repo = ET.SubElement(root, 'repository', { 'name': 'standard' })
|
repo = ET.SubElement(root, 'repository', { 'name': 'standard'})
|
||||||
ET.SubElement(repo, 'arch').text = 'x86_64'
|
ET.SubElement(repo, 'arch').text = 'x86_64'
|
||||||
|
|
||||||
self.custom_meta(ET.tostring(root))
|
self.custom_meta(ET.tostring(root))
|
||||||
@ -894,8 +894,8 @@ class Project(object):
|
|||||||
:rtype: dict[str, dict or list(str) or bool]
|
:rtype: dict[str, dict or list(str) or bool]
|
||||||
"""
|
"""
|
||||||
meta = {
|
meta = {
|
||||||
'reviewer': { 'groups': [], 'users': [] },
|
'reviewer': { 'groups': [], 'users': []},
|
||||||
'maintainer': { 'groups': [], 'users': [] },
|
'maintainer': { 'groups': [], 'users': []},
|
||||||
'project_links': [],
|
'project_links': [],
|
||||||
'with_repo': False
|
'with_repo': False
|
||||||
}
|
}
|
||||||
@ -992,7 +992,7 @@ class Package(object):
|
|||||||
|
|
||||||
if devel_project:
|
if devel_project:
|
||||||
root = ET.fromstring(meta)
|
root = ET.fromstring(meta)
|
||||||
ET.SubElement(root, 'devel', { 'project': devel_project })
|
ET.SubElement(root, 'devel', { 'project': devel_project})
|
||||||
meta = ET.tostring(root)
|
meta = ET.tostring(root)
|
||||||
|
|
||||||
url = osc.core.make_meta_url('pkg', (self.project.name, self.name), APIURL)
|
url = osc.core.make_meta_url('pkg', (self.project.name, self.name), APIURL)
|
||||||
|
@ -33,7 +33,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
|||||||
self.wf.create_group(REVIEW_TEAM)
|
self.wf.create_group(REVIEW_TEAM)
|
||||||
|
|
||||||
self.wf.remote_config_set(
|
self.wf.remote_config_set(
|
||||||
{ 'required-source-maintainer': 'Admin', 'review-team': REVIEW_TEAM }
|
{ 'required-source-maintainer': 'Admin', 'review-team': REVIEW_TEAM}
|
||||||
)
|
)
|
||||||
|
|
||||||
self.bot_user = 'factory-auto'
|
self.bot_user = 'factory-auto'
|
||||||
@ -142,7 +142,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
|||||||
|
|
||||||
# Change the required maintainer
|
# Change the required maintainer
|
||||||
self.wf.create_group(FACTORY_MAINTAINERS.replace('group:', ''))
|
self.wf.create_group(FACTORY_MAINTAINERS.replace('group:', ''))
|
||||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS })
|
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS})
|
||||||
|
|
||||||
req = self.wf.create_submit_request(SRC_PROJECT, 'blowfish', add_commit = False)
|
req = self.wf.create_submit_request(SRC_PROJECT, 'blowfish', add_commit = False)
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
|||||||
"""Accepts the request when the 'required_maintainer' is a group and is a maintainer for the project"""
|
"""Accepts the request when the 'required_maintainer' is a group and is a maintainer for the project"""
|
||||||
group_name = FACTORY_MAINTAINERS.replace('group:', '')
|
group_name = FACTORY_MAINTAINERS.replace('group:', '')
|
||||||
self.wf.create_group(group_name)
|
self.wf.create_group(group_name)
|
||||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS })
|
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS})
|
||||||
|
|
||||||
self._setup_devel_project(maintainer={'groups': [group_name]})
|
self._setup_devel_project(maintainer={'groups': [group_name]})
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
|||||||
# Change the required maintainer
|
# Change the required maintainer
|
||||||
group_name = FACTORY_MAINTAINERS.replace('group:', '')
|
group_name = FACTORY_MAINTAINERS.replace('group:', '')
|
||||||
self.wf.create_group(group_name)
|
self.wf.create_group(group_name)
|
||||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS })
|
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS})
|
||||||
|
|
||||||
self.wf.create_project(SRC_PROJECT.rsplit(':', 1)[0], maintainer={'groups': [group_name]})
|
self.wf.create_project(SRC_PROJECT.rsplit(':', 1)[0], maintainer={'groups': [group_name]})
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ class TestFactorySourceAccept(OBSLocal.TestCase):
|
|||||||
""")
|
""")
|
||||||
])
|
])
|
||||||
|
|
||||||
result = { 'status': None }
|
result = { 'status': None}
|
||||||
|
|
||||||
def change_request(result, method, uri, headers):
|
def change_request(result, method, uri, headers):
|
||||||
query = parse_qs(urlparse(uri).query)
|
query = parse_qs(urlparse(uri).query)
|
||||||
@ -275,7 +275,7 @@ class TestFactorySourceAccept(OBSLocal.TestCase):
|
|||||||
</collection>
|
</collection>
|
||||||
""")
|
""")
|
||||||
|
|
||||||
result = { 'factory_source_declined': None }
|
result = { 'factory_source_declined': None}
|
||||||
|
|
||||||
def change_request(result, method, uri, headers):
|
def change_request(result, method, uri, headers):
|
||||||
query = parse_qs(urlparse(uri).query)
|
query = parse_qs(urlparse(uri).query)
|
||||||
|
@ -108,7 +108,7 @@ class TestMaintenance(OBSLocal.TestCase):
|
|||||||
</directory>
|
</directory>
|
||||||
""")
|
""")
|
||||||
|
|
||||||
result = { 'devel_review_added': None }
|
result = { 'devel_review_added': None}
|
||||||
|
|
||||||
def change_request(result, method, uri, headers):
|
def change_request(result, method, uri, headers):
|
||||||
query = parse_qs(urlparse(uri).query)
|
query = parse_qs(urlparse(uri).query)
|
||||||
@ -226,7 +226,7 @@ class TestMaintenance(OBSLocal.TestCase):
|
|||||||
</directory>
|
</directory>
|
||||||
""")
|
""")
|
||||||
|
|
||||||
result = { 'devel_review_added': None }
|
result = { 'devel_review_added': None}
|
||||||
|
|
||||||
def change_request(result, method, uri, headers):
|
def change_request(result, method, uri, headers):
|
||||||
u = urlparse(uri)
|
u = urlparse(uri)
|
||||||
@ -324,11 +324,11 @@ class TestMaintenance(OBSLocal.TestCase):
|
|||||||
<collection/>
|
<collection/>
|
||||||
""")
|
""")
|
||||||
|
|
||||||
result = { 'factory_review_added': None }
|
result = { 'factory_review_added': None}
|
||||||
|
|
||||||
def change_request(result, method, uri, headers):
|
def change_request(result, method, uri, headers):
|
||||||
query = parse_qs(urlparse(uri).query)
|
query = parse_qs(urlparse(uri).query)
|
||||||
if query == { 'cmd': ['addreview'], 'by_user': ['factory-source'] }:
|
if query == { 'cmd': ['addreview'], 'by_user': ['factory-source']}:
|
||||||
result['factory_review_added'] = True
|
result['factory_review_added'] = True
|
||||||
return (200, headers, '<status code="ok"/>')
|
return (200, headers, '<status code="ok"/>')
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ class TestOrigin(OBSLocal.TestCase):
|
|||||||
self.origin_config_write([
|
self.origin_config_write([
|
||||||
{'<devel>': {}},
|
{'<devel>': {}},
|
||||||
{upstream1_project: {}},
|
{upstream1_project: {}},
|
||||||
{upstream2_project: { 'pending_submission_consider': True }},
|
{upstream2_project: { 'pending_submission_consider': True}},
|
||||||
{'*~': {}},
|
{'*~': {}},
|
||||||
], {'unknown_origin_wait': True})
|
], {'unknown_origin_wait': True})
|
||||||
|
|
||||||
@ -385,8 +385,8 @@ class TestOrigin(OBSLocal.TestCase):
|
|||||||
attribute_value_save(self.wf.apiurl, upstream3_project, 'ApprovedRequestSource', '', 'OBS')
|
attribute_value_save(self.wf.apiurl, upstream3_project, 'ApprovedRequestSource', '', 'OBS')
|
||||||
|
|
||||||
self.origin_config_write([
|
self.origin_config_write([
|
||||||
{upstream1_project: { 'automatic_updates_initial': True }},
|
{upstream1_project: { 'automatic_updates_initial': True}},
|
||||||
{upstream2_project: { 'automatic_updates_initial': True }},
|
{upstream2_project: { 'automatic_updates_initial': True}},
|
||||||
{upstream3_project: {}},
|
{upstream3_project: {}},
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ class ToTestPublisher(ToTestManager):
|
|||||||
return
|
return
|
||||||
|
|
||||||
status_flag = 'published'
|
status_flag = 'published'
|
||||||
data = {'text': 'tag:{}:{}:{}'.format(snapshot, status_flag, status_flag) }
|
data = {'text': 'tag:{}:{}:{}'.format(snapshot, status_flag, status_flag)}
|
||||||
self.openqa.openqa_request('POST', 'groups/%s/comments' % group_id, data=data)
|
self.openqa.openqa_request('POST', 'groups/%s/comments' % group_id, data=data)
|
||||||
|
|
||||||
def openqa_group_id(self):
|
def openqa_group_id(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user