This is the mail archive of the cygwin-apps-cvs mailing list for the cygwin-apps project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[calm] branch master, updated. 7d1d56da2af457eff0389fa57128174a86b1abf1




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=7d1d56da2af457eff0389fa57128174a86b1abf1

commit 7d1d56da2af457eff0389fa57128174a86b1abf1
Author: Jon Turney <jon.turney@dronecode.org.uk>
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' \;")


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]