Package: devscripts
Version: 2.14.2
Tags: patch
Severity: wishlist

The attached patch makes sadt follow this change in autopkgtest:

autopkgtest (2.5.5) unstable; urgency=medium

  [...]
  * Add support for virtual "@builddeps@" test dependency, which will be
    replaced with the package's B-D and B-D-I. Document in
    doc/README.package-tests. (Closes: #720458)

 -- Martin Pitt <mp...@debian.org>  Wed, 25 Dec 2013 21:12:38 +0100

--
Jakub Wilk
diff -Nru devscripts-2.14.1/debian/changelog devscripts-2.14.2/debian/changelog
--- devscripts-2.14.1/debian/changelog	2014-01-26 04:15:54.000000000 +0100
+++ devscripts-2.14.2/debian/changelog	2014-01-26 21:51:12.000000000 +0100
@@ -1,3 +1,11 @@
+devscripts (2.14.2) UNRELEASED; urgency=medium
+
+  [ Jakub Wilk ]
+  * sadt:
+    + Add support for @builddeps@ in tests' Depends.
+
+ -- Jakub Wilk <jw...@debian.org>  Sun, 26 Jan 2014 21:50:35 +0100
+
 devscripts (2.14.1) unstable; urgency=medium
 
   * Actually install sadt.  (Closes: #736683)
diff -Nru devscripts-2.14.1/scripts/sadt devscripts-2.14.2/scripts/sadt
--- devscripts-2.14.1/scripts/sadt	2014-01-26 04:15:54.000000000 +0100
+++ devscripts-2.14.2/scripts/sadt	2014-01-26 21:50:29.000000000 +0100
@@ -166,7 +166,7 @@
     def __iter__(self):
         return iter(self.tests)
 
-    def expand_depends(self, packages):
+    def expand_depends(self, packages, build_depends):
         if '@' not in self.depends:
             return
         or_clauses = []
@@ -183,6 +183,9 @@
             finally:
                 sys.stderr = orig_sys_stderr
         for or_clause in parsed_depends:
+            if len(or_clause) == 1 and or_clause[0]['name'] == '@builddeps@':
+                or_clauses += build_depends
+                continue
             stripped_or_clause = [r for r in or_clause if r['name'] != '@']
             if len(stripped_or_clause) < len(or_clause):
                 for package in packages:
@@ -195,7 +198,6 @@
         self.depends = deb822.PkgRelation.str(or_clauses)
 
     def check_depends(self):
-        assert '@' not in self.depends
         if self._check_depends_cache is not None:
             if isinstance(self._depends_cache, Exception):
                 raise self._check_depends_cache
@@ -341,6 +343,7 @@
     options.tests = frozenset(options.tests)
     options.ignore_restrictions = frozenset(options.ignore_restrictions.split(','))
     binary_packages = set()
+    build_depends = []
     try:
         file = open('debian/control', encoding='UTF-8')
     except IOError as exc:
@@ -352,6 +355,11 @@
         for n, para in enumerate(deb822.Packages.iter_paragraphs(file)):
             if n == 0:
                 para['Source']
+                for field in 'Build-Depends', 'Build-Depends-Indep':
+                    try:
+                        build_depends += deb822.PkgRelation.parse_relations(para[field])
+                    except KeyError:
+                        continue
             else:
                 binary_packages.add(para['Package'])
     test_groups = []
@@ -375,7 +383,7 @@
                     break
                 method(value)
             if group is not None:
-                group.expand_depends(binary_packages)
+                group.expand_depends(binary_packages, build_depends)
                 test_groups += [group]
     failures = []
     n_skip = n_ok = 0
diff -Nru devscripts-2.14.1/scripts/sadt.pod devscripts-2.14.2/scripts/sadt.pod
--- devscripts-2.14.1/scripts/sadt.pod	2014-01-26 04:15:54.000000000 +0100
+++ devscripts-2.14.2/scripts/sadt.pod	2014-01-26 21:50:29.000000000 +0100
@@ -62,6 +62,10 @@
 
 =back
 
+=head1 CONFORMING TO
+
+README.package-tests shipped by autopkgtest 2.6
+
 =head1 SEE ALSO
 
 B<adt-run>(1)

Reply via email to