@@ -42,11 +42,12 @@ class Test:
4242 def __init__ (self , name ):
4343 self .name = name
4444 self .depends = []
45+ self .restrictions = []
4546 def parse_depends (self , d ):
4647 self .depends = set ([x .split ()[0 ] for x in d .split ("," ) if "libc" not in x ])
4748
4849
49- target = "raring "
50+ target = "saucy "
5051dsc = os .path .abspath (sys .argv [1 ])
5152loc_pkg_paths = set ()
5253loc_pkg_names = set ()
@@ -86,20 +87,19 @@ def parse_depends(self, d):
8687
8788# gather tests
8889tests = []
89- gottest = False
9090for f in deb822 .Packages .iter_paragraphs (open (os .path .join (pkgdir , "debian/tests/control" ))):
9191 for k , v in f .iteritems ():
9292 if k == "Tests" :
93- assert not gottest
9493 tests .append (Test (v ))
95- gottest = True
96- if k == "Depends" :
97- assert gottest
94+ elif k == "Depends" :
9895 if v == "@" :
9996 tests [- 1 ].depends = list (loc_pkg_names )
10097 else :
10198 tests [- 1 ].parse_depends (v )
102- gottest = False
99+ elif k == "Restrictions" :
100+ if v .lower () in ("breaks-testbed" , "rw-build-tree" ):
101+ raise ValueError ("Restriction %s not supported" % v )
102+ tests [- 1 ].restrictions .append (v )
103103
104104# no Depends means implicit @
105105for t in tests :
@@ -134,13 +134,15 @@ def parse_depends(self, d):
134134 f .write ("apt-get install -f -y --force-yes %s\n " % with_exp )
135135 all_installed = " " .join (t .depends | dpkgdep )
136136
137+ asuser = "" if "needs-root" in t .restrictions else "su adttesting -c"
138+
137139 f .write ("""\
138140 apt-get install -y --force-yes {aptdep}
139141rm -rf /tmp/sadt
140142mkdir -p /tmp/sadt
141143chown adttesting /tmp/sadt
142144set +e
143- TMPDIR=/tmp/sadt ADTTMP=/tmp/sadt su adttesting -c debian/tests/{testname} 2> errlog
145+ TMPDIR=/tmp/sadt ADTTMP=/tmp/sadt {asuser} debian/tests/{testname} 2> errlog
144146ret=$?
145147set -e
146148if [ ! $(cat errlog | wc -l) -eq 0 ]; then
@@ -153,7 +155,7 @@ def parse_depends(self, d):
153155 echo FAILURE $ret;
154156 exit $ret;
155157fi
156- """ .format (aptdep = aptdep , testname = t .name ))
158+ """ .format (aptdep = aptdep , testname = t .name , asuser = asuser ))
157159
158160 if t != tests [- 1 ] and "--fast" not in sys .argv :
159161 f .write ("apt-get autoremove -y --force-yes --purge %s\n " % all_installed )
0 commit comments