From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27716 invoked by alias); 17 Mar 2016 14:18:30 -0000 Mailing-List: contact cygwin-apps-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cygwin-apps-cvs-owner@sourceware.org Received: (qmail 27620 invoked by uid 9795); 17 Mar 2016 14:18:29 -0000 Date: Thu, 17 Mar 2016 14:18:00 -0000 Message-ID: <20160317141829.27587.qmail@sourceware.org> From: jturney@sourceware.org To: cygwin-apps-cvs@sourceware.org Subject: [calm] branch master, updated. 7d1d56da2af457eff0389fa57128174a86b1abf1 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: b23d8c93aa282b7e62a481080f1e15f82655c0b4 X-Git-Newrev: 7d1d56da2af457eff0389fa57128174a86b1abf1 X-SW-Source: 2016-q1/txt/msg00040.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=7d1d56da2af457eff0389fa57128174a86b1abf1 commit 7d1d56da2af457eff0389fa57128174a86b1abf1 Author: Jon Turney Date: Thu Mar 17 11:23:32 2016 +0000 Fix package delete Also add a test of package-set operations Diff: --- package.py | 3 +- testdata/.gitignore | 1 + testdata/inifile/setup.ini.expected | 182 +++++++++++++++++++++++++++++++++++ tests.py | 27 +++++ 4 files changed, 212 insertions(+), 1 deletions(-) diff --git a/package.py b/package.py index 9675a19..27fae03 100755 --- a/package.py +++ b/package.py @@ -611,10 +611,11 @@ def merge(a, b): def delete(packages, path, fn): for p in packages: - if p.relpath == path: + if packages[p].path == path: for t in packages[p].tars: if t == fn: del packages[p].tars[t] + break # diff --git a/testdata/.gitignore b/testdata/.gitignore index 5e6240e..22f46b8 100644 --- a/testdata/.gitignore +++ b/testdata/.gitignore @@ -1,5 +1,6 @@ htdocs results *.results +setup.ini sha512.sum \!ready diff --git a/testdata/inifile/setup.ini.expected b/testdata/inifile/setup.ini.expected new file mode 100644 index 0000000..0cdb520 --- /dev/null +++ b/testdata/inifile/setup.ini.expected @@ -0,0 +1,182 @@ +('# This file is automatically generated. If you edit it, your\n' + '# edits will be discarded next time the file is generated.\n' + '# See http://cygwin.com/setup.html for details.\n' + '#\n' + 'release: testing\n' + 'arch: x86\n' + 'setup-timestamp: 1458221800\n' + 'setup-version: 4.321\n' + '\n' + '@ arc\n' + 'sdesc: "The ARC archive utility"\n' + 'ldesc: "This program is based on the MSDOS ARC program, version 5.21, plus a\n' + 'few enhancements. ARC performs Huffman Squeezing on data. The Huffman\n' + 'Squeeze algorithm was removed from MSDOS ARC after version 5.12. It\n' + 'turns out to be more efficient than Lempel-Ziv style compression when\n' + 'compressing graphic images. Squeeze analysis is always done now, and\n' + 'the best of packing, squeezing, or crunching is used."\n' + 'category: Archive\n' + 'version: 4.32.7-10\n' + 'install: x86/release/arc/arc-4.32.7-10.tar.bz2 14 ' + '6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348\n' + 'source: x86/release/arc/arc-4.32.7-10-src.tar.bz2 14 ' + '6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348\n' + '\n' + '@ base-cygwin\n' + 'sdesc: "Initial base installation helper script."\n' + 'ldesc: "Initial base installation helper script."\n' + 'category: Base\n' + 'version: 3.8-1\n' + 'install: x86/release/base-cygwin/base-cygwin-3.8-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[prev]\n' + 'version: 3.6-1\n' + 'install: x86/release/base-cygwin/base-cygwin-3.6-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '\n' + '@ cygwin\n' + 'sdesc: "The UNIX emulation engine"\n' + 'ldesc: "The UNIX emulation engine"\n' + 'category: Base\n' + 'requires: base-cygwin\n' + 'version: 2.2.1-1\n' + 'install: x86/release/cygwin/cygwin-2.2.1-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.2.1-1-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[prev]\n' + 'version: 2.2.0-1\n' + 'install: x86/release/cygwin/cygwin-2.2.0-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.2.0-1-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[test]\n' + 'version: 2.3.0-0.3\n' + 'install: x86/release/cygwin/cygwin-2.3.0-0.3.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.3.0-0.3-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '\n' + '@ cygwin-debuginfo\n' + 'sdesc: "Debug info for cygwin"\n' + 'ldesc: "This package contains files necessary for debugging the\n' + 'cygwin package with gdb."\n' + 'category: Debug\n' + 'requires: cygwin-debuginfo\n' + 'version: 2.2.1-1\n' + 'install: x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.2.1-1-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[prev]\n' + 'version: 2.2.0-1\n' + 'install: x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.2.0-1-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[test]\n' + 'version: 2.3.0-0.3\n' + 'install: x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.3.0-0.3-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '\n' + '@ cygwin-devel\n' + 'sdesc: "Core development files"\n' + 'ldesc: "Core development files required to build Cygwin packages"\n' + 'category: Devel\n' + 'version: 2.2.1-1\n' + 'install: x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.1-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.2.1-1-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[prev]\n' + 'version: 2.2.0-1\n' + 'install: x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.0-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.2.0-1-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[test]\n' + 'version: 2.3.0-0.3\n' + 'install: x86/release/cygwin/cygwin-devel/cygwin-devel-2.3.0-0.3.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/cygwin/cygwin-2.3.0-0.3-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '\n' + '@ keychain\n' + 'sdesc: "Key manager for OpenSSH"\n' + 'ldesc: "Keychain is an OpenSSH key manager, typically run from\n' + '~/.bash_profile. When keychain is run, it checks for a running\n' + 'ssh-agent, otherwise it starts one. It saves the ssh-agent environment\n' + 'variables to ~/.keychain/$HOSTNAME-sh, so that subsequent logins\n' + 'and non-interactive shells such as cron jobs can source the file and\n' + 'make passwordless ssh connections. In addition, when keychain runs, it\n' + 'verifies that the key files specified on the command-line are known to\n' + 'ssh-agent, otherwise it loads them, prompting you for a password if\n' + 'necessary"\n' + 'category: Utils\n' + 'requires: openssh\n' + 'version: 3.2.0-1\n' + 'install: x86/release/keychain/keychain-3.2.0-1.tar.xz 32 ' + '034b32f1138322638c7a5b7949a3b184c6a4cdfd003360a496c08c56c2cc645c94fbe9cdf9d84c963af6dda6c442717cd61d7e1cecf7024bd463f6f5196c5527\n' + 'source: x86/release/keychain/keychain-3.2.0-1-src.tar.xz 1418708 ' + 'ab811e9636bfc10c21d003818a3e6e614d98ae578a238feb18df9ba25f8fdb18ab1782bfdd09be636617893c62957dd968434004e9ac119d1ec28e8a084f22d9\n' + '[prev]\n' + 'version: 3.1.5-1\n' + 'install: x86/release/keychain/keychain-3.1.5-1.tar.xz 32 ' + '034b32f1138322638c7a5b7949a3b184c6a4cdfd003360a496c08c56c2cc645c94fbe9cdf9d84c963af6dda6c442717cd61d7e1cecf7024bd463f6f5196c5527\n' + 'source: x86/release/keychain/keychain-3.1.5-1-src.tar.xz 1509512 ' + 'b413bd3a28c25266889f089c7cca560d969f8e099c4322d1408945a865b3538f899d9d80a276f92a2357b1553c59a3526a15434d3b2854ff33486ba85c6b024e\n' + '\n' + '@ libdns_sd-devel\n' + 'sdesc: "Bonjour Zeroconf implementation"\n' + 'ldesc: "Bonjour, also known as zero-configuration networking, enables\n' + 'automatic discovery of computers, devices, and services on IP networks using\n' + 'industry standard IP protocols."\n' + 'category: Net\n' + 'requires: libdns_sd1\n' + 'version: 379.32.1-1\n' + 'install: x86/release/mDNSResponder/libdns_sd-devel/libdns_sd-devel-379.32.1-1.tar.bz2 195 ' + 'aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83\n' + 'source: x86/release/mDNSResponder/mDNSResponder-379.32.1-1-src.tar.bz2 195 ' + 'aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83\n' + '\n' + '@ libdns_sd1\n' + 'sdesc: "Bonjour Zeroconf implementation"\n' + 'ldesc: "Bonjour, also known as zero-configuration networking, enables\n' + 'automatic discovery of computers, devices, and services on IP networks using\n' + 'industry standard IP protocols."\n' + 'category: Net\n' + 'version: 379.32.1-1\n' + 'install: x86/release/mDNSResponder/libdns_sd1/libdns_sd1-379.32.1-1.tar.bz2 195 ' + 'aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83\n' + 'source: x86/release/mDNSResponder/mDNSResponder-379.32.1-1-src.tar.bz2 195 ' + 'aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83\n' + '\n' + '@ mDNSResponder\n' + 'sdesc: "Bonjour Zeroconf implementation"\n' + 'ldesc: "Bonjour, also known as zero-configuration networking, enables\n' + 'automatic discovery of computers, devices, and services on IP networks using\n' + 'industry standard IP protocols."\n' + 'category: Net\n' + 'requires: libdns_sd1\n' + 'version: 379.32.1-1\n' + 'install: x86/release/mDNSResponder/mDNSResponder-379.32.1-1.tar.bz2 195 ' + 'aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83\n' + 'source: x86/release/mDNSResponder/mDNSResponder-379.32.1-1-src.tar.bz2 195 ' + 'aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83\n' + 'message: mDNSResponder "The Cygwin mDNSResponder package contains only clients.\n' + "If you do not already have the 'Bonjour Service' installed (it comes with\n" + 'a number of popular Windows programs), then you can download it at\n' + 'http://support.apple.com/kb/DL999"\n' + '\n' + '@ rpm-doc\n' + 'sdesc: "Obsolete package for RPM package management system manual pages"\n' + 'category: _obsolete\n' + 'version: 999-1\n' + 'install: x86/release/rpm-doc/rpm-doc-999-1.tar.bz2 42 ' + '28c70b843fe01d90a3eeab4a3617551d236cd0b7d69668d1b1b6c8b14a9fd050e4039c192894c93bdf31575771c58c1fea2a41c24c8da22d10080d8b032b6369\n' + '[prev]\n' + 'version: 4.1-2\n' + 'install: x86/release/rpm-doc/rpm-doc-4.1-2.tar.bz2 50941 ' + '7cc9db802364252e3206ce9f75c8ca53813d8308a22a425b50ef695dd8e51568740b06739d3aa3399a83fb3d3e1345ab7e2ad03a1e9d47c02dded3363bf4f493\n',) diff --git a/tests.py b/tests.py index f6c2c65..6453337 100755 --- a/tests.py +++ b/tests.py @@ -29,6 +29,7 @@ import filecmp import logging import os import pprint +import re import types import unittest @@ -190,6 +191,32 @@ class TestMain(unittest.TestCase): self.assertCountEqual(remove_always, [f for (f, t) in ready_fns]) compare_with_expected_file(self, 'testdata/uploads', packages, 'pkglist') + def test_package_set(self): + self.maxDiff = None + + args = types.SimpleNamespace() + setattr(args, 'arch', 'x86') + setattr(args, 'dryrun', False) + setattr(args, 'force', True) + setattr(args, 'inifile', 'testdata/inifile/setup.ini') + setattr(args, 'pkglist', 'testdata/pkglist/cygwin-pkg-maint') + setattr(args, 'rel_area', 'testdata') + setattr(args, 'release', 'testing') + setattr(args, 'setup_version', '4.321') + + packages = package.read_packages(args.rel_area, args.arch) + package.delete(packages, 'release/nonexistent', 'nosuchfile-1.0.0.tar.xz') + package.delete(packages, 'release/libtextcat/libtextcat-devel', 'libtextcat-devel-2.2-2.tar.bz2') + package.delete(packages, 'release/libtextcat/libtextcat0', 'libtextcat0-2.2-2.tar.bz2') + package.delete(packages, 'release/proj/proj-debuginfo', 'proj-debuginfo-4.8.0-1.tar.xz') + package.validate_packages(args, packages) + package.write_setup_ini(args, packages) + with open(args.inifile) as inifile: + results = inifile.read() + # fix the timestamp to match expected + results = re.sub('setup-timestamp: .*', 'setup-timestamp: 1458221800', results, 1) + compare_with_expected_file(self, 'testdata/inifile', (results,), 'setup.ini') + if __name__ == '__main__': # ensure sha512.sum files exist os.system("find testdata/x86 -type d -exec sh -c 'cd {} ; sha512sum * >sha512.sum 2>/dev/null' \;")