[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20181020-18-g2424e77

jturney-9JcytcrH/[email protected]
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>


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

commit 2424e774b56929f998f01a2f6d3f2178497badf7
Author: Jon Turney <[email protected]>
Date:   Fri Mar 2 22:23:30 2018 +0000

    Update hint parsing tests
    
    Use a separate expected file for each pvr.hint
    Add testing of override.hint parsing

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

commit 0e4848b3bbfeffad63bc4c29a5c5f05682911e59
Author: Jon Turney <[email protected]>
Date:   Thu Mar 1 16:13:01 2018 +0000

    Remove reading setup.hint files


Diff:
---
 calm/hint.py                                       |   53 ++++---------
 calm/package.py                                    |   51 +-----------
 calm/uploads.py                                    |    3 -
 test/test_calm.py                                  |   22 ++++--
 .../noarch/release/obs-a/obs-a-1.0-1.expected      |    1 +
 .../noarch/release/obs-b/obs-b-1.0-1.expected      |    1 +
 .../noarch/release/perl-Net-SMTP-SSL/expected      |    5 -
 .../perl-Net-SMTP-SSL-1.03-1.expected              |    5 +
 .../noarch/release/test-c/test-c-1.0-1.expected    |    4 +
 .../noarch/release/test-d/test-d-1.0-1.expected    |    1 +
 .../noarch/release/test-e/test-e-1.0-1.expected    |    1 +
 .../hints/x86/release/arc/arc-4.32.7-10.expected   |    8 ++
 test/testdata/hints/x86/release/arc/expected       |    8 --
 .../release/base-cygwin/base-cygwin-3.6-1.expected |    5 +
 .../release/base-cygwin/base-cygwin-3.8-1.expected |    5 +
 .../hints/x86/release/base-cygwin/expected         |    5 -
 .../x86/release/corrupt/corrupt-2.0.0-1.expected   |    3 +
 test/testdata/hints/x86/release/corrupt/expected   |    3 -
 .../x86/release/cygwin/cygwin-2.2.0-1.expected     |    4 +
 .../x86/release/cygwin/cygwin-2.2.1-1.expected     |    4 +
 .../x86/release/cygwin/cygwin-2.3.0-0.3.expected   |    6 ++
 .../cygwin-debuginfo-2.2.0-1.expected              |    5 +
 .../cygwin-debuginfo-2.2.1-1.expected              |    5 +
 .../cygwin-debuginfo-2.3.0-0.3.expected            |    5 +
 .../x86/release/cygwin/cygwin-debuginfo/expected   |    8 --
 .../cygwin/cygwin-debuginfo/override.expected      |    1 +
 .../cygwin-devel/cygwin-devel-2.2.0-1.expected     |    5 +
 .../cygwin-devel/cygwin-devel-2.2.1-1.expected     |    5 +
 .../cygwin-devel/cygwin-devel-2.3.0-0.3.expected   |    5 +
 .../hints/x86/release/cygwin/cygwin-devel/expected |    8 --
 .../release/cygwin/cygwin-devel/override.expected  |    1 +
 test/testdata/hints/x86/release/cygwin/expected    |    7 --
 .../hints/x86/release/cygwin/override.expected     |    1 +
 test/testdata/hints/x86/release/invalid/expected   |    4 -
 .../hints/x86/release/invalid/invalid-0.expected   |    4 +
 test/testdata/hints/x86/release/keychain/expected  |   12 ---
 .../x86/release/keychain/keychain-2.6.8-1.expected |   12 +++
 .../x86/release/keychain/keychain-2.7.1-1.expected |   12 +++
 test/testdata/hints/x86/release/libspiro/expected  |    1 -
 .../release/libspiro/libspiro-20071029-1.expected  |    1 +
 .../x86/release/libspiro/libspiro-devel/expected   |    1 -
 .../libspiro-devel-20071029-1.expected             |    1 +
 .../hints/x86/release/libspiro/libspiro0/expected  |    1 -
 .../libspiro0/libspiro0-20071029-1.expected        |    1 +
 .../testdata/hints/x86/release/libtextcat/expected |   11 ---
 .../release/libtextcat/libtextcat-2.2-2.expected   |   11 +++
 .../release/libtextcat/libtextcat-devel/expected   |   12 ---
 .../libtextcat-devel-2.2-2.expected                |   12 +++
 .../x86/release/libtextcat/libtextcat0/expected    |   12 ---
 .../libtextcat0/libtextcat0-2.2-2.expected         |   12 +++
 .../hints/x86/release/mDNSResponder/expected       |   10 ---
 .../release/mDNSResponder/libdns_sd-devel/expected |    7 --
 .../libdns_sd-devel-379.32.1-1.expected            |    7 ++
 .../x86/release/mDNSResponder/libdns_sd1/expected  |    7 --
 .../libdns_sd1/libdns_sd1-379.32.1-1.expected      |    7 ++
 .../mDNSResponder-379.32.1-1.expected              |   10 +++
 .../x86/release/mingw64-i686-binutils/expected     |    6 --
 ...ingw64-i686-binutils-2.29.1.787c9873-1.expected |    6 ++
 .../mingw64-i686-binutils-debuginfo/expected       |    7 --
 ...6-binutils-debuginfo-2.29.1.787c9873-1.expected |    7 ++
 test/testdata/hints/x86/release/openssh/expected   |    5 -
 .../x86/release/openssh/openssh-7.2p2-1.expected   |    5 +
 .../per-version-incomplete/override.expected       |    1 +
 .../per-version-incomplete-36-1.expected           |    3 +
 ...er-version-replacement-hint-only-1.0-1.expected |    4 +
 .../x86/release/per-version/override.expected      |    1 +
 .../release/per-version/per-version-4.0-1.expected |    4 +
 .../release/per-version/per-version-4.8-1.expected |    4 +
 test/testdata/hints/x86/release/proj/expected      |    5 -
 .../hints/x86/release/proj/libproj-devel/expected  |    6 --
 .../libproj-devel/libproj-devel-4.8.0-1.expected   |    6 ++
 .../hints/x86/release/proj/libproj1/expected       |    6 --
 .../proj/libproj1/libproj1-4.8.0-1.expected        |    6 ++
 .../hints/x86/release/proj/proj-4.8.0-1.expected   |    5 +
 test/testdata/hints/x86/release/rpm-doc/expected   |    2 -
 .../x86/release/rpm-doc/rpm-doc-4.1-2.expected     |    2 +
 .../x86/release/rpm-doc/rpm-doc-999-1.expected     |    2 +
 test/testdata/hints/x86/release/splint/expected    |   15 ----
 .../x86/release/splint/splint-3.1.2-1.expected     |   15 ++++
 .../hints/x86/release/staleversion/expected        |    4 -
 .../x86/release/staleversion/override.expected     |    1 +
 .../staleversion/staleversion-240-1.expected       |    4 +
 .../staleversion/staleversion-242-0.expected       |    4 +
 .../staleversion/staleversion-243-0.expected       |    4 +
 .../staleversion/staleversion-250-0.expected       |    4 +
 .../staleversion/staleversion-251-0.expected       |    4 +
 .../staleversion/staleversion-260-0.expected       |    4 +
 .../hints/x86/release/testpackage/expected         |    3 -
 .../release/testpackage/testpackage-0.1-1.expected |    3 +
 test/testdata/process_arch/rel_area.expected       |   85 ++++++++++++-------
 test/testdata/process_arch/vault.expected          |    5 +-
 .../perl-Net-SMTP-SSL-1.03-1.hint                  |    5 +
 .../noarch/release/perl-Net-SMTP-SSL/setup.hint    |    5 -
 .../relarea/x86/release/arc/arc-4.32.7-10.hint     |    8 ++
 test/testdata/relarea/x86/release/arc/setup.hint   |    8 --
 .../x86/release/base-cygwin/base-cygwin-3.6-1.hint |    4 +
 .../x86/release/base-cygwin/base-cygwin-3.8-1.hint |    4 +
 .../relarea/x86/release/base-cygwin/setup.hint     |    4 -
 .../x86/release/corrupt/corrupt-2.0.0-1.hint       |    3 +
 .../relarea/x86/release/corrupt/setup.hint         |    3 -
 .../relarea/x86/release/cygwin/cygwin-2.2.0-1.hint |    4 +
 .../relarea/x86/release/cygwin/cygwin-2.2.1-1.hint |    4 +
 .../cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.hint |    6 ++
 .../cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.hint |    6 ++
 .../cygwin-debuginfo-2.3.0-0.3.hint                |    6 ++
 .../release/cygwin/cygwin-debuginfo/override.hint  |    3 +
 .../x86/release/cygwin/cygwin-debuginfo/setup.hint |    9 --
 .../cygwin/cygwin-devel/cygwin-devel-2.2.0-1.hint  |    5 +
 .../cygwin/cygwin-devel/cygwin-devel-2.2.1-1.hint  |    5 +
 .../cygwin-devel/cygwin-devel-2.3.0-0.3.hint       |    5 +
 .../x86/release/cygwin/cygwin-devel/override.hint  |    3 +
 .../x86/release/cygwin/cygwin-devel/setup.hint     |    8 --
 .../relarea/x86/release/cygwin/override.hint       |    3 +
 .../testdata/relarea/x86/release/cygwin/setup.hint |    7 --
 .../relarea/x86/release/invalid/invalid-0.hint     |    2 +
 .../relarea/x86/release/invalid/setup.hint         |    2 -
 .../x86/release/keychain/keychain-2.6.8-1.hint     |   12 +++
 .../x86/release/keychain/keychain-2.7.1-1.hint     |   12 +++
 .../relarea/x86/release/keychain/setup.hint        |   12 ---
 .../x86/release/libspiro/libspiro-20071029-1.hint  |    9 ++
 .../libspiro-devel/libspiro-devel-20071029-1.hint  |   11 +++
 .../x86/release/libspiro/libspiro-devel/setup.hint |   11 ---
 .../libspiro/libspiro0/libspiro0-20071029-1.hint   |   11 +++
 .../x86/release/libspiro/libspiro0/setup.hint      |   11 ---
 .../relarea/x86/release/libspiro/setup.hint        |    9 --
 .../x86/release/libtextcat/libtextcat-2.2-2.hint   |   10 +++
 .../libtextcat-devel/libtextcat-devel-2.2-2.hint   |   11 +++
 .../release/libtextcat/libtextcat-devel/setup.hint |   11 ---
 .../libtextcat/libtextcat0/libtextcat0-2.2-2.hint  |   11 +++
 .../x86/release/libtextcat/libtextcat0/setup.hint  |   11 ---
 .../relarea/x86/release/libtextcat/setup.hint      |   10 ---
 .../libdns_sd-devel-379.32.1-1.hint                |    7 ++
 .../mDNSResponder/libdns_sd-devel/setup.hint       |    7 --
 .../libdns_sd1/libdns_sd1-379.32.1-1.hint          |    7 ++
 .../release/mDNSResponder/libdns_sd1/setup.hint    |    7 --
 .../mDNSResponder/mDNSResponder-379.32.1-1.hint    |   11 +++
 .../relarea/x86/release/mDNSResponder/setup.hint   |   11 ---
 .../mingw64-i686-binutils-2.29.1.787c9873-1.hint   |    5 +
 ...-i686-binutils-debuginfo-2.29.1.787c9873-1.hint |    6 ++
 .../mingw64-i686-binutils-debuginfo/setup.hint     |    6 --
 .../x86/release/mingw64-i686-binutils/setup.hint   |    5 -
 .../x86/release/openssh/openssh-7.2p2-1.hint       |    5 +
 .../relarea/x86/release/openssh/setup.hint         |    5 -
 .../proj/libproj-devel/libproj-devel-4.8.0-1.hint  |    5 +
 .../x86/release/proj/libproj-devel/setup.hint      |    5 -
 .../release/proj/libproj1/libproj1-4.8.0-1.hint    |    5 +
 .../relarea/x86/release/proj/libproj1/setup.hint   |    5 -
 .../relarea/x86/release/proj/proj-4.8.0-1.hint     |    4 +
 test/testdata/relarea/x86/release/proj/setup.hint  |    4 -
 .../relarea/x86/release/rpm-doc/rpm-doc-4.1-2.hint |    2 +
 .../relarea/x86/release/rpm-doc/rpm-doc-999-1.hint |    2 +
 .../relarea/x86/release/rpm-doc/setup.hint         |    2 -
 .../testdata/relarea/x86/release/splint/setup.hint |   14 ---
 .../relarea/x86/release/splint/splint-3.1.2-1.hint |   14 +++
 .../relarea/x86/release/staleversion/setup.hint    |    4 -
 .../release/staleversion/staleversion-240-1.hint   |    4 +
 .../release/staleversion/staleversion-242-0.hint   |    4 +
 .../release/staleversion/staleversion-243-0.hint   |    4 +
 .../release/staleversion/staleversion-250-0.hint   |    4 +
 .../release/staleversion/staleversion-251-0.hint   |    4 +
 .../release/staleversion/staleversion-260-0.hint   |    4 +
 .../relarea/x86/release/testpackage/setup.hint     |    3 -
 .../x86/release/testpackage/testpackage-0.1-1.hint |    3 +
 163 files changed, 625 insertions(+), 507 deletions(-)

diff --git a/calm/hint.py b/calm/hint.py
index e32d095..6e1a948 100755
--- a/calm/hint.py
+++ b/calm/hint.py
@@ -29,15 +29,6 @@ from collections import OrderedDict
 import re
 import argparse
 
-
-# helper function to merge dicts
-def merge_dicts(x, *y):
-    z = x.copy()
-    for i in y:
-        z.update(i)
-    return z
-
-
 # types of key:
 # 'multilineval' - always have a value, which may be multiline
 # 'val'          - always have a value
@@ -46,24 +37,32 @@ def merge_dicts(x, *y):
 keytypes = ['multilineval', 'val', 'optval', 'noval']
 
 # kinds of hint file, and their allowed keys
-setup, pvr, override = range(3)
+pvr, override = range(2)
+
+hintkeys = {}
 
-commonkeys = {
+hintkeys[pvr] = {
     'ldesc': 'multilineval',
     'message': 'multilineval',
     'category': 'val',
     'external-source': 'val',
     'sdesc': 'val',
     'skip': 'noval',
+    'requires': 'optval',
+    'depends': 'optval',
+    'build-depends': 'optval',
+    'obsoletes': 'optval',
+    'test': 'noval',   # mark the package as a test version
+    'version': 'val',  # version override
+    'disable-check': 'val',
+    'provides': 'val',
+    'conflicts': 'val',
 }
 
-versionkeys = {
+hintkeys[override] = {
     'curr': 'val',
     'prev': 'val',
     'test': 'val',
-}
-
-overridekeys = {
     'keep': 'val',
     'keep-count': 'val',
     'keep-days': 'val',
@@ -71,26 +70,6 @@ overridekeys = {
     'replace-versions': 'val',
 }
 
-hintkeys = {}
-
-hintkeys[setup] = merge_dicts(commonkeys, versionkeys, {
-    'requires': 'optval',
-})
-
-hintkeys[pvr] = merge_dicts(commonkeys, {
-    'requires': 'optval',
-    'depends': 'optval',
-    'build-depends': 'optval',
-    'obsoletes': 'optval',
-    'test': 'noval',   # mark the package as a test version
-    'version': 'val',  # version override
-    'disable-check': 'val',
-    'provides': 'val',
-    'conflicts': 'val',
-})
-
-hintkeys[override] = merge_dicts(versionkeys, overridekeys)
-
 # valid categories
 categories = ['accessibility',
               'admin',
@@ -291,10 +270,10 @@ def hint_file_parse(fn, kind):
                 else:
                     errors.append("unknown construct '%s' at line %d" % (item, i))
 
-            # for setup and pvr kinds, if 'skip' isn't present, 'category' and
+            # for the pvr kind, if 'skip' isn't present, 'category' and
             # 'sdesc' must be
             # XXX: genini also requires 'requires' but that seems wrong
-            if 'skip' not in hints and kind != override:
+            if 'skip' not in hints and kind == pvr:
                 mandatory = ['category', 'sdesc']
                 for k in mandatory:
                     if k not in hints:
diff --git a/calm/package.py b/calm/package.py
index 5710185..ebec84a 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -180,21 +180,8 @@ def read_package(packages, basedir, dirpath, files, remove=[], upload=False):
                           (dirpath, packages[p].path))
             return True
 
-        # read setup.hint
-        legacy = 'setup.hint' in files
-        legacy_used = False
-        if legacy:
-            hints = read_hints(p, os.path.join(dirpath, 'setup.hint'), hint.setup)
-            if not hints:
-                logging.error("error parsing %s" % (os.path.join(dirpath, 'setup.hint')))
-                return True
-            warnings = clean_hints(p, hints, warnings)
-            files.remove('setup.hint')
-        else:
-            hints = {}
-
         # determine version overrides
-        note_absent = ('override.hint' in remove) or ('override.hint' in files) or legacy
+        note_absent = ('override.hint' in remove) or ('override.hint' in files)
 
         if 'override.hint' in files:
             # read override.hint
@@ -206,12 +193,6 @@ def read_package(packages, basedir, dirpath, files, remove=[], upload=False):
         else:
             override_hints = {}
 
-            # if we didn't have a version override hint, extract any version
-            # override from legacy hints
-            for level in ['test', 'curr', 'prev']:
-                if level in hints:
-                    override_hints[level] = hints[level]
-
         # if override.hint exists or is being removed, explicitly note absent
         # stability level hints
         if note_absent:
@@ -219,12 +200,6 @@ def read_package(packages, basedir, dirpath, files, remove=[], upload=False):
                 if level not in override_hints:
                     override_hints[level] = None
 
-        # after we have migrated them to override hints, remove stability
-        # level hints from legacy hints
-        for level in ['test', 'curr', 'prev']:
-            if level in hints:
-                del hints[level]
-
         # read sha512.sum
         sha512 = {}
         if 'sha512.sum' not in files:
@@ -318,14 +293,9 @@ def read_package(packages, basedir, dirpath, files, remove=[], upload=False):
                     return True
                 warnings = clean_hints(p, pvr_hint, warnings)
                 files.remove(hint_fn)
-            elif legacy:
-                # otherwise, use setup.hint
-                pvr_hint = hints.copy()
-                legacy_used = True
-                hint_fn = None
             else:
-                # it's an error to not have either a setup.hint or a pvr.hint
-                logging.error("package %s has packages for version %s, but no %s or setup.hint" % (p, vr, hint_fn))
+                # it's an error to not have a pvr.hint
+                logging.error("package %s has packages for version %s, but no %s" % (p, vr, hint_fn))
                 return True
 
             # apply a version override
@@ -350,13 +320,8 @@ def read_package(packages, basedir, dirpath, files, remove=[], upload=False):
             logging.error("unexpected files in %s: %s" % (p, ', '.join(files)))
             warnings = True
 
-        if not upload and legacy and not legacy_used:
-            logging.warning("package '%s' has a setup.hint which no version uses, removing it" % (p))
-            os.unlink(os.path.join(dirpath, 'setup.hint'))
-
         packages[p].version_hints = version_hints
         packages[p].override_hints = override_hints
-        packages[p].legacy_hints = hints
         packages[p].tars = actual_tars
         packages[p].hint_files = hint_files
         packages[p].path = relpath
@@ -1129,16 +1094,6 @@ def merge(a, *l):
 
                                 logging.warning("package '%s' version '%s' hints changed\n%s" % (p, vr, diff))
 
-                    # XXX: we should really do something complex here, like
-                    # assign the legacy hints from b to all vr in a which didn't
-                    # have a pvr.hint.  Instead, just report if it's going to
-                    # change and let things get sorted out later on...
-                    if a[p].legacy_hints and b[p].legacy_hints and a[p].legacy_hints != b[p].legacy_hints:
-                        diff = '\n'.join(difflib.ndiff(
-                            pprint.pformat(a[p].legacy_hints).splitlines(),
-                            pprint.pformat(b[p].legacy_hints).splitlines()))
-                        logging.warning("package '%s' hints changed\n%s" % (p, diff))
-
                     # overrides from b take precedence
                     c[p].override_hints.update(b[p].override_hints)
 
diff --git a/calm/uploads.py b/calm/uploads.py
index 1d8c1bf..2f84911 100644
--- a/calm/uploads.py
+++ b/calm/uploads.py
@@ -197,9 +197,6 @@ def scan(m, all_packages, arch, args):
                 elif os.path.getsize(fn) != 0:
                     logging.error("remove file %s is not empty" % fn)
                     error = True
-                elif f == '-setup.hint':
-                    logging.error("remove file %s is not permitted" % fn)
-                    error = True
                 else:
                     vault[relpath].append(f[1:])
                     remove_success.append(fn)
diff --git a/test/test_calm.py b/test/test_calm.py
index 80b8e4e..48a6020 100755
--- a/test/test_calm.py
+++ b/test/test_calm.py
@@ -130,17 +130,25 @@ class CalmTest(unittest.TestCase):
         basedir = 'testdata/relarea'
         for (dirpath, subdirs, files) in os.walk(basedir):
             relpath = os.path.relpath(dirpath, basedir)
-            if 'setup.hint' in files:
-                with self.subTest(package=os.path.basename(dirpath)):
-                    logging.info('Reading %s' % os.path.join(dirpath, 'setup.hint'))
-                    results = hint.hint_file_parse(os.path.join(dirpath, 'setup.hint'), hint.setup)
-                    with pprint_patch():
-                        compare_with_expected_file(self, os.path.join('testdata/hints', relpath), results)
+            for f in files:
+                expected = os.path.join('testdata/hints', relpath)
+                if f.endswith('.hint'):
+                    if f == 'override.hint':
+                        kind = hint.override
+                        name = 'override'
+                    else:
+                        kind = hint.pvr
+                        name = f[:-5]
+                    with self.subTest(package=os.path.basename(dirpath)):
+                        logging.info('Reading %s' % os.path.join(dirpath, f))
+                        results = hint.hint_file_parse(os.path.join(dirpath, f), kind)
+                        with pprint_patch():
+                            compare_with_expected_file(self, expected, results, name)
 
 #
 # something like "find -name results -exec sh -c 'cd `dirname {}` ; cp results
 # expected' \;" can be used to update the expected output (after you have
-# checking it to make sure it is really correct, of course :) )
+# checked it to make sure it is really correct, of course :) )
 #
 
     def test_html_writer(self):
diff --git a/test/testdata/hints/noarch/release/obs-a/obs-a-1.0-1.expected b/test/testdata/hints/noarch/release/obs-a/obs-a-1.0-1.expected
new file mode 100644
index 0000000..250a5fe
--- /dev/null
+++ b/test/testdata/hints/noarch/release/obs-a/obs-a-1.0-1.expected
@@ -0,0 +1 @@
+OrderedDict([('category', 'Devel'), ('sdesc', '"obsolete package A"')])
diff --git a/test/testdata/hints/noarch/release/obs-b/obs-b-1.0-1.expected b/test/testdata/hints/noarch/release/obs-b/obs-b-1.0-1.expected
new file mode 100644
index 0000000..f1c61cd
--- /dev/null
+++ b/test/testdata/hints/noarch/release/obs-b/obs-b-1.0-1.expected
@@ -0,0 +1 @@
+OrderedDict([('category', 'Devel'), ('sdesc', '"obsolete package B"')])
diff --git a/test/testdata/hints/noarch/release/perl-Net-SMTP-SSL/expected b/test/testdata/hints/noarch/release/perl-Net-SMTP-SSL/expected
deleted file mode 100644
index 9516e05..0000000
--- a/test/testdata/hints/noarch/release/perl-Net-SMTP-SSL/expected
+++ /dev/null
@@ -1,5 +0,0 @@
-{'category': 'Perl',
- 'requires': '',
- 'sdesc': '"Perl distribution Net-SMTP-SSL"',
- 'ldesc': '"Implements the same API as Net::SMTP, but uses IO::Socket::SSL for\n'
-          'its network operations in order to support encrypted connections."'}
diff --git a/test/testdata/hints/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1.expected b/test/testdata/hints/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1.expected
new file mode 100644
index 0000000..9516e05
--- /dev/null
+++ b/test/testdata/hints/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1.expected
@@ -0,0 +1,5 @@
+{'category': 'Perl',
+ 'requires': '',
+ 'sdesc': '"Perl distribution Net-SMTP-SSL"',
+ 'ldesc': '"Implements the same API as Net::SMTP, but uses IO::Socket::SSL for\n'
+          'its network operations in order to support encrypted connections."'}
diff --git a/test/testdata/hints/noarch/release/test-c/test-c-1.0-1.expected b/test/testdata/hints/noarch/release/test-c/test-c-1.0-1.expected
new file mode 100644
index 0000000..c8024d7
--- /dev/null
+++ b/test/testdata/hints/noarch/release/test-c/test-c-1.0-1.expected
@@ -0,0 +1,4 @@
+{'category': 'Devel',
+ 'sdesc': '"test package C"',
+ 'obsoletes': 'obs-a, obs-b',
+ 'depends': 'test-d (>= 1.0), test-e'}
diff --git a/test/testdata/hints/noarch/release/test-d/test-d-1.0-1.expected b/test/testdata/hints/noarch/release/test-d/test-d-1.0-1.expected
new file mode 100644
index 0000000..584681a
--- /dev/null
+++ b/test/testdata/hints/noarch/release/test-d/test-d-1.0-1.expected
@@ -0,0 +1 @@
+OrderedDict([('category', 'Devel'), ('sdesc', '"test package D"'), ('version', '1.0.42590-1')])
diff --git a/test/testdata/hints/noarch/release/test-e/test-e-1.0-1.expected b/test/testdata/hints/noarch/release/test-e/test-e-1.0-1.expected
new file mode 100644
index 0000000..e7414e7
--- /dev/null
+++ b/test/testdata/hints/noarch/release/test-e/test-e-1.0-1.expected
@@ -0,0 +1 @@
+OrderedDict([('category', 'Devel'), ('sdesc', '"test package E"'), ('build-depends', 'libtextcat-devel')])
diff --git a/test/testdata/hints/x86/release/arc/arc-4.32.7-10.expected b/test/testdata/hints/x86/release/arc/arc-4.32.7-10.expected
new file mode 100644
index 0000000..d0cd27b
--- /dev/null
+++ b/test/testdata/hints/x86/release/arc/arc-4.32.7-10.expected
@@ -0,0 +1,8 @@
+{'sdesc': '"The ARC archive utility"',
+ '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."',
+ 'category': 'Archive'}
diff --git a/test/testdata/hints/x86/release/arc/expected b/test/testdata/hints/x86/release/arc/expected
deleted file mode 100644
index d0cd27b..0000000
--- a/test/testdata/hints/x86/release/arc/expected
+++ /dev/null
@@ -1,8 +0,0 @@
-{'sdesc': '"The ARC archive utility"',
- '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."',
- 'category': 'Archive'}
diff --git a/test/testdata/hints/x86/release/base-cygwin/base-cygwin-3.6-1.expected b/test/testdata/hints/x86/release/base-cygwin/base-cygwin-3.6-1.expected
new file mode 100644
index 0000000..7505632
--- /dev/null
+++ b/test/testdata/hints/x86/release/base-cygwin/base-cygwin-3.6-1.expected
@@ -0,0 +1,5 @@
+{'sdesc': '"Initial base installation helper script"',
+ 'ldesc': '"Initial base installation helper script."',
+ 'category': 'Base',
+ 'requires': '',
+ 'parse-warnings': ["sdesc ends with '.'"]}
diff --git a/test/testdata/hints/x86/release/base-cygwin/base-cygwin-3.8-1.expected b/test/testdata/hints/x86/release/base-cygwin/base-cygwin-3.8-1.expected
new file mode 100644
index 0000000..7505632
--- /dev/null
+++ b/test/testdata/hints/x86/release/base-cygwin/base-cygwin-3.8-1.expected
@@ -0,0 +1,5 @@
+{'sdesc': '"Initial base installation helper script"',
+ 'ldesc': '"Initial base installation helper script."',
+ 'category': 'Base',
+ 'requires': '',
+ 'parse-warnings': ["sdesc ends with '.'"]}
diff --git a/test/testdata/hints/x86/release/base-cygwin/expected b/test/testdata/hints/x86/release/base-cygwin/expected
deleted file mode 100644
index 7505632..0000000
--- a/test/testdata/hints/x86/release/base-cygwin/expected
+++ /dev/null
@@ -1,5 +0,0 @@
-{'sdesc': '"Initial base installation helper script"',
- 'ldesc': '"Initial base installation helper script."',
- 'category': 'Base',
- 'requires': '',
- 'parse-warnings': ["sdesc ends with '.'"]}
diff --git a/test/testdata/hints/x86/release/corrupt/corrupt-2.0.0-1.expected b/test/testdata/hints/x86/release/corrupt/corrupt-2.0.0-1.expected
new file mode 100644
index 0000000..945213b
--- /dev/null
+++ b/test/testdata/hints/x86/release/corrupt/corrupt-2.0.0-1.expected
@@ -0,0 +1,3 @@
+{'sdesc': '"A corrupt package"',
+ 'ldesc': '"A package containing corrupt archives"',
+ 'category': 'Devel'}
diff --git a/test/testdata/hints/x86/release/corrupt/expected b/test/testdata/hints/x86/release/corrupt/expected
deleted file mode 100644
index 945213b..0000000
--- a/test/testdata/hints/x86/release/corrupt/expected
+++ /dev/null
@@ -1,3 +0,0 @@
-{'sdesc': '"A corrupt package"',
- 'ldesc': '"A package containing corrupt archives"',
- 'category': 'Devel'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-2.2.0-1.expected b/test/testdata/hints/x86/release/cygwin/cygwin-2.2.0-1.expected
new file mode 100644
index 0000000..24a09e5
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-2.2.0-1.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"The UNIX emulation engine"',
+ 'ldesc': '"The UNIX emulation engine"',
+ 'category': 'Base',
+ 'requires': 'base-cygwin'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-2.2.1-1.expected b/test/testdata/hints/x86/release/cygwin/cygwin-2.2.1-1.expected
new file mode 100644
index 0000000..24a09e5
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-2.2.1-1.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"The UNIX emulation engine"',
+ 'ldesc': '"The UNIX emulation engine"',
+ 'category': 'Base',
+ 'requires': 'base-cygwin'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-2.3.0-0.3.expected b/test/testdata/hints/x86/release/cygwin/cygwin-2.3.0-0.3.expected
new file mode 100644
index 0000000..6658b1e
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-2.3.0-0.3.expected
@@ -0,0 +1,6 @@
+{'sdesc': '"The UNIX emulation engine"',
+ 'ldesc': '"The UNIX emulation engine"',
+ 'category': 'Base',
+ 'requires': 'base-cygwin',
+ 'provides': 'cygwin-api0_291',
+ 'conflicts': 'fruit-juice'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.expected b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.expected
new file mode 100644
index 0000000..a9b0d70
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.expected
@@ -0,0 +1,5 @@
+{'category': 'Debug',
+ 'requires': 'cygwin-debuginfo',
+ 'external-source': 'cygwin',
+ 'sdesc': '"Debug info for cygwin"',
+ 'ldesc': '"This package contains files necessary for debugging the\ncygwin package with gdb."'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.expected b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.expected
new file mode 100644
index 0000000..a9b0d70
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.expected
@@ -0,0 +1,5 @@
+{'category': 'Debug',
+ 'requires': 'cygwin-debuginfo',
+ 'external-source': 'cygwin',
+ 'sdesc': '"Debug info for cygwin"',
+ 'ldesc': '"This package contains files necessary for debugging the\ncygwin package with gdb."'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3.expected b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3.expected
new file mode 100644
index 0000000..a9b0d70
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3.expected
@@ -0,0 +1,5 @@
+{'category': 'Debug',
+ 'requires': 'cygwin-debuginfo',
+ 'external-source': 'cygwin',
+ 'sdesc': '"Debug info for cygwin"',
+ 'ldesc': '"This package contains files necessary for debugging the\ncygwin package with gdb."'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/expected b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/expected
deleted file mode 100644
index 7359321..0000000
--- a/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/expected
+++ /dev/null
@@ -1,8 +0,0 @@
-{'category': 'Debug',
- 'requires': 'cygwin-debuginfo',
- 'external-source': 'cygwin',
- 'sdesc': '"Debug info for cygwin"',
- 'ldesc': '"This package contains files necessary for debugging the\ncygwin package with gdb."',
- 'prev': '2.2.0-1',
- 'curr': '2.2.1-1',
- 'test': '2.3.0-0.3'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/override.expected b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/override.expected
new file mode 100644
index 0000000..5c3039e
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-debuginfo/override.expected
@@ -0,0 +1 @@
+OrderedDict([('prev', '2.2.0-1'), ('curr', '2.2.1-1'), ('test', '2.3.0-0.3')])
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.0-1.expected b/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.0-1.expected
new file mode 100644
index 0000000..7a8bc17
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.0-1.expected
@@ -0,0 +1,5 @@
+{'category': 'Devel',
+ 'requires': '',
+ 'sdesc': '"Core development files"',
+ 'ldesc': '"Core development files required to build Cygwin packages"',
+ 'external-source': 'cygwin'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.1-1.expected b/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.1-1.expected
new file mode 100644
index 0000000..7a8bc17
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.1-1.expected
@@ -0,0 +1,5 @@
+{'category': 'Devel',
+ 'requires': '',
+ 'sdesc': '"Core development files"',
+ 'ldesc': '"Core development files required to build Cygwin packages"',
+ 'external-source': 'cygwin'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.3.0-0.3.expected b/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.3.0-0.3.expected
new file mode 100644
index 0000000..7a8bc17
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-devel/cygwin-devel-2.3.0-0.3.expected
@@ -0,0 +1,5 @@
+{'category': 'Devel',
+ 'requires': '',
+ 'sdesc': '"Core development files"',
+ 'ldesc': '"Core development files required to build Cygwin packages"',
+ 'external-source': 'cygwin'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-devel/expected b/test/testdata/hints/x86/release/cygwin/cygwin-devel/expected
deleted file mode 100644
index 19c0b1e..0000000
--- a/test/testdata/hints/x86/release/cygwin/cygwin-devel/expected
+++ /dev/null
@@ -1,8 +0,0 @@
-{'category': 'Devel',
- 'requires': '',
- 'sdesc': '"Core development files"',
- 'ldesc': '"Core development files required to build Cygwin packages"',
- 'external-source': 'cygwin',
- 'prev': '2.2.0-1',
- 'curr': '2.2.1-1',
- 'test': '2.3.0-0.3'}
diff --git a/test/testdata/hints/x86/release/cygwin/cygwin-devel/override.expected b/test/testdata/hints/x86/release/cygwin/cygwin-devel/override.expected
new file mode 100644
index 0000000..5c3039e
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/cygwin-devel/override.expected
@@ -0,0 +1 @@
+OrderedDict([('prev', '2.2.0-1'), ('curr', '2.2.1-1'), ('test', '2.3.0-0.3')])
diff --git a/test/testdata/hints/x86/release/cygwin/expected b/test/testdata/hints/x86/release/cygwin/expected
deleted file mode 100644
index e2f3476..0000000
--- a/test/testdata/hints/x86/release/cygwin/expected
+++ /dev/null
@@ -1,7 +0,0 @@
-{'sdesc': '"The UNIX emulation engine"',
- 'ldesc': '"The UNIX emulation engine"',
- 'category': 'Base',
- 'requires': 'base-cygwin',
- 'prev': '2.2.0-1',
- 'curr': '2.2.1-1',
- 'test': '2.3.0-0.3'}
diff --git a/test/testdata/hints/x86/release/cygwin/override.expected b/test/testdata/hints/x86/release/cygwin/override.expected
new file mode 100644
index 0000000..5c3039e
--- /dev/null
+++ b/test/testdata/hints/x86/release/cygwin/override.expected
@@ -0,0 +1 @@
+OrderedDict([('prev', '2.2.0-1'), ('curr', '2.2.1-1'), ('test', '2.3.0-0.3')])
diff --git a/test/testdata/hints/x86/release/invalid/expected b/test/testdata/hints/x86/release/invalid/expected
deleted file mode 100644
index 70f37d7..0000000
--- a/test/testdata/hints/x86/release/invalid/expected
+++ /dev/null
@@ -1,4 +0,0 @@
-{'parse-errors': ['unknown key unknown-key at line 0',
-                  "unknown construct 'invalid-construct' at line 1",
-                  "required key 'category' missing",
-                  "required key 'sdesc' missing"]}
diff --git a/test/testdata/hints/x86/release/invalid/invalid-0.expected b/test/testdata/hints/x86/release/invalid/invalid-0.expected
new file mode 100644
index 0000000..70f37d7
--- /dev/null
+++ b/test/testdata/hints/x86/release/invalid/invalid-0.expected
@@ -0,0 +1,4 @@
+{'parse-errors': ['unknown key unknown-key at line 0',
+                  "unknown construct 'invalid-construct' at line 1",
+                  "required key 'category' missing",
+                  "required key 'sdesc' missing"]}
diff --git a/test/testdata/hints/x86/release/keychain/expected b/test/testdata/hints/x86/release/keychain/expected
deleted file mode 100644
index 4113a2d..0000000
--- a/test/testdata/hints/x86/release/keychain/expected
+++ /dev/null
@@ -1,12 +0,0 @@
-{'sdesc': '"Key manager for OpenSSH"',
- '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"',
- 'category': 'Utils',
- 'requires': 'openssh'}
diff --git a/test/testdata/hints/x86/release/keychain/keychain-2.6.8-1.expected b/test/testdata/hints/x86/release/keychain/keychain-2.6.8-1.expected
new file mode 100644
index 0000000..4113a2d
--- /dev/null
+++ b/test/testdata/hints/x86/release/keychain/keychain-2.6.8-1.expected
@@ -0,0 +1,12 @@
+{'sdesc': '"Key manager for OpenSSH"',
+ '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"',
+ 'category': 'Utils',
+ 'requires': 'openssh'}
diff --git a/test/testdata/hints/x86/release/keychain/keychain-2.7.1-1.expected b/test/testdata/hints/x86/release/keychain/keychain-2.7.1-1.expected
new file mode 100644
index 0000000..4113a2d
--- /dev/null
+++ b/test/testdata/hints/x86/release/keychain/keychain-2.7.1-1.expected
@@ -0,0 +1,12 @@
+{'sdesc': '"Key manager for OpenSSH"',
+ '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"',
+ 'category': 'Utils',
+ 'requires': 'openssh'}
diff --git a/test/testdata/hints/x86/release/libspiro/expected b/test/testdata/hints/x86/release/libspiro/expected
deleted file mode 100644
index b16efe0..0000000
--- a/test/testdata/hints/x86/release/libspiro/expected
+++ /dev/null
@@ -1 +0,0 @@
-OrderedDict([('parse-errors', ['invalid UTF-8'])])
diff --git a/test/testdata/hints/x86/release/libspiro/libspiro-20071029-1.expected b/test/testdata/hints/x86/release/libspiro/libspiro-20071029-1.expected
new file mode 100644
index 0000000..b16efe0
--- /dev/null
+++ b/test/testdata/hints/x86/release/libspiro/libspiro-20071029-1.expected
@@ -0,0 +1 @@
+OrderedDict([('parse-errors', ['invalid UTF-8'])])
diff --git a/test/testdata/hints/x86/release/libspiro/libspiro-devel/expected b/test/testdata/hints/x86/release/libspiro/libspiro-devel/expected
deleted file mode 100644
index b16efe0..0000000
--- a/test/testdata/hints/x86/release/libspiro/libspiro-devel/expected
+++ /dev/null
@@ -1 +0,0 @@
-OrderedDict([('parse-errors', ['invalid UTF-8'])])
diff --git a/test/testdata/hints/x86/release/libspiro/libspiro-devel/libspiro-devel-20071029-1.expected b/test/testdata/hints/x86/release/libspiro/libspiro-devel/libspiro-devel-20071029-1.expected
new file mode 100644
index 0000000..b16efe0
--- /dev/null
+++ b/test/testdata/hints/x86/release/libspiro/libspiro-devel/libspiro-devel-20071029-1.expected
@@ -0,0 +1 @@
+OrderedDict([('parse-errors', ['invalid UTF-8'])])
diff --git a/test/testdata/hints/x86/release/libspiro/libspiro0/expected b/test/testdata/hints/x86/release/libspiro/libspiro0/expected
deleted file mode 100644
index b16efe0..0000000
--- a/test/testdata/hints/x86/release/libspiro/libspiro0/expected
+++ /dev/null
@@ -1 +0,0 @@
-OrderedDict([('parse-errors', ['invalid UTF-8'])])
diff --git a/test/testdata/hints/x86/release/libspiro/libspiro0/libspiro0-20071029-1.expected b/test/testdata/hints/x86/release/libspiro/libspiro0/libspiro0-20071029-1.expected
new file mode 100644
index 0000000..b16efe0
--- /dev/null
+++ b/test/testdata/hints/x86/release/libspiro/libspiro0/libspiro0-20071029-1.expected
@@ -0,0 +1 @@
+OrderedDict([('parse-errors', ['invalid UTF-8'])])
diff --git a/test/testdata/hints/x86/release/libtextcat/expected b/test/testdata/hints/x86/release/libtextcat/expected
deleted file mode 100644
index 498e7e5..0000000
--- a/test/testdata/hints/x86/release/libtextcat/expected
+++ /dev/null
@@ -1,11 +0,0 @@
-{'sdesc': '"Text Classification Library (language guessing in C)"',
- 'ldesc': '"Libtextcat is a library with functions that implement the\n'
-          'classification technique described in Cavnar & Trenkle, "N-Gram-Based\n'
-          'Text Categorization". It was primarily developed for language\n'
-          'guessing, a task on which it is known to perform with near-perfect\n'
-          'accuracy.\n'
-          'BSD License.\n'
-          'http://software.wise-guys.nl/libtextcat/"',
- 'category': 'Text',
- 'requires': 'libtextcat0',
- 'parse-errors': ['embedded quote at line 7']}
diff --git a/test/testdata/hints/x86/release/libtextcat/libtextcat-2.2-2.expected b/test/testdata/hints/x86/release/libtextcat/libtextcat-2.2-2.expected
new file mode 100644
index 0000000..498e7e5
--- /dev/null
+++ b/test/testdata/hints/x86/release/libtextcat/libtextcat-2.2-2.expected
@@ -0,0 +1,11 @@
+{'sdesc': '"Text Classification Library (language guessing in C)"',
+ 'ldesc': '"Libtextcat is a library with functions that implement the\n'
+          'classification technique described in Cavnar & Trenkle, "N-Gram-Based\n'
+          'Text Categorization". It was primarily developed for language\n'
+          'guessing, a task on which it is known to perform with near-perfect\n'
+          'accuracy.\n'
+          'BSD License.\n'
+          'http://software.wise-guys.nl/libtextcat/"',
+ 'category': 'Text',
+ 'requires': 'libtextcat0',
+ 'parse-errors': ['embedded quote at line 7']}
diff --git a/test/testdata/hints/x86/release/libtextcat/libtextcat-devel/expected b/test/testdata/hints/x86/release/libtextcat/libtextcat-devel/expected
deleted file mode 100644
index aca0db6..0000000
--- a/test/testdata/hints/x86/release/libtextcat/libtextcat-devel/expected
+++ /dev/null
@@ -1,12 +0,0 @@
-{'sdesc': '"Helper, header and library for libtextcat"',
- 'ldesc': '"Libtextcat is a library with functions that implement the\n'
-          'classification technique described in Cavnar & Trenkle, "N-Gram-Based\n'
-          'Text Categorization". It was primarily developed for language\n'
-          'guessing, a task on which it is known to perform with near-perfect\n'
-          'accuracy.\n'
-          'BSD License.\n'
-          'http://software.wise-guys.nl/libtextcat/"',
- 'category': 'Devel Text',
- 'requires': 'libtextcat libtextcat0',
- 'external-source': 'libtextcat',
- 'parse-errors': ['embedded quote at line 7']}
diff --git a/test/testdata/hints/x86/release/libtextcat/libtextcat-devel/libtextcat-devel-2.2-2.expected b/test/testdata/hints/x86/release/libtextcat/libtextcat-devel/libtextcat-devel-2.2-2.expected
new file mode 100644
index 0000000..aca0db6
--- /dev/null
+++ b/test/testdata/hints/x86/release/libtextcat/libtextcat-devel/libtextcat-devel-2.2-2.expected
@@ -0,0 +1,12 @@
+{'sdesc': '"Helper, header and library for libtextcat"',
+ 'ldesc': '"Libtextcat is a library with functions that implement the\n'
+          'classification technique described in Cavnar & Trenkle, "N-Gram-Based\n'
+          'Text Categorization". It was primarily developed for language\n'
+          'guessing, a task on which it is known to perform with near-perfect\n'
+          'accuracy.\n'
+          'BSD License.\n'
+          'http://software.wise-guys.nl/libtextcat/"',
+ 'category': 'Devel Text',
+ 'requires': 'libtextcat libtextcat0',
+ 'external-source': 'libtextcat',
+ 'parse-errors': ['embedded quote at line 7']}
diff --git a/test/testdata/hints/x86/release/libtextcat/libtextcat0/expected b/test/testdata/hints/x86/release/libtextcat/libtextcat0/expected
deleted file mode 100644
index 7f186d6..0000000
--- a/test/testdata/hints/x86/release/libtextcat/libtextcat0/expected
+++ /dev/null
@@ -1,12 +0,0 @@
-{'sdesc': '"Text Classification Library dll"',
- 'ldesc': '"Libtextcat is a library with functions that implement the\n'
-          'classification technique described in Cavnar & Trenkle, "N-Gram-Based\n'
-          'Text Categorization". It was primarily developed for language\n'
-          'guessing, a task on which it is known to perform with near-perfect\n'
-          'accuracy.\n'
-          'BSD License.\n'
-          'http://software.wise-guys.nl/libtextcat/"',
- 'category': 'Text',
- 'requires': 'cygwin',
- 'external-source': 'libtextcat',
- 'parse-errors': ['embedded quote at line 7']}
diff --git a/test/testdata/hints/x86/release/libtextcat/libtextcat0/libtextcat0-2.2-2.expected b/test/testdata/hints/x86/release/libtextcat/libtextcat0/libtextcat0-2.2-2.expected
new file mode 100644
index 0000000..7f186d6
--- /dev/null
+++ b/test/testdata/hints/x86/release/libtextcat/libtextcat0/libtextcat0-2.2-2.expected
@@ -0,0 +1,12 @@
+{'sdesc': '"Text Classification Library dll"',
+ 'ldesc': '"Libtextcat is a library with functions that implement the\n'
+          'classification technique described in Cavnar & Trenkle, "N-Gram-Based\n'
+          'Text Categorization". It was primarily developed for language\n'
+          'guessing, a task on which it is known to perform with near-perfect\n'
+          'accuracy.\n'
+          'BSD License.\n'
+          'http://software.wise-guys.nl/libtextcat/"',
+ 'category': 'Text',
+ 'requires': 'cygwin',
+ 'external-source': 'libtextcat',
+ 'parse-errors': ['embedded quote at line 7']}
diff --git a/test/testdata/hints/x86/release/mDNSResponder/expected b/test/testdata/hints/x86/release/mDNSResponder/expected
deleted file mode 100644
index f02a324..0000000
--- a/test/testdata/hints/x86/release/mDNSResponder/expected
+++ /dev/null
@@ -1,10 +0,0 @@
-{'category': 'Net',
- 'requires': 'libdns_sd1',
- 'sdesc': '"Bonjour Zeroconf implementation"',
- '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."',
- '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"'}
diff --git a/test/testdata/hints/x86/release/mDNSResponder/libdns_sd-devel/expected b/test/testdata/hints/x86/release/mDNSResponder/libdns_sd-devel/expected
deleted file mode 100644
index 8e93797..0000000
--- a/test/testdata/hints/x86/release/mDNSResponder/libdns_sd-devel/expected
+++ /dev/null
@@ -1,7 +0,0 @@
-{'category': 'Net',
- 'requires': 'libdns_sd1',
- 'sdesc': '"Bonjour Zeroconf implementation"',
- '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."',
- 'external-source': 'mDNSResponder'}
diff --git a/test/testdata/hints/x86/release/mDNSResponder/libdns_sd-devel/libdns_sd-devel-379.32.1-1.expected b/test/testdata/hints/x86/release/mDNSResponder/libdns_sd-devel/libdns_sd-devel-379.32.1-1.expected
new file mode 100644
index 0000000..8e93797
--- /dev/null
+++ b/test/testdata/hints/x86/release/mDNSResponder/libdns_sd-devel/libdns_sd-devel-379.32.1-1.expected
@@ -0,0 +1,7 @@
+{'category': 'Net',
+ 'requires': 'libdns_sd1',
+ 'sdesc': '"Bonjour Zeroconf implementation"',
+ '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."',
+ 'external-source': 'mDNSResponder'}
diff --git a/test/testdata/hints/x86/release/mDNSResponder/libdns_sd1/expected b/test/testdata/hints/x86/release/mDNSResponder/libdns_sd1/expected
deleted file mode 100644
index 45d0032..0000000
--- a/test/testdata/hints/x86/release/mDNSResponder/libdns_sd1/expected
+++ /dev/null
@@ -1,7 +0,0 @@
-{'category': 'Net',
- 'requires': '',
- 'sdesc': '"Bonjour Zeroconf implementation"',
- '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."',
- 'external-source': 'mDNSResponder'}
diff --git a/test/testdata/hints/x86/release/mDNSResponder/libdns_sd1/libdns_sd1-379.32.1-1.expected b/test/testdata/hints/x86/release/mDNSResponder/libdns_sd1/libdns_sd1-379.32.1-1.expected
new file mode 100644
index 0000000..45d0032
--- /dev/null
+++ b/test/testdata/hints/x86/release/mDNSResponder/libdns_sd1/libdns_sd1-379.32.1-1.expected
@@ -0,0 +1,7 @@
+{'category': 'Net',
+ 'requires': '',
+ 'sdesc': '"Bonjour Zeroconf implementation"',
+ '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."',
+ 'external-source': 'mDNSResponder'}
diff --git a/test/testdata/hints/x86/release/mDNSResponder/mDNSResponder-379.32.1-1.expected b/test/testdata/hints/x86/release/mDNSResponder/mDNSResponder-379.32.1-1.expected
new file mode 100644
index 0000000..f02a324
--- /dev/null
+++ b/test/testdata/hints/x86/release/mDNSResponder/mDNSResponder-379.32.1-1.expected
@@ -0,0 +1,10 @@
+{'category': 'Net',
+ 'requires': 'libdns_sd1',
+ 'sdesc': '"Bonjour Zeroconf implementation"',
+ '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."',
+ '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"'}
diff --git a/test/testdata/hints/x86/release/mingw64-i686-binutils/expected b/test/testdata/hints/x86/release/mingw64-i686-binutils/expected
deleted file mode 100644
index 114e53c..0000000
--- a/test/testdata/hints/x86/release/mingw64-i686-binutils/expected
+++ /dev/null
@@ -1,6 +0,0 @@
-{'category': 'Devel',
- 'requires': 'cygwin libintl8 zlib0',
- 'sdesc': '"The GNU Binutils are a collection of binary tools. This package\n is capable of targeting win32"',
- 'ldesc': '"Binutils for MinGW-w64 Win32 toolchain"',
- 'parse-errors': ['key sdesc has multi-line value'],
- 'parse-warnings': ["sdesc ends with '.'", 'sdesc is much longer than ldesc']}
diff --git a/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-2.29.1.787c9873-1.expected b/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-2.29.1.787c9873-1.expected
new file mode 100644
index 0000000..114e53c
--- /dev/null
+++ b/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-2.29.1.787c9873-1.expected
@@ -0,0 +1,6 @@
+{'category': 'Devel',
+ 'requires': 'cygwin libintl8 zlib0',
+ 'sdesc': '"The GNU Binutils are a collection of binary tools. This package\n is capable of targeting win32"',
+ 'ldesc': '"Binutils for MinGW-w64 Win32 toolchain"',
+ 'parse-errors': ['key sdesc has multi-line value'],
+ 'parse-warnings': ["sdesc ends with '.'", 'sdesc is much longer than ldesc']}
diff --git a/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/expected b/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/expected
deleted file mode 100644
index c936ff6..0000000
--- a/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/expected
+++ /dev/null
@@ -1,7 +0,0 @@
-{'category': 'Debug',
- 'requires': 'cygwin-debuginfo',
- 'external-source': 'mingw64-i686-binutils',
- 'ldesc': '"Debug info for mingw64-i686-binutils"',
- 'sdesc': '"This package contains files necessary for debugging the\nmingw64-i686-binutils package with gdb"',
- 'parse-errors': ['key sdesc has multi-line value'],
- 'parse-warnings': ["sdesc ends with '.'", 'sdesc is much longer than ldesc']}
diff --git a/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/mingw64-i686-binutils-debuginfo-2.29.1.787c9873-1.expected b/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/mingw64-i686-binutils-debuginfo-2.29.1.787c9873-1.expected
new file mode 100644
index 0000000..c936ff6
--- /dev/null
+++ b/test/testdata/hints/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/mingw64-i686-binutils-debuginfo-2.29.1.787c9873-1.expected
@@ -0,0 +1,7 @@
+{'category': 'Debug',
+ 'requires': 'cygwin-debuginfo',
+ 'external-source': 'mingw64-i686-binutils',
+ 'ldesc': '"Debug info for mingw64-i686-binutils"',
+ 'sdesc': '"This package contains files necessary for debugging the\nmingw64-i686-binutils package with gdb"',
+ 'parse-errors': ['key sdesc has multi-line value'],
+ 'parse-warnings': ["sdesc ends with '.'", 'sdesc is much longer than ldesc']}
diff --git a/test/testdata/hints/x86/release/openssh/expected b/test/testdata/hints/x86/release/openssh/expected
deleted file mode 100644
index 8eeefad..0000000
--- a/test/testdata/hints/x86/release/openssh/expected
+++ /dev/null
@@ -1,5 +0,0 @@
-{'category': 'Net',
- 'sdesc': '"The OpenSSH server and client programs"',
- 'ldesc': '"OpenSSH is a program for logging into a remote machine and for\n'
-          '\texecuting commands on a remote machine.  It can replace rlogin and rsh,\n'
-          '\tproviding encrypted communication between two machines."'}
diff --git a/test/testdata/hints/x86/release/openssh/openssh-7.2p2-1.expected b/test/testdata/hints/x86/release/openssh/openssh-7.2p2-1.expected
new file mode 100644
index 0000000..8eeefad
--- /dev/null
+++ b/test/testdata/hints/x86/release/openssh/openssh-7.2p2-1.expected
@@ -0,0 +1,5 @@
+{'category': 'Net',
+ 'sdesc': '"The OpenSSH server and client programs"',
+ 'ldesc': '"OpenSSH is a program for logging into a remote machine and for\n'
+          '\texecuting commands on a remote machine.  It can replace rlogin and rsh,\n'
+          '\tproviding encrypted communication between two machines."'}
diff --git a/test/testdata/hints/x86/release/per-version-incomplete/override.expected b/test/testdata/hints/x86/release/per-version-incomplete/override.expected
new file mode 100644
index 0000000..75890e5
--- /dev/null
+++ b/test/testdata/hints/x86/release/per-version-incomplete/override.expected
@@ -0,0 +1 @@
+OrderedDict()
diff --git a/test/testdata/hints/x86/release/per-version-incomplete/per-version-incomplete-36-1.expected b/test/testdata/hints/x86/release/per-version-incomplete/per-version-incomplete-36-1.expected
new file mode 100644
index 0000000..e59d0d2
--- /dev/null
+++ b/test/testdata/hints/x86/release/per-version-incomplete/per-version-incomplete-36-1.expected
@@ -0,0 +1,3 @@
+{'sdesc': '"Per-version hint test package"',
+ 'ldesc': '"Per-version hint test package with missing hint data for some versions"',
+ 'category': 'Base'}
diff --git a/test/testdata/hints/x86/release/per-version-replacement-hint-only/per-version-replacement-hint-only-1.0-1.expected b/test/testdata/hints/x86/release/per-version-replacement-hint-only/per-version-replacement-hint-only-1.0-1.expected
new file mode 100644
index 0000000..d6a1e1f
--- /dev/null
+++ b/test/testdata/hints/x86/release/per-version-replacement-hint-only/per-version-replacement-hint-only-1.0-1.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Per-version hint test package"',
+ 'ldesc': '"Per-version hint test package"',
+ 'category': 'Base',
+ 'requires': 'cygwin'}
diff --git a/test/testdata/hints/x86/release/per-version/override.expected b/test/testdata/hints/x86/release/per-version/override.expected
new file mode 100644
index 0000000..73d138e
--- /dev/null
+++ b/test/testdata/hints/x86/release/per-version/override.expected
@@ -0,0 +1 @@
+OrderedDict([('curr', '4.8-1')])
diff --git a/test/testdata/hints/x86/release/per-version/per-version-4.0-1.expected b/test/testdata/hints/x86/release/per-version/per-version-4.0-1.expected
new file mode 100644
index 0000000..d6a1e1f
--- /dev/null
+++ b/test/testdata/hints/x86/release/per-version/per-version-4.0-1.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Per-version hint test package"',
+ 'ldesc': '"Per-version hint test package"',
+ 'category': 'Base',
+ 'requires': 'cygwin'}
diff --git a/test/testdata/hints/x86/release/per-version/per-version-4.8-1.expected b/test/testdata/hints/x86/release/per-version/per-version-4.8-1.expected
new file mode 100644
index 0000000..40a138b
--- /dev/null
+++ b/test/testdata/hints/x86/release/per-version/per-version-4.8-1.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Per-version hint test package"',
+ 'ldesc': '"Per-version hint test package"',
+ 'category': 'Base',
+ 'requires': 'base-cygwin'}
diff --git a/test/testdata/hints/x86/release/proj/expected b/test/testdata/hints/x86/release/proj/expected
deleted file mode 100644
index 40db455..0000000
--- a/test/testdata/hints/x86/release/proj/expected
+++ /dev/null
@@ -1,5 +0,0 @@
-{'category': 'Graphics Libs',
- 'requires': 'libproj1',
- 'sdesc': '""The PROJ Cartographic Projections Software (utilities)"\n'
-          'ldesc: "Cartographic projection library and utilities"',
- 'parse-errors': ['embedded quote at line 3', 'key sdesc has multi-line value']}
diff --git a/test/testdata/hints/x86/release/proj/libproj-devel/expected b/test/testdata/hints/x86/release/proj/libproj-devel/expected
deleted file mode 100644
index 620f019..0000000
--- a/test/testdata/hints/x86/release/proj/libproj-devel/expected
+++ /dev/null
@@ -1,6 +0,0 @@
-{'category': 'Graphics Libs',
- 'requires': 'libproj1',
- 'sdesc': '""The PROJ Cartographic Projections Software (devel)"\n'
-          'ldesc: "Cartographic projection library and utilities"',
- 'external-source': 'proj',
- 'parse-errors': ['embedded quote at line 3', 'key sdesc has multi-line value']}
diff --git a/test/testdata/hints/x86/release/proj/libproj-devel/libproj-devel-4.8.0-1.expected b/test/testdata/hints/x86/release/proj/libproj-devel/libproj-devel-4.8.0-1.expected
new file mode 100644
index 0000000..620f019
--- /dev/null
+++ b/test/testdata/hints/x86/release/proj/libproj-devel/libproj-devel-4.8.0-1.expected
@@ -0,0 +1,6 @@
+{'category': 'Graphics Libs',
+ 'requires': 'libproj1',
+ 'sdesc': '""The PROJ Cartographic Projections Software (devel)"\n'
+          'ldesc: "Cartographic projection library and utilities"',
+ 'external-source': 'proj',
+ 'parse-errors': ['embedded quote at line 3', 'key sdesc has multi-line value']}
diff --git a/test/testdata/hints/x86/release/proj/libproj1/expected b/test/testdata/hints/x86/release/proj/libproj1/expected
deleted file mode 100644
index cc05b73..0000000
--- a/test/testdata/hints/x86/release/proj/libproj1/expected
+++ /dev/null
@@ -1,6 +0,0 @@
-{'category': 'Graphics Libs',
- 'requires': '',
- 'sdesc': '""The PROJ Cartographic Projections Software (runtime)"\n'
-          'ldesc: "Cartographic projection library and utilities"',
- 'external-source': 'proj',
- 'parse-errors': ['embedded quote at line 3', 'key sdesc has multi-line value']}
diff --git a/test/testdata/hints/x86/release/proj/libproj1/libproj1-4.8.0-1.expected b/test/testdata/hints/x86/release/proj/libproj1/libproj1-4.8.0-1.expected
new file mode 100644
index 0000000..cc05b73
--- /dev/null
+++ b/test/testdata/hints/x86/release/proj/libproj1/libproj1-4.8.0-1.expected
@@ -0,0 +1,6 @@
+{'category': 'Graphics Libs',
+ 'requires': '',
+ 'sdesc': '""The PROJ Cartographic Projections Software (runtime)"\n'
+          'ldesc: "Cartographic projection library and utilities"',
+ 'external-source': 'proj',
+ 'parse-errors': ['embedded quote at line 3', 'key sdesc has multi-line value']}
diff --git a/test/testdata/hints/x86/release/proj/proj-4.8.0-1.expected b/test/testdata/hints/x86/release/proj/proj-4.8.0-1.expected
new file mode 100644
index 0000000..40db455
--- /dev/null
+++ b/test/testdata/hints/x86/release/proj/proj-4.8.0-1.expected
@@ -0,0 +1,5 @@
+{'category': 'Graphics Libs',
+ 'requires': 'libproj1',
+ 'sdesc': '""The PROJ Cartographic Projections Software (utilities)"\n'
+          'ldesc: "Cartographic projection library and utilities"',
+ 'parse-errors': ['embedded quote at line 3', 'key sdesc has multi-line value']}
diff --git a/test/testdata/hints/x86/release/rpm-doc/expected b/test/testdata/hints/x86/release/rpm-doc/expected
deleted file mode 100644
index a47a381..0000000
--- a/test/testdata/hints/x86/release/rpm-doc/expected
+++ /dev/null
@@ -1,2 +0,0 @@
-{'sdesc': '"Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)"',
- 'category': '_obsolete'}
diff --git a/test/testdata/hints/x86/release/rpm-doc/rpm-doc-4.1-2.expected b/test/testdata/hints/x86/release/rpm-doc/rpm-doc-4.1-2.expected
new file mode 100644
index 0000000..a47a381
--- /dev/null
+++ b/test/testdata/hints/x86/release/rpm-doc/rpm-doc-4.1-2.expected
@@ -0,0 +1,2 @@
+{'sdesc': '"Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)"',
+ 'category': '_obsolete'}
diff --git a/test/testdata/hints/x86/release/rpm-doc/rpm-doc-999-1.expected b/test/testdata/hints/x86/release/rpm-doc/rpm-doc-999-1.expected
new file mode 100644
index 0000000..a47a381
--- /dev/null
+++ b/test/testdata/hints/x86/release/rpm-doc/rpm-doc-999-1.expected
@@ -0,0 +1,2 @@
+{'sdesc': '"Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)"',
+ 'category': '_obsolete'}
diff --git a/test/testdata/hints/x86/release/splint/expected b/test/testdata/hints/x86/release/splint/expected
deleted file mode 100644
index 5667e4b..0000000
--- a/test/testdata/hints/x86/release/splint/expected
+++ /dev/null
@@ -1,15 +0,0 @@
-{'sdesc': '"Check C programs for security vulnerabilities and programming\nmistakes"',
- 'ldesc': '"Program does many of the traditional lint checks including\n'
-          'unused declarations, type inconsistencies, use before definition,\n'
-          'unreachable code, ignored return values, execution paths with no\n'
-          'return, likely infinite loops, and fall through cases. More powerful\n'
-          'checks are made possible by additional information given in source\n'
-          'code annotations. Annotations are stylized comments that document\n'
-          'assumptions about functions, variables, parameters and types. In\n'
-          'addition to the checks specifically enabled by annotations, many of\n'
-          'the traditional lint checks are improved by exploiting this additional\n'
-          'setinformation."',
- 'category': 'Devel',
- 'requires': 'cygwin',
- 'parse-errors': ['key sdesc has multi-line value'],
- 'parse-warnings': ["sdesc ends with '.'"]}
diff --git a/test/testdata/hints/x86/release/splint/splint-3.1.2-1.expected b/test/testdata/hints/x86/release/splint/splint-3.1.2-1.expected
new file mode 100644
index 0000000..5667e4b
--- /dev/null
+++ b/test/testdata/hints/x86/release/splint/splint-3.1.2-1.expected
@@ -0,0 +1,15 @@
+{'sdesc': '"Check C programs for security vulnerabilities and programming\nmistakes"',
+ 'ldesc': '"Program does many of the traditional lint checks including\n'
+          'unused declarations, type inconsistencies, use before definition,\n'
+          'unreachable code, ignored return values, execution paths with no\n'
+          'return, likely infinite loops, and fall through cases. More powerful\n'
+          'checks are made possible by additional information given in source\n'
+          'code annotations. Annotations are stylized comments that document\n'
+          'assumptions about functions, variables, parameters and types. In\n'
+          'addition to the checks specifically enabled by annotations, many of\n'
+          'the traditional lint checks are improved by exploiting this additional\n'
+          'setinformation."',
+ 'category': 'Devel',
+ 'requires': 'cygwin',
+ 'parse-errors': ['key sdesc has multi-line value'],
+ 'parse-warnings': ["sdesc ends with '.'"]}
diff --git a/test/testdata/hints/x86/release/staleversion/expected b/test/testdata/hints/x86/release/staleversion/expected
deleted file mode 100644
index f7cc4fd..0000000
--- a/test/testdata/hints/x86/release/staleversion/expected
+++ /dev/null
@@ -1,4 +0,0 @@
-{'sdesc': '"Test package for stale version removal"',
- 'ldesc': '"Test package for stale version removal"',
- 'category': 'Shells Base',
- 'requires': ''}
diff --git a/test/testdata/hints/x86/release/staleversion/override.expected b/test/testdata/hints/x86/release/staleversion/override.expected
new file mode 100644
index 0000000..a0e7bdc
--- /dev/null
+++ b/test/testdata/hints/x86/release/staleversion/override.expected
@@ -0,0 +1 @@
+OrderedDict([('test', '260-0'), ('curr', '250-0'), ('prev', '243-0'), ('keep-count', '0')])
diff --git a/test/testdata/hints/x86/release/staleversion/staleversion-240-1.expected b/test/testdata/hints/x86/release/staleversion/staleversion-240-1.expected
new file mode 100644
index 0000000..f7cc4fd
--- /dev/null
+++ b/test/testdata/hints/x86/release/staleversion/staleversion-240-1.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Test package for stale version removal"',
+ 'ldesc': '"Test package for stale version removal"',
+ 'category': 'Shells Base',
+ 'requires': ''}
diff --git a/test/testdata/hints/x86/release/staleversion/staleversion-242-0.expected b/test/testdata/hints/x86/release/staleversion/staleversion-242-0.expected
new file mode 100644
index 0000000..f7cc4fd
--- /dev/null
+++ b/test/testdata/hints/x86/release/staleversion/staleversion-242-0.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Test package for stale version removal"',
+ 'ldesc': '"Test package for stale version removal"',
+ 'category': 'Shells Base',
+ 'requires': ''}
diff --git a/test/testdata/hints/x86/release/staleversion/staleversion-243-0.expected b/test/testdata/hints/x86/release/staleversion/staleversion-243-0.expected
new file mode 100644
index 0000000..f7cc4fd
--- /dev/null
+++ b/test/testdata/hints/x86/release/staleversion/staleversion-243-0.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Test package for stale version removal"',
+ 'ldesc': '"Test package for stale version removal"',
+ 'category': 'Shells Base',
+ 'requires': ''}
diff --git a/test/testdata/hints/x86/release/staleversion/staleversion-250-0.expected b/test/testdata/hints/x86/release/staleversion/staleversion-250-0.expected
new file mode 100644
index 0000000..f7cc4fd
--- /dev/null
+++ b/test/testdata/hints/x86/release/staleversion/staleversion-250-0.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Test package for stale version removal"',
+ 'ldesc': '"Test package for stale version removal"',
+ 'category': 'Shells Base',
+ 'requires': ''}
diff --git a/test/testdata/hints/x86/release/staleversion/staleversion-251-0.expected b/test/testdata/hints/x86/release/staleversion/staleversion-251-0.expected
new file mode 100644
index 0000000..f7cc4fd
--- /dev/null
+++ b/test/testdata/hints/x86/release/staleversion/staleversion-251-0.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Test package for stale version removal"',
+ 'ldesc': '"Test package for stale version removal"',
+ 'category': 'Shells Base',
+ 'requires': ''}
diff --git a/test/testdata/hints/x86/release/staleversion/staleversion-260-0.expected b/test/testdata/hints/x86/release/staleversion/staleversion-260-0.expected
new file mode 100644
index 0000000..f7cc4fd
--- /dev/null
+++ b/test/testdata/hints/x86/release/staleversion/staleversion-260-0.expected
@@ -0,0 +1,4 @@
+{'sdesc': '"Test package for stale version removal"',
+ 'ldesc': '"Test package for stale version removal"',
+ 'category': 'Shells Base',
+ 'requires': ''}
diff --git a/test/testdata/hints/x86/release/testpackage/expected b/test/testdata/hints/x86/release/testpackage/expected
deleted file mode 100644
index aa3c772..0000000
--- a/test/testdata/hints/x86/release/testpackage/expected
+++ /dev/null
@@ -1,3 +0,0 @@
-{'sdesc': '"A test package (stuff & other stuff)"',
- 'ldesc': '"A test package (stuff & other stuff)"',
- 'category': 'Devel'}
diff --git a/test/testdata/hints/x86/release/testpackage/testpackage-0.1-1.expected b/test/testdata/hints/x86/release/testpackage/testpackage-0.1-1.expected
new file mode 100644
index 0000000..aa3c772
--- /dev/null
+++ b/test/testdata/hints/x86/release/testpackage/testpackage-0.1-1.expected
@@ -0,0 +1,3 @@
+{'sdesc': '"A test package (stuff & other stuff)"',
+ 'ldesc': '"A test package (stuff & other stuff)"',
+ 'category': 'Devel'}
diff --git a/test/testdata/process_arch/rel_area.expected b/test/testdata/process_arch/rel_area.expected
index fd14f14..4b3b3ea 100644
--- a/test/testdata/process_arch/rel_area.expected
+++ b/test/testdata/process_arch/rel_area.expected
@@ -4,62 +4,83 @@
  'noarch/release/obs-a': ['obs-a-1.0-1-src.tar.xz', 'obs-a-1.0-1.hint', 'obs-a-1.0-1.tar.xz', 'sha512.sum'],
  'noarch/release/obs-b': ['obs-b-1.0-1-src.tar.xz', 'obs-b-1.0-1.hint', 'obs-b-1.0-1.tar.xz', 'sha512.sum'],
  'noarch/release/perl-Net-SMTP-SSL': ['perl-Net-SMTP-SSL-1.03-1-src.tar.xz',
+                                      'perl-Net-SMTP-SSL-1.03-1.hint',
                                       'perl-Net-SMTP-SSL-1.03-1.tar.xz',
                                       'perl-Net-SMTP-SSL-1.03-2-src.tar.xz',
                                       'perl-Net-SMTP-SSL-1.03-2.hint',
                                       'perl-Net-SMTP-SSL-1.03-2.tar.xz',
-                                      'setup.hint',
                                       'sha512.sum'],
  'noarch/release/test-c': ['sha512.sum', 'test-c-1.0-1-src.tar.xz', 'test-c-1.0-1.hint', 'test-c-1.0-1.tar.xz'],
  'noarch/release/test-d': ['sha512.sum', 'test-d-1.0-1-src.tar.xz', 'test-d-1.0-1.hint', 'test-d-1.0-1.tar.xz'],
  'noarch/release/test-e': ['sha512.sum', 'test-e-1.0-1-src.tar.xz', 'test-e-1.0-1.hint', 'test-e-1.0-1.tar.xz'],
  'x86': ['sha512.sum'],
  'x86/release': ['sha512.sum'],
- 'x86/release/arc': ['arc-4.32.7-10-src.tar.bz2', 'arc-4.32.7-10.tar.bz2', 'setup.hint'],
- 'x86/release/base-cygwin': ['base-cygwin-3.6-1.tar.xz', 'base-cygwin-3.8-1.tar.xz', 'setup.hint', 'sha512.sum'],
- 'x86/release/corrupt': ['corrupt-2.0.0-1-src.tar.xz', 'corrupt-2.0.0-1.tar.xz', 'setup.hint', 'sha512.sum'],
+ 'x86/release/arc': ['arc-4.32.7-10-src.tar.bz2', 'arc-4.32.7-10.hint', 'arc-4.32.7-10.tar.bz2'],
+ 'x86/release/base-cygwin': ['base-cygwin-3.6-1.hint',
+                             'base-cygwin-3.6-1.tar.xz',
+                             'base-cygwin-3.8-1.hint',
+                             'base-cygwin-3.8-1.tar.xz',
+                             'sha512.sum'],
+ 'x86/release/corrupt': ['corrupt-2.0.0-1-src.tar.xz', 'corrupt-2.0.0-1.hint', 'corrupt-2.0.0-1.tar.xz', 'sha512.sum'],
  'x86/release/cygwin': ['.this-should-be-ignored',
                         'cygwin-2.2.0-1-src.tar.xz',
+                        'cygwin-2.2.0-1.hint',
                         'cygwin-2.2.0-1.tar.xz',
                         'cygwin-2.2.1-1-src.tar.xz',
+                        'cygwin-2.2.1-1.hint',
                         'cygwin-2.2.1-1.tar.xz',
                         'cygwin-2.3.0-0.3-src.tar.xz',
                         'cygwin-2.3.0-0.3.hint',
                         'cygwin-2.3.0-0.3.tar.xz',
-                        'setup.hint',
+                        'override.hint',
                         'sha512.sum'],
- 'x86/release/cygwin/cygwin-debuginfo': ['cygwin-debuginfo-2.2.0-1.tar.xz',
+ 'x86/release/cygwin/cygwin-debuginfo': ['cygwin-debuginfo-2.2.0-1.hint',
+                                         'cygwin-debuginfo-2.2.0-1.tar.xz',
+                                         'cygwin-debuginfo-2.2.1-1.hint',
                                          'cygwin-debuginfo-2.2.1-1.tar.xz',
+                                         'cygwin-debuginfo-2.3.0-0.3.hint',
                                          'cygwin-debuginfo-2.3.0-0.3.tar.xz',
-                                         'setup.hint',
+                                         'override.hint',
                                          'sha512.sum'],
- 'x86/release/cygwin/cygwin-devel': ['cygwin-devel-2.2.0-1.tar.xz',
+ 'x86/release/cygwin/cygwin-devel': ['cygwin-devel-2.2.0-1.hint',
+                                     'cygwin-devel-2.2.0-1.tar.xz',
+                                     'cygwin-devel-2.2.1-1.hint',
                                      'cygwin-devel-2.2.1-1.tar.xz',
+                                     'cygwin-devel-2.3.0-0.3.hint',
                                      'cygwin-devel-2.3.0-0.3.tar.xz',
-                                     'setup.hint',
+                                     'override.hint',
                                      'sha512.sum'],
- 'x86/release/invalid': ['setup.hint', 'sha512.sum'],
+ 'x86/release/invalid': ['invalid-0.hint', 'sha512.sum'],
  'x86/release/keychain': ['keychain-2.6.8-1-src.tar.bz2',
+                          'keychain-2.6.8-1.hint',
                           'keychain-2.6.8-1.tar.bz2',
                           'keychain-2.7.1-1-src.tar.bz2',
+                          'keychain-2.7.1-1.hint',
                           'keychain-2.7.1-1.tar.bz2',
-                          'setup.hint',
                           'sha512.sum'],
- 'x86/release/libspiro': ['setup.hint', 'sha512.sum'],
- 'x86/release/libspiro/libspiro-devel': ['setup.hint', 'sha512.sum'],
- 'x86/release/libspiro/libspiro0': ['setup.hint', 'sha512.sum'],
- 'x86/release/libtextcat': ['libtextcat-2.2-2-src.tar.bz2', 'libtextcat-2.2-2.tar.bz2', 'setup.hint', 'sha512.sum'],
- 'x86/release/libtextcat/libtextcat-devel': ['libtextcat-devel-2.2-2.tar.bz2', 'setup.hint', 'sha512.sum'],
- 'x86/release/libtextcat/libtextcat0': ['libtextcat0-2.2-2.tar.bz2', 'setup.hint', 'sha512.sum'],
+ 'x86/release/libspiro': ['libspiro-20071029-1.hint', 'sha512.sum'],
+ 'x86/release/libspiro/libspiro-devel': ['libspiro-devel-20071029-1.hint', 'sha512.sum'],
+ 'x86/release/libspiro/libspiro0': ['libspiro0-20071029-1.hint', 'sha512.sum'],
+ 'x86/release/libtextcat': ['libtextcat-2.2-2-src.tar.bz2',
+                            'libtextcat-2.2-2.hint',
+                            'libtextcat-2.2-2.tar.bz2',
+                            'sha512.sum'],
+ 'x86/release/libtextcat/libtextcat-devel': ['libtextcat-devel-2.2-2.hint',
+                                             'libtextcat-devel-2.2-2.tar.bz2',
+                                             'sha512.sum'],
+ 'x86/release/libtextcat/libtextcat0': ['libtextcat0-2.2-2.hint', 'libtextcat0-2.2-2.tar.bz2', 'sha512.sum'],
  'x86/release/mDNSResponder': ['mDNSResponder-379.32.1-1-src.tar.bz2',
+                               'mDNSResponder-379.32.1-1.hint',
                                'mDNSResponder-379.32.1-1.tar.bz2',
-                               'setup.hint',
                                'sha512.sum'],
- 'x86/release/mDNSResponder/libdns_sd-devel': ['libdns_sd-devel-379.32.1-1.tar.bz2', 'setup.hint', 'sha512.sum'],
- 'x86/release/mDNSResponder/libdns_sd1': ['libdns_sd1-379.32.1-1.tar.bz2', 'setup.hint', 'sha512.sum'],
- 'x86/release/mingw64-i686-binutils': ['setup.hint', 'sha512.sum'],
- 'x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo': ['setup.hint', 'sha512.sum'],
- 'x86/release/openssh': ['openssh-7.2p2-1-src.tar.xz', 'openssh-7.2p2-1.tar.xz', 'setup.hint', 'sha512.sum'],
+ 'x86/release/mDNSResponder/libdns_sd-devel': ['libdns_sd-devel-379.32.1-1.hint',
+                                               'libdns_sd-devel-379.32.1-1.tar.bz2',
+                                               'sha512.sum'],
+ 'x86/release/mDNSResponder/libdns_sd1': ['libdns_sd1-379.32.1-1.hint', 'libdns_sd1-379.32.1-1.tar.bz2', 'sha512.sum'],
+ 'x86/release/mingw64-i686-binutils': ['mingw64-i686-binutils-2.29.1.787c9873-1.hint', 'sha512.sum'],
+ 'x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo': ['mingw64-i686-binutils-debuginfo-2.29.1.787c9873-1.hint',
+                                                                       'sha512.sum'],
+ 'x86/release/openssh': ['openssh-7.2p2-1-src.tar.xz', 'openssh-7.2p2-1.hint', 'openssh-7.2p2-1.tar.xz', 'sha512.sum'],
  'x86/release/per-version': ['override.hint',
                              'per-version-4.0-1-src.tar.xz',
                              'per-version-4.0-1.hint',
@@ -82,26 +103,28 @@
                                                    'per-version-replacement-hint-only-1.0-1.hint',
                                                    'per-version-replacement-hint-only-1.0-1.tar.xz',
                                                    'sha512.sum'],
- 'x86/release/proj': ['setup.hint', 'sha512.sum'],
- 'x86/release/proj/libproj-devel': ['setup.hint', 'sha512.sum'],
- 'x86/release/proj/libproj1': ['setup.hint', 'sha512.sum'],
+ 'x86/release/proj': ['proj-4.8.0-1.hint', 'sha512.sum'],
+ 'x86/release/proj/libproj-devel': ['libproj-devel-4.8.0-1.hint', 'sha512.sum'],
+ 'x86/release/proj/libproj1': ['libproj1-4.8.0-1.hint', 'sha512.sum'],
  'x86/release/rpm-doc': ['rpm-doc-4.1-2-src.tar.bz2',
+                         'rpm-doc-4.1-2.hint',
                          'rpm-doc-4.1-2.tar.bz2',
+                         'rpm-doc-999-1.hint',
                          'rpm-doc-999-1.tar.bz2',
-                         'setup.hint',
                          'sha512.sum'],
- 'x86/release/splint': ['setup.hint', 'sha512.sum'],
+ 'x86/release/splint': ['sha512.sum', 'splint-3.1.2-1.hint'],
  'x86/release/staleversion': ['override.hint',
-                              'setup.hint',
                               'sha512.sum',
                               'staleversion-243-0-src.tar.xz',
+                              'staleversion-243-0.hint',
                               'staleversion-243-0.tar.xz',
                               'staleversion-250-0-src.tar.xz',
+                              'staleversion-250-0.hint',
                               'staleversion-250-0.tar.xz',
                               'staleversion-260-0-src.tar.xz',
+                              'staleversion-260-0.hint',
                               'staleversion-260-0.tar.xz'],
- 'x86/release/testpackage': ['setup.hint',
-                             'sha512.sum',
+ 'x86/release/testpackage': ['sha512.sum',
                              'testpackage-1.0-1-src.tar.bz2',
                              'testpackage-1.0-1.hint',
                              'testpackage-1.0-1.tar.bz2'],
diff --git a/test/testdata/process_arch/vault.expected b/test/testdata/process_arch/vault.expected
index d3cb74a..aa85163 100644
--- a/test/testdata/process_arch/vault.expected
+++ b/test/testdata/process_arch/vault.expected
@@ -2,9 +2,12 @@
  'x86': [],
  'x86/release': [],
  'x86/release/staleversion': ['staleversion-240-1-src.tar.xz',
+                              'staleversion-240-1.hint',
                               'staleversion-240-1.tar.xz',
                               'staleversion-242-0-src.tar.xz',
+                              'staleversion-242-0.hint',
                               'staleversion-242-0.tar.xz',
                               'staleversion-251-0-src.tar.xz',
+                              'staleversion-251-0.hint',
                               'staleversion-251-0.tar.xz'],
- 'x86/release/testpackage': ['testpackage-0.1-1-src.tar.bz2', 'testpackage-0.1-1.tar.bz2']}
+ 'x86/release/testpackage': ['testpackage-0.1-1-src.tar.bz2', 'testpackage-0.1-1.hint', 'testpackage-0.1-1.tar.bz2']}
diff --git a/test/testdata/relarea/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1.hint b/test/testdata/relarea/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1.hint
new file mode 100644
index 0000000..f91a0e1
--- /dev/null
+++ b/test/testdata/relarea/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1.hint
@@ -0,0 +1,5 @@
+category: Perl
+requires:
+sdesc: "Perl distribution Net-SMTP-SSL"
+ldesc: "Implements the same API as Net::SMTP, but uses IO::Socket::SSL for
+its network operations in order to support encrypted connections."
diff --git a/test/testdata/relarea/noarch/release/perl-Net-SMTP-SSL/setup.hint b/test/testdata/relarea/noarch/release/perl-Net-SMTP-SSL/setup.hint
deleted file mode 100644
index f91a0e1..0000000
--- a/test/testdata/relarea/noarch/release/perl-Net-SMTP-SSL/setup.hint
+++ /dev/null
@@ -1,5 +0,0 @@
-category: Perl
-requires:
-sdesc: "Perl distribution Net-SMTP-SSL"
-ldesc: "Implements the same API as Net::SMTP, but uses IO::Socket::SSL for
-its network operations in order to support encrypted connections."
diff --git a/test/testdata/relarea/x86/release/arc/arc-4.32.7-10.hint b/test/testdata/relarea/x86/release/arc/arc-4.32.7-10.hint
new file mode 100644
index 0000000..718cb55
--- /dev/null
+++ b/test/testdata/relarea/x86/release/arc/arc-4.32.7-10.hint
@@ -0,0 +1,8 @@
+sdesc: "The ARC archive utility"
+ldesc: "This program is based on the MSDOS ARC program, version 5.21, plus a
+few enhancements. ARC performs Huffman Squeezing on data. The Huffman
+Squeeze algorithm was removed from MSDOS ARC after version 5.12. It
+turns out to be more efficient than Lempel-Ziv style compression when
+compressing graphic images. Squeeze analysis is always done now, and
+the best of packing, squeezing, or crunching is used."
+category: Archive
diff --git a/test/testdata/relarea/x86/release/arc/setup.hint b/test/testdata/relarea/x86/release/arc/setup.hint
deleted file mode 100644
index 718cb55..0000000
--- a/test/testdata/relarea/x86/release/arc/setup.hint
+++ /dev/null
@@ -1,8 +0,0 @@
-sdesc: "The ARC archive utility"
-ldesc: "This program is based on the MSDOS ARC program, version 5.21, plus a
-few enhancements. ARC performs Huffman Squeezing on data. The Huffman
-Squeeze algorithm was removed from MSDOS ARC after version 5.12. It
-turns out to be more efficient than Lempel-Ziv style compression when
-compressing graphic images. Squeeze analysis is always done now, and
-the best of packing, squeezing, or crunching is used."
-category: Archive
diff --git a/test/testdata/relarea/x86/release/base-cygwin/base-cygwin-3.6-1.hint b/test/testdata/relarea/x86/release/base-cygwin/base-cygwin-3.6-1.hint
new file mode 100644
index 0000000..f6f64b2
--- /dev/null
+++ b/test/testdata/relarea/x86/release/base-cygwin/base-cygwin-3.6-1.hint
@@ -0,0 +1,4 @@
+sdesc: "Initial base installation helper script."
+ldesc: "Initial base installation helper script."
+category: Base
+requires: 
diff --git a/test/testdata/relarea/x86/release/base-cygwin/base-cygwin-3.8-1.hint b/test/testdata/relarea/x86/release/base-cygwin/base-cygwin-3.8-1.hint
new file mode 100644
index 0000000..f6f64b2
--- /dev/null
+++ b/test/testdata/relarea/x86/release/base-cygwin/base-cygwin-3.8-1.hint
@@ -0,0 +1,4 @@
+sdesc: "Initial base installation helper script."
+ldesc: "Initial base installation helper script."
+category: Base
+requires: 
diff --git a/test/testdata/relarea/x86/release/base-cygwin/setup.hint b/test/testdata/relarea/x86/release/base-cygwin/setup.hint
deleted file mode 100644
index f6f64b2..0000000
--- a/test/testdata/relarea/x86/release/base-cygwin/setup.hint
+++ /dev/null
@@ -1,4 +0,0 @@
-sdesc: "Initial base installation helper script."
-ldesc: "Initial base installation helper script."
-category: Base
-requires: 
diff --git a/test/testdata/relarea/x86/release/corrupt/corrupt-2.0.0-1.hint b/test/testdata/relarea/x86/release/corrupt/corrupt-2.0.0-1.hint
new file mode 100644
index 0000000..fa85bcc
--- /dev/null
+++ b/test/testdata/relarea/x86/release/corrupt/corrupt-2.0.0-1.hint
@@ -0,0 +1,3 @@
+sdesc: "A corrupt package"
+ldesc: "A package containing corrupt archives"
+category: Devel
diff --git a/test/testdata/relarea/x86/release/corrupt/setup.hint b/test/testdata/relarea/x86/release/corrupt/setup.hint
deleted file mode 100644
index fa85bcc..0000000
--- a/test/testdata/relarea/x86/release/corrupt/setup.hint
+++ /dev/null
@@ -1,3 +0,0 @@
-sdesc: "A corrupt package"
-ldesc: "A package containing corrupt archives"
-category: Devel
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-2.2.0-1.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-2.2.0-1.hint
new file mode 100644
index 0000000..be59e34
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-2.2.0-1.hint
@@ -0,0 +1,4 @@
+sdesc: "The UNIX emulation engine"
+ldesc: "The UNIX emulation engine"
+category: Base
+requires: base-cygwin
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-2.2.1-1.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-2.2.1-1.hint
new file mode 100644
index 0000000..be59e34
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-2.2.1-1.hint
@@ -0,0 +1,4 @@
+sdesc: "The UNIX emulation engine"
+ldesc: "The UNIX emulation engine"
+category: Base
+requires: base-cygwin
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.hint
new file mode 100644
index 0000000..274af74
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1.hint
@@ -0,0 +1,6 @@
+category: Debug
+requires: cygwin-debuginfo
+external-source: cygwin
+sdesc: "Debug info for cygwin"
+ldesc: "This package contains files necessary for debugging the
+cygwin package with gdb."
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.hint
new file mode 100644
index 0000000..274af74
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1.hint
@@ -0,0 +1,6 @@
+category: Debug
+requires: cygwin-debuginfo
+external-source: cygwin
+sdesc: "Debug info for cygwin"
+ldesc: "This package contains files necessary for debugging the
+cygwin package with gdb."
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3.hint
new file mode 100644
index 0000000..274af74
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3.hint
@@ -0,0 +1,6 @@
+category: Debug
+requires: cygwin-debuginfo
+external-source: cygwin
+sdesc: "Debug info for cygwin"
+ldesc: "This package contains files necessary for debugging the
+cygwin package with gdb."
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/override.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/override.hint
new file mode 100644
index 0000000..3634a56
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/override.hint
@@ -0,0 +1,3 @@
+prev: 2.2.0-1
+curr: 2.2.1-1
+test: 2.3.0-0.3
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/setup.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/setup.hint
deleted file mode 100644
index 5ed452c..0000000
--- a/test/testdata/relarea/x86/release/cygwin/cygwin-debuginfo/setup.hint
+++ /dev/null
@@ -1,9 +0,0 @@
-category: Debug
-requires: cygwin-debuginfo
-external-source: cygwin
-sdesc: "Debug info for cygwin"
-ldesc: "This package contains files necessary for debugging the
-cygwin package with gdb."
-prev: 2.2.0-1
-curr: 2.2.1-1
-test: 2.3.0-0.3
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.0-1.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.0-1.hint
new file mode 100644
index 0000000..2713c4d
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.0-1.hint
@@ -0,0 +1,5 @@
+category: Devel
+requires:
+sdesc: "Core development files"
+ldesc: "Core development files required to build Cygwin packages"
+external-source: cygwin
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.1-1.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.1-1.hint
new file mode 100644
index 0000000..2713c4d
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.2.1-1.hint
@@ -0,0 +1,5 @@
+category: Devel
+requires:
+sdesc: "Core development files"
+ldesc: "Core development files required to build Cygwin packages"
+external-source: cygwin
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.3.0-0.3.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.3.0-0.3.hint
new file mode 100644
index 0000000..2713c4d
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/cygwin-devel-2.3.0-0.3.hint
@@ -0,0 +1,5 @@
+category: Devel
+requires:
+sdesc: "Core development files"
+ldesc: "Core development files required to build Cygwin packages"
+external-source: cygwin
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-devel/override.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/override.hint
new file mode 100644
index 0000000..3634a56
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/override.hint
@@ -0,0 +1,3 @@
+prev: 2.2.0-1
+curr: 2.2.1-1
+test: 2.3.0-0.3
diff --git a/test/testdata/relarea/x86/release/cygwin/cygwin-devel/setup.hint b/test/testdata/relarea/x86/release/cygwin/cygwin-devel/setup.hint
deleted file mode 100644
index 97170e3..0000000
--- a/test/testdata/relarea/x86/release/cygwin/cygwin-devel/setup.hint
+++ /dev/null
@@ -1,8 +0,0 @@
-category: Devel
-requires:
-sdesc: "Core development files"
-ldesc: "Core development files required to build Cygwin packages"
-external-source: cygwin
-prev: 2.2.0-1
-curr: 2.2.1-1
-test: 2.3.0-0.3
diff --git a/test/testdata/relarea/x86/release/cygwin/override.hint b/test/testdata/relarea/x86/release/cygwin/override.hint
new file mode 100644
index 0000000..3634a56
--- /dev/null
+++ b/test/testdata/relarea/x86/release/cygwin/override.hint
@@ -0,0 +1,3 @@
+prev: 2.2.0-1
+curr: 2.2.1-1
+test: 2.3.0-0.3
diff --git a/test/testdata/relarea/x86/release/cygwin/setup.hint b/test/testdata/relarea/x86/release/cygwin/setup.hint
deleted file mode 100644
index d0c4b26..0000000
--- a/test/testdata/relarea/x86/release/cygwin/setup.hint
+++ /dev/null
@@ -1,7 +0,0 @@
-sdesc: "The UNIX emulation engine"
-ldesc: "The UNIX emulation engine"
-category: Base
-requires: base-cygwin
-prev: 2.2.0-1
-curr: 2.2.1-1
-test: 2.3.0-0.3
diff --git a/test/testdata/relarea/x86/release/invalid/invalid-0.hint b/test/testdata/relarea/x86/release/invalid/invalid-0.hint
new file mode 100644
index 0000000..279c8c4
--- /dev/null
+++ b/test/testdata/relarea/x86/release/invalid/invalid-0.hint
@@ -0,0 +1,2 @@
+unknown-key: invalid-value
+invalid-construct
diff --git a/test/testdata/relarea/x86/release/invalid/setup.hint b/test/testdata/relarea/x86/release/invalid/setup.hint
deleted file mode 100644
index 279c8c4..0000000
--- a/test/testdata/relarea/x86/release/invalid/setup.hint
+++ /dev/null
@@ -1,2 +0,0 @@
-unknown-key: invalid-value
-invalid-construct
diff --git a/test/testdata/relarea/x86/release/keychain/keychain-2.6.8-1.hint b/test/testdata/relarea/x86/release/keychain/keychain-2.6.8-1.hint
new file mode 100644
index 0000000..7870969
--- /dev/null
+++ b/test/testdata/relarea/x86/release/keychain/keychain-2.6.8-1.hint
@@ -0,0 +1,12 @@
+sdesc: "Key manager for OpenSSH"
+ldesc: "Keychain is an OpenSSH key manager, typically run from
+~/.bash_profile. When keychain is run, it checks for a running
+ssh-agent, otherwise it starts one. It saves the ssh-agent environment
+variables to ~/.keychain/$HOSTNAME-sh, so that subsequent logins
+and non-interactive shells such as cron jobs can source the file and
+make passwordless ssh connections. In addition, when keychain runs, it
+verifies that the key files specified on the command-line are known to
+ssh-agent, otherwise it loads them, prompting you for a password if
+necessary"
+category: Utils
+requires: openssh
diff --git a/test/testdata/relarea/x86/release/keychain/keychain-2.7.1-1.hint b/test/testdata/relarea/x86/release/keychain/keychain-2.7.1-1.hint
new file mode 100644
index 0000000..7870969
--- /dev/null
+++ b/test/testdata/relarea/x86/release/keychain/keychain-2.7.1-1.hint
@@ -0,0 +1,12 @@
+sdesc: "Key manager for OpenSSH"
+ldesc: "Keychain is an OpenSSH key manager, typically run from
+~/.bash_profile. When keychain is run, it checks for a running
+ssh-agent, otherwise it starts one. It saves the ssh-agent environment
+variables to ~/.keychain/$HOSTNAME-sh, so that subsequent logins
+and non-interactive shells such as cron jobs can source the file and
+make passwordless ssh connections. In addition, when keychain runs, it
+verifies that the key files specified on the command-line are known to
+ssh-agent, otherwise it loads them, prompting you for a password if
+necessary"
+category: Utils
+requires: openssh
diff --git a/test/testdata/relarea/x86/release/keychain/setup.hint b/test/testdata/relarea/x86/release/keychain/setup.hint
deleted file mode 100644
index 7870969..0000000
--- a/test/testdata/relarea/x86/release/keychain/setup.hint
+++ /dev/null
@@ -1,12 +0,0 @@
-sdesc: "Key manager for OpenSSH"
-ldesc: "Keychain is an OpenSSH key manager, typically run from
-~/.bash_profile. When keychain is run, it checks for a running
-ssh-agent, otherwise it starts one. It saves the ssh-agent environment
-variables to ~/.keychain/$HOSTNAME-sh, so that subsequent logins
-and non-interactive shells such as cron jobs can source the file and
-make passwordless ssh connections. In addition, when keychain runs, it
-verifies that the key files specified on the command-line are known to
-ssh-agent, otherwise it loads them, prompting you for a password if
-necessary"
-category: Utils
-requires: openssh
diff --git a/test/testdata/relarea/x86/release/libspiro/libspiro-20071029-1.hint b/test/testdata/relarea/x86/release/libspiro/libspiro-20071029-1.hint
new file mode 100644
index 0000000..42f7126
--- /dev/null
+++ b/test/testdata/relarea/x86/release/libspiro/libspiro-20071029-1.hint
@@ -0,0 +1,9 @@
+category: Graphics
+sdesc: "Library for converting clothoid splines to bezier curves (sources)"
+ldesc: "Spiro is the creation of Raph Levien. It simplifies the drawing 
+of beautiful curves.
+
+Using bézier splines an artist can easily draw curves with the same 
+slope on either side of an on-curve point. Spiros, on the other hand, 
+are based on clothoid splines which make it easy to maintain constant 
+curvature as well as constant slope. Such curves will simply look nicer."
diff --git a/test/testdata/relarea/x86/release/libspiro/libspiro-devel/libspiro-devel-20071029-1.hint b/test/testdata/relarea/x86/release/libspiro/libspiro-devel/libspiro-devel-20071029-1.hint
new file mode 100644
index 0000000..37dcfd7
--- /dev/null
+++ b/test/testdata/relarea/x86/release/libspiro/libspiro-devel/libspiro-devel-20071029-1.hint
@@ -0,0 +1,11 @@
+category: Graphics
+requires: libspiro0
+external-source: libspiro
+sdesc: "Library for converting clothoid splines to bezier curves (development)"
+ldesc: "Spiro is the creation of Raph Levien. It simplifies the drawing 
+of beautiful curves.
+
+Using bézier splines an artist can easily draw curves with the same 
+slope on either side of an on-curve point. Spiros, on the other hand, 
+are based on clothoid splines which make it easy to maintain constant 
+curvature as well as constant slope. Such curves will simply look nicer."
diff --git a/test/testdata/relarea/x86/release/libspiro/libspiro-devel/setup.hint b/test/testdata/relarea/x86/release/libspiro/libspiro-devel/setup.hint
deleted file mode 100644
index 37dcfd7..0000000
--- a/test/testdata/relarea/x86/release/libspiro/libspiro-devel/setup.hint
+++ /dev/null
@@ -1,11 +0,0 @@
-category: Graphics
-requires: libspiro0
-external-source: libspiro
-sdesc: "Library for converting clothoid splines to bezier curves (development)"
-ldesc: "Spiro is the creation of Raph Levien. It simplifies the drawing 
-of beautiful curves.
-
-Using bézier splines an artist can easily draw curves with the same 
-slope on either side of an on-curve point. Spiros, on the other hand, 
-are based on clothoid splines which make it easy to maintain constant 
-curvature as well as constant slope. Such curves will simply look nicer."
diff --git a/test/testdata/relarea/x86/release/libspiro/libspiro0/libspiro0-20071029-1.hint b/test/testdata/relarea/x86/release/libspiro/libspiro0/libspiro0-20071029-1.hint
new file mode 100644
index 0000000..4d9ef6a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/libspiro/libspiro0/libspiro0-20071029-1.hint
@@ -0,0 +1,11 @@
+category: Graphics
+requires: libgcc1
+external-source: libspiro
+sdesc: "Library for converting clothoid splines to bezier curves (runtime)"
+ldesc: "Spiro is the creation of Raph Levien. It simplifies the drawing 
+of beautiful curves.
+
+Using bézier splines an artist can easily draw curves with the same 
+slope on either side of an on-curve point. Spiros, on the other hand, 
+are based on clothoid splines which make it easy to maintain constant 
+curvature as well as constant slope. Such curves will simply look nicer."
diff --git a/test/testdata/relarea/x86/release/libspiro/libspiro0/setup.hint b/test/testdata/relarea/x86/release/libspiro/libspiro0/setup.hint
deleted file mode 100644
index 4d9ef6a..0000000
--- a/test/testdata/relarea/x86/release/libspiro/libspiro0/setup.hint
+++ /dev/null
@@ -1,11 +0,0 @@
-category: Graphics
-requires: libgcc1
-external-source: libspiro
-sdesc: "Library for converting clothoid splines to bezier curves (runtime)"
-ldesc: "Spiro is the creation of Raph Levien. It simplifies the drawing 
-of beautiful curves.
-
-Using bézier splines an artist can easily draw curves with the same 
-slope on either side of an on-curve point. Spiros, on the other hand, 
-are based on clothoid splines which make it easy to maintain constant 
-curvature as well as constant slope. Such curves will simply look nicer."
diff --git a/test/testdata/relarea/x86/release/libspiro/setup.hint b/test/testdata/relarea/x86/release/libspiro/setup.hint
deleted file mode 100644
index 42f7126..0000000
--- a/test/testdata/relarea/x86/release/libspiro/setup.hint
+++ /dev/null
@@ -1,9 +0,0 @@
-category: Graphics
-sdesc: "Library for converting clothoid splines to bezier curves (sources)"
-ldesc: "Spiro is the creation of Raph Levien. It simplifies the drawing 
-of beautiful curves.
-
-Using bézier splines an artist can easily draw curves with the same 
-slope on either side of an on-curve point. Spiros, on the other hand, 
-are based on clothoid splines which make it easy to maintain constant 
-curvature as well as constant slope. Such curves will simply look nicer."
diff --git a/test/testdata/relarea/x86/release/libtextcat/libtextcat-2.2-2.hint b/test/testdata/relarea/x86/release/libtextcat/libtextcat-2.2-2.hint
new file mode 100644
index 0000000..5145c2d
--- /dev/null
+++ b/test/testdata/relarea/x86/release/libtextcat/libtextcat-2.2-2.hint
@@ -0,0 +1,10 @@
+sdesc: "Text Classification Library (language guessing in C)"
+ldesc: "Libtextcat is a library with functions that implement the
+classification technique described in Cavnar & Trenkle, "N-Gram-Based
+Text Categorization". It was primarily developed for language
+guessing, a task on which it is known to perform with near-perfect
+accuracy. 
+BSD License.
+http://software.wise-guys.nl/libtextcat/"
+category: Text
+requires: libtextcat0
diff --git a/test/testdata/relarea/x86/release/libtextcat/libtextcat-devel/libtextcat-devel-2.2-2.hint b/test/testdata/relarea/x86/release/libtextcat/libtextcat-devel/libtextcat-devel-2.2-2.hint
new file mode 100644
index 0000000..f509126
--- /dev/null
+++ b/test/testdata/relarea/x86/release/libtextcat/libtextcat-devel/libtextcat-devel-2.2-2.hint
@@ -0,0 +1,11 @@
+sdesc: "Helper, header and library for libtextcat"
+ldesc: "Libtextcat is a library with functions that implement the
+classification technique described in Cavnar & Trenkle, "N-Gram-Based
+Text Categorization". It was primarily developed for language
+guessing, a task on which it is known to perform with near-perfect
+accuracy.
+BSD License.
+http://software.wise-guys.nl/libtextcat/"
+category: Devel Text
+requires: libtextcat0 libtextcat
+external-source: libtextcat
diff --git a/test/testdata/relarea/x86/release/libtextcat/libtextcat-devel/setup.hint b/test/testdata/relarea/x86/release/libtextcat/libtextcat-devel/setup.hint
deleted file mode 100644
index f509126..0000000
--- a/test/testdata/relarea/x86/release/libtextcat/libtextcat-devel/setup.hint
+++ /dev/null
@@ -1,11 +0,0 @@
-sdesc: "Helper, header and library for libtextcat"
-ldesc: "Libtextcat is a library with functions that implement the
-classification technique described in Cavnar & Trenkle, "N-Gram-Based
-Text Categorization". It was primarily developed for language
-guessing, a task on which it is known to perform with near-perfect
-accuracy.
-BSD License.
-http://software.wise-guys.nl/libtextcat/"
-category: Devel Text
-requires: libtextcat0 libtextcat
-external-source: libtextcat
diff --git a/test/testdata/relarea/x86/release/libtextcat/libtextcat0/libtextcat0-2.2-2.hint b/test/testdata/relarea/x86/release/libtextcat/libtextcat0/libtextcat0-2.2-2.hint
new file mode 100644
index 0000000..f3ae673
--- /dev/null
+++ b/test/testdata/relarea/x86/release/libtextcat/libtextcat0/libtextcat0-2.2-2.hint
@@ -0,0 +1,11 @@
+sdesc: "Text Classification Library dll"
+ldesc: "Libtextcat is a library with functions that implement the
+classification technique described in Cavnar & Trenkle, "N-Gram-Based
+Text Categorization". It was primarily developed for language
+guessing, a task on which it is known to perform with near-perfect
+accuracy.
+BSD License.
+http://software.wise-guys.nl/libtextcat/"
+category: Text
+requires: cygwin
+external-source: libtextcat
diff --git a/test/testdata/relarea/x86/release/libtextcat/libtextcat0/setup.hint b/test/testdata/relarea/x86/release/libtextcat/libtextcat0/setup.hint
deleted file mode 100644
index f3ae673..0000000
--- a/test/testdata/relarea/x86/release/libtextcat/libtextcat0/setup.hint
+++ /dev/null
@@ -1,11 +0,0 @@
-sdesc: "Text Classification Library dll"
-ldesc: "Libtextcat is a library with functions that implement the
-classification technique described in Cavnar & Trenkle, "N-Gram-Based
-Text Categorization". It was primarily developed for language
-guessing, a task on which it is known to perform with near-perfect
-accuracy.
-BSD License.
-http://software.wise-guys.nl/libtextcat/"
-category: Text
-requires: cygwin
-external-source: libtextcat
diff --git a/test/testdata/relarea/x86/release/libtextcat/setup.hint b/test/testdata/relarea/x86/release/libtextcat/setup.hint
deleted file mode 100644
index 5145c2d..0000000
--- a/test/testdata/relarea/x86/release/libtextcat/setup.hint
+++ /dev/null
@@ -1,10 +0,0 @@
-sdesc: "Text Classification Library (language guessing in C)"
-ldesc: "Libtextcat is a library with functions that implement the
-classification technique described in Cavnar & Trenkle, "N-Gram-Based
-Text Categorization". It was primarily developed for language
-guessing, a task on which it is known to perform with near-perfect
-accuracy. 
-BSD License.
-http://software.wise-guys.nl/libtextcat/"
-category: Text
-requires: libtextcat0
diff --git a/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd-devel/libdns_sd-devel-379.32.1-1.hint b/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd-devel/libdns_sd-devel-379.32.1-1.hint
new file mode 100644
index 0000000..c285be7
--- /dev/null
+++ b/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd-devel/libdns_sd-devel-379.32.1-1.hint
@@ -0,0 +1,7 @@
+category: Net
+requires: libdns_sd1 
+sdesc: "Bonjour Zeroconf implementation"
+ldesc: "Bonjour, also known as zero-configuration networking, enables
+automatic discovery of computers, devices, and services on IP networks using
+industry standard IP protocols."
+external-source: mDNSResponder
diff --git a/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd-devel/setup.hint b/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd-devel/setup.hint
deleted file mode 100644
index c285be7..0000000
--- a/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd-devel/setup.hint
+++ /dev/null
@@ -1,7 +0,0 @@
-category: Net
-requires: libdns_sd1 
-sdesc: "Bonjour Zeroconf implementation"
-ldesc: "Bonjour, also known as zero-configuration networking, enables
-automatic discovery of computers, devices, and services on IP networks using
-industry standard IP protocols."
-external-source: mDNSResponder
diff --git a/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd1/libdns_sd1-379.32.1-1.hint b/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd1/libdns_sd1-379.32.1-1.hint
new file mode 100644
index 0000000..74a7a3f
--- /dev/null
+++ b/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd1/libdns_sd1-379.32.1-1.hint
@@ -0,0 +1,7 @@
+category: Net
+requires:  
+sdesc: "Bonjour Zeroconf implementation"
+ldesc: "Bonjour, also known as zero-configuration networking, enables
+automatic discovery of computers, devices, and services on IP networks using
+industry standard IP protocols."
+external-source: mDNSResponder
diff --git a/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd1/setup.hint b/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd1/setup.hint
deleted file mode 100644
index 74a7a3f..0000000
--- a/test/testdata/relarea/x86/release/mDNSResponder/libdns_sd1/setup.hint
+++ /dev/null
@@ -1,7 +0,0 @@
-category: Net
-requires:  
-sdesc: "Bonjour Zeroconf implementation"
-ldesc: "Bonjour, also known as zero-configuration networking, enables
-automatic discovery of computers, devices, and services on IP networks using
-industry standard IP protocols."
-external-source: mDNSResponder
diff --git a/test/testdata/relarea/x86/release/mDNSResponder/mDNSResponder-379.32.1-1.hint b/test/testdata/relarea/x86/release/mDNSResponder/mDNSResponder-379.32.1-1.hint
new file mode 100644
index 0000000..e50938b
--- /dev/null
+++ b/test/testdata/relarea/x86/release/mDNSResponder/mDNSResponder-379.32.1-1.hint
@@ -0,0 +1,11 @@
+category: Net
+requires: libdns_sd1 
+sdesc: "Bonjour Zeroconf implementation"
+ldesc: "Bonjour, also known as zero-configuration networking, enables
+automatic discovery of computers, devices, and services on IP networks using
+industry standard IP protocols."
+
+message: mDNSResponder "The Cygwin mDNSResponder package contains only clients.
+If you do not already have the 'Bonjour Service' installed (it comes with
+a number of popular Windows programs), then you can download it at
+http://support.apple.com/kb/DL999"
diff --git a/test/testdata/relarea/x86/release/mDNSResponder/setup.hint b/test/testdata/relarea/x86/release/mDNSResponder/setup.hint
deleted file mode 100644
index e50938b..0000000
--- a/test/testdata/relarea/x86/release/mDNSResponder/setup.hint
+++ /dev/null
@@ -1,11 +0,0 @@
-category: Net
-requires: libdns_sd1 
-sdesc: "Bonjour Zeroconf implementation"
-ldesc: "Bonjour, also known as zero-configuration networking, enables
-automatic discovery of computers, devices, and services on IP networks using
-industry standard IP protocols."
-
-message: mDNSResponder "The Cygwin mDNSResponder package contains only clients.
-If you do not already have the 'Bonjour Service' installed (it comes with
-a number of popular Windows programs), then you can download it at
-http://support.apple.com/kb/DL999"
diff --git a/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-2.29.1.787c9873-1.hint b/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-2.29.1.787c9873-1.hint
new file mode 100644
index 0000000..f911d0d
--- /dev/null
+++ b/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-2.29.1.787c9873-1.hint
@@ -0,0 +1,5 @@
+category: Devel
+requires: cygwin libintl8 zlib0 
+sdesc: "The GNU Binutils are a collection of binary tools. This package
+ is capable of targeting win32."
+ldesc: "Binutils for MinGW-w64 Win32 toolchain"
diff --git a/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/mingw64-i686-binutils-debuginfo-2.29.1.787c9873-1.hint b/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/mingw64-i686-binutils-debuginfo-2.29.1.787c9873-1.hint
new file mode 100644
index 0000000..55ba552
--- /dev/null
+++ b/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/mingw64-i686-binutils-debuginfo-2.29.1.787c9873-1.hint
@@ -0,0 +1,6 @@
+category: Debug
+requires: cygwin-debuginfo
+external-source: mingw64-i686-binutils
+ldesc: "Debug info for mingw64-i686-binutils"
+sdesc: "This package contains files necessary for debugging the
+mingw64-i686-binutils package with gdb."
diff --git a/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/setup.hint b/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/setup.hint
deleted file mode 100644
index 55ba552..0000000
--- a/test/testdata/relarea/x86/release/mingw64-i686-binutils/mingw64-i686-binutils-debuginfo/setup.hint
+++ /dev/null
@@ -1,6 +0,0 @@
-category: Debug
-requires: cygwin-debuginfo
-external-source: mingw64-i686-binutils
-ldesc: "Debug info for mingw64-i686-binutils"
-sdesc: "This package contains files necessary for debugging the
-mingw64-i686-binutils package with gdb."
diff --git a/test/testdata/relarea/x86/release/mingw64-i686-binutils/setup.hint b/test/testdata/relarea/x86/release/mingw64-i686-binutils/setup.hint
deleted file mode 100644
index f911d0d..0000000
--- a/test/testdata/relarea/x86/release/mingw64-i686-binutils/setup.hint
+++ /dev/null
@@ -1,5 +0,0 @@
-category: Devel
-requires: cygwin libintl8 zlib0 
-sdesc: "The GNU Binutils are a collection of binary tools. This package
- is capable of targeting win32."
-ldesc: "Binutils for MinGW-w64 Win32 toolchain"
diff --git a/test/testdata/relarea/x86/release/openssh/openssh-7.2p2-1.hint b/test/testdata/relarea/x86/release/openssh/openssh-7.2p2-1.hint
new file mode 100644
index 0000000..83aa11a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/openssh/openssh-7.2p2-1.hint
@@ -0,0 +1,5 @@
+category: Net
+sdesc: "The OpenSSH server and client programs"
+ldesc: "OpenSSH is a program for logging into a remote machine and for
+	executing commands on a remote machine.  It can replace rlogin and rsh,
+	providing encrypted communication between two machines."
diff --git a/test/testdata/relarea/x86/release/openssh/setup.hint b/test/testdata/relarea/x86/release/openssh/setup.hint
deleted file mode 100644
index 83aa11a..0000000
--- a/test/testdata/relarea/x86/release/openssh/setup.hint
+++ /dev/null
@@ -1,5 +0,0 @@
-category: Net
-sdesc: "The OpenSSH server and client programs"
-ldesc: "OpenSSH is a program for logging into a remote machine and for
-	executing commands on a remote machine.  It can replace rlogin and rsh,
-	providing encrypted communication between two machines."
diff --git a/test/testdata/relarea/x86/release/proj/libproj-devel/libproj-devel-4.8.0-1.hint b/test/testdata/relarea/x86/release/proj/libproj-devel/libproj-devel-4.8.0-1.hint
new file mode 100644
index 0000000..76d1555
--- /dev/null
+++ b/test/testdata/relarea/x86/release/proj/libproj-devel/libproj-devel-4.8.0-1.hint
@@ -0,0 +1,5 @@
+category: Graphics Libs
+requires: libproj1 
+sdesc: ""The PROJ Cartographic Projections Software (devel)"
+ldesc: "Cartographic projection library and utilities"
+external-source: proj
diff --git a/test/testdata/relarea/x86/release/proj/libproj-devel/setup.hint b/test/testdata/relarea/x86/release/proj/libproj-devel/setup.hint
deleted file mode 100644
index 76d1555..0000000
--- a/test/testdata/relarea/x86/release/proj/libproj-devel/setup.hint
+++ /dev/null
@@ -1,5 +0,0 @@
-category: Graphics Libs
-requires: libproj1 
-sdesc: ""The PROJ Cartographic Projections Software (devel)"
-ldesc: "Cartographic projection library and utilities"
-external-source: proj
diff --git a/test/testdata/relarea/x86/release/proj/libproj1/libproj1-4.8.0-1.hint b/test/testdata/relarea/x86/release/proj/libproj1/libproj1-4.8.0-1.hint
new file mode 100644
index 0000000..22a79bd
--- /dev/null
+++ b/test/testdata/relarea/x86/release/proj/libproj1/libproj1-4.8.0-1.hint
@@ -0,0 +1,5 @@
+category: Graphics Libs
+requires:  
+sdesc: ""The PROJ Cartographic Projections Software (runtime)"
+ldesc: "Cartographic projection library and utilities"
+external-source: proj
diff --git a/test/testdata/relarea/x86/release/proj/libproj1/setup.hint b/test/testdata/relarea/x86/release/proj/libproj1/setup.hint
deleted file mode 100644
index 22a79bd..0000000
--- a/test/testdata/relarea/x86/release/proj/libproj1/setup.hint
+++ /dev/null
@@ -1,5 +0,0 @@
-category: Graphics Libs
-requires:  
-sdesc: ""The PROJ Cartographic Projections Software (runtime)"
-ldesc: "Cartographic projection library and utilities"
-external-source: proj
diff --git a/test/testdata/relarea/x86/release/proj/proj-4.8.0-1.hint b/test/testdata/relarea/x86/release/proj/proj-4.8.0-1.hint
new file mode 100644
index 0000000..c5da485
--- /dev/null
+++ b/test/testdata/relarea/x86/release/proj/proj-4.8.0-1.hint
@@ -0,0 +1,4 @@
+category: Graphics Libs
+requires: libproj1 
+sdesc: ""The PROJ Cartographic Projections Software (utilities)"
+ldesc: "Cartographic projection library and utilities"
diff --git a/test/testdata/relarea/x86/release/proj/setup.hint b/test/testdata/relarea/x86/release/proj/setup.hint
deleted file mode 100644
index c5da485..0000000
--- a/test/testdata/relarea/x86/release/proj/setup.hint
+++ /dev/null
@@ -1,4 +0,0 @@
-category: Graphics Libs
-requires: libproj1 
-sdesc: ""The PROJ Cartographic Projections Software (utilities)"
-ldesc: "Cartographic projection library and utilities"
diff --git a/test/testdata/relarea/x86/release/rpm-doc/rpm-doc-4.1-2.hint b/test/testdata/relarea/x86/release/rpm-doc/rpm-doc-4.1-2.hint
new file mode 100644
index 0000000..087a6dd
--- /dev/null
+++ b/test/testdata/relarea/x86/release/rpm-doc/rpm-doc-4.1-2.hint
@@ -0,0 +1,2 @@
+sdesc: "Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)"
+category: _obsolete
diff --git a/test/testdata/relarea/x86/release/rpm-doc/rpm-doc-999-1.hint b/test/testdata/relarea/x86/release/rpm-doc/rpm-doc-999-1.hint
new file mode 100644
index 0000000..087a6dd
--- /dev/null
+++ b/test/testdata/relarea/x86/release/rpm-doc/rpm-doc-999-1.hint
@@ -0,0 +1,2 @@
+sdesc: "Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)"
+category: _obsolete
diff --git a/test/testdata/relarea/x86/release/rpm-doc/setup.hint b/test/testdata/relarea/x86/release/rpm-doc/setup.hint
deleted file mode 100644
index 087a6dd..0000000
--- a/test/testdata/relarea/x86/release/rpm-doc/setup.hint
+++ /dev/null
@@ -1,2 +0,0 @@
-sdesc: "Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)"
-category: _obsolete
diff --git a/test/testdata/relarea/x86/release/splint/setup.hint b/test/testdata/relarea/x86/release/splint/setup.hint
deleted file mode 100644
index 52b56b9..0000000
--- a/test/testdata/relarea/x86/release/splint/setup.hint
+++ /dev/null
@@ -1,14 +0,0 @@
-sdesc: "Check C programs for security vulnerabilities and programming
-mistakes."
-ldesc: "Program does many of the traditional lint checks including
-unused declarations, type inconsistencies, use before definition,
-unreachable code, ignored return values, execution paths with no
-return, likely infinite loops, and fall through cases. More powerful
-checks are made possible by additional information given in source
-code annotations. Annotations are stylized comments that document
-assumptions about functions, variables, parameters and types. In
-addition to the checks specifically enabled by annotations, many of
-the traditional lint checks are improved by exploiting this additional
-setinformation."
-category: Devel
-requires: cygwin
diff --git a/test/testdata/relarea/x86/release/splint/splint-3.1.2-1.hint b/test/testdata/relarea/x86/release/splint/splint-3.1.2-1.hint
new file mode 100644
index 0000000..52b56b9
--- /dev/null
+++ b/test/testdata/relarea/x86/release/splint/splint-3.1.2-1.hint
@@ -0,0 +1,14 @@
+sdesc: "Check C programs for security vulnerabilities and programming
+mistakes."
+ldesc: "Program does many of the traditional lint checks including
+unused declarations, type inconsistencies, use before definition,
+unreachable code, ignored return values, execution paths with no
+return, likely infinite loops, and fall through cases. More powerful
+checks are made possible by additional information given in source
+code annotations. Annotations are stylized comments that document
+assumptions about functions, variables, parameters and types. In
+addition to the checks specifically enabled by annotations, many of
+the traditional lint checks are improved by exploiting this additional
+setinformation."
+category: Devel
+requires: cygwin
diff --git a/test/testdata/relarea/x86/release/staleversion/setup.hint b/test/testdata/relarea/x86/release/staleversion/setup.hint
deleted file mode 100644
index 7f7f48a..0000000
--- a/test/testdata/relarea/x86/release/staleversion/setup.hint
+++ /dev/null
@@ -1,4 +0,0 @@
-sdesc: "Test package for stale version removal"
-ldesc: "Test package for stale version removal"
-category: Shells Base
-requires:
diff --git a/test/testdata/relarea/x86/release/staleversion/staleversion-240-1.hint b/test/testdata/relarea/x86/release/staleversion/staleversion-240-1.hint
new file mode 100644
index 0000000..7f7f48a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/staleversion/staleversion-240-1.hint
@@ -0,0 +1,4 @@
+sdesc: "Test package for stale version removal"
+ldesc: "Test package for stale version removal"
+category: Shells Base
+requires:
diff --git a/test/testdata/relarea/x86/release/staleversion/staleversion-242-0.hint b/test/testdata/relarea/x86/release/staleversion/staleversion-242-0.hint
new file mode 100644
index 0000000..7f7f48a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/staleversion/staleversion-242-0.hint
@@ -0,0 +1,4 @@
+sdesc: "Test package for stale version removal"
+ldesc: "Test package for stale version removal"
+category: Shells Base
+requires:
diff --git a/test/testdata/relarea/x86/release/staleversion/staleversion-243-0.hint b/test/testdata/relarea/x86/release/staleversion/staleversion-243-0.hint
new file mode 100644
index 0000000..7f7f48a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/staleversion/staleversion-243-0.hint
@@ -0,0 +1,4 @@
+sdesc: "Test package for stale version removal"
+ldesc: "Test package for stale version removal"
+category: Shells Base
+requires:
diff --git a/test/testdata/relarea/x86/release/staleversion/staleversion-250-0.hint b/test/testdata/relarea/x86/release/staleversion/staleversion-250-0.hint
new file mode 100644
index 0000000..7f7f48a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/staleversion/staleversion-250-0.hint
@@ -0,0 +1,4 @@
+sdesc: "Test package for stale version removal"
+ldesc: "Test package for stale version removal"
+category: Shells Base
+requires:
diff --git a/test/testdata/relarea/x86/release/staleversion/staleversion-251-0.hint b/test/testdata/relarea/x86/release/staleversion/staleversion-251-0.hint
new file mode 100644
index 0000000..7f7f48a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/staleversion/staleversion-251-0.hint
@@ -0,0 +1,4 @@
+sdesc: "Test package for stale version removal"
+ldesc: "Test package for stale version removal"
+category: Shells Base
+requires:
diff --git a/test/testdata/relarea/x86/release/staleversion/staleversion-260-0.hint b/test/testdata/relarea/x86/release/staleversion/staleversion-260-0.hint
new file mode 100644
index 0000000..7f7f48a
--- /dev/null
+++ b/test/testdata/relarea/x86/release/staleversion/staleversion-260-0.hint
@@ -0,0 +1,4 @@
+sdesc: "Test package for stale version removal"
+ldesc: "Test package for stale version removal"
+category: Shells Base
+requires:
diff --git a/test/testdata/relarea/x86/release/testpackage/setup.hint b/test/testdata/relarea/x86/release/testpackage/setup.hint
deleted file mode 100644
index abfbfd5..0000000
--- a/test/testdata/relarea/x86/release/testpackage/setup.hint
+++ /dev/null
@@ -1,3 +0,0 @@
-sdesc: "A test package (stuff & other stuff)"
-ldesc: "A test package (stuff & other stuff)"
-category: Devel
diff --git a/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1.hint b/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1.hint
new file mode 100644
index 0000000..abfbfd5
--- /dev/null
+++ b/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1.hint
@@ -0,0 +1,3 @@
+sdesc: "A test package (stuff & other stuff)"
+ldesc: "A test package (stuff & other stuff)"
+category: Devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.