Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b665697

Browse files
committed
add support "needs-root" restriction
1 parent fcbdc71 commit b665697

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

adt-runscript.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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"
5051
dsc = os.path.abspath(sys.argv[1])
5152
loc_pkg_paths = set()
5253
loc_pkg_names = set()
@@ -86,20 +87,19 @@ def parse_depends(self, d):
8687

8788
# gather tests
8889
tests = []
89-
gottest = False
9090
for 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 @
105105
for 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}
139141
rm -rf /tmp/sadt
140142
mkdir -p /tmp/sadt
141143
chown adttesting /tmp/sadt
142144
set +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
144146
ret=$?
145147
set -e
146148
if [ ! $(cat errlog | wc -l) -eq 0 ]; then
@@ -153,7 +155,7 @@ def parse_depends(self, d):
153155
echo FAILURE $ret;
154156
exit $ret;
155157
fi
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

Comments
 (0)