Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/cygwin-apps/calm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2020-08-20 20:34:20 +0300
committerJon Turney <jon.turney@dronecode.org.uk>2020-08-23 17:52:11 +0300
commit0a29ad572cbe1bcc64fd3624f5c38eee79c50445 (patch)
tree9886394cee0d99a2b97f4a1d7f25268a275bb08a
parent9e95a30e862b8470ee17049f215d794a8863b0e5 (diff)
Add an untest tool
-rw-r--r--calm/untest.py99
-rw-r--r--calm/uploads.py2
2 files changed, 100 insertions, 1 deletions
diff --git a/calm/untest.py b/calm/untest.py
new file mode 100644
index 0000000..b749c15
--- /dev/null
+++ b/calm/untest.py
@@ -0,0 +1,99 @@
+#!/usr/bin/env python3
+#
+# Copyright (c) 2020 Jon Turney
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+
+import argparse
+import logging
+import os
+import re
+import sys
+
+from . import common_constants
+from . import maintainers
+
+
+def untest(pvr):
+ # split name and vr
+ match = re.match(r'^(.+?)-(\d.*)', pvr)
+ if not match:
+ logging.error("unable to extract package and version from '%s'" % (pvr))
+ return
+
+ p = match.group(1)
+ vr = match.group(2)
+
+ # check CYGNAME is a maintainer for package
+ cygname = os.environ['CYGNAME']
+
+ mlist = {}
+ mlist = maintainers.add_packages(mlist, common_constants.PKGMAINT)
+
+ if cygname not in mlist:
+ logging.error("'%s' is not a package maintainer" % (cygname))
+ return
+
+ if p not in mlist[cygname].pkgs:
+ logging.error("package '%s' is not in the package list for maintainer '%s'" % (p, cygname))
+ return
+
+ # remove '^test:' lines from any package and subpackage hints
+ removed = 0
+ total = 0
+ for arch in common_constants.ARCHES + ['noarch']:
+ for (dirpath, _subdirs, files) in os.walk(os.path.join(common_constants.FTP, arch, 'release', p)):
+ for f in files:
+ if re.match(r'.*-' + re.escape(vr) + '(|-src).hint$', f):
+ total = total + 1
+ fn = os.path.join(dirpath, f)
+
+ with open(fn) as fh:
+ content = fh.read()
+
+ if re.search(r'^test:', content, re.MULTILINE):
+ content = re.sub(r'^test:\s*$', '', content, 0, re.MULTILINE)
+
+ with open(fn, 'w') as fh:
+ fh.write(content)
+
+ logging.info("Removed test: label from %s" % os.path.relpath(fn, common_constants.FTP))
+ removed = removed + 1
+
+ if removed == 0:
+ logging.error("'%s' is not marked test" % pvr)
+ else:
+ logging.info("%d out of %d hints for '%s' version '%s' modified" % (removed, total, p, vr))
+
+
+def main():
+ parser = argparse.ArgumentParser(description='test hint remover')
+ parser.add_argument('package', nargs='*', metavar='PACKAGE')
+ (args) = parser.parse_args()
+
+ logging.getLogger().setLevel(logging.INFO)
+ logging.basicConfig(format='untest: %(message)s')
+
+ for p in args.package:
+ untest(p)
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/calm/uploads.py b/calm/uploads.py
index 388e089..2f4bb87 100644
--- a/calm/uploads.py
+++ b/calm/uploads.py
@@ -143,7 +143,7 @@ def scan(m, all_packages, arch, args):
# only process packages for which we are listed as a maintainer
if not package.is_in_package_list(pkgpath, m.pkgs):
- logging.warning("package '%s' is not in the package list for maintainer %s" % (relpath, m.name))
+ logging.warning("package '%s' is not in the package list for maintainer '%s'" % (relpath, m.name))
continue
# see if we can fix-up any setup.hint files