tb.scratch = None
tb.modified = False
tb.blamed = []
+ tb._ephemeral = []
tb._debug('init')
def _debug(tb, m):
debug('** '+m)
if 'revert' in tb.caps and (tb.modified or
[d for d in tb.deps_processed if d not in deps_new]):
tb._debug('reset **')
- tb.command('reset')
+ tb.command('revert')
tb.blamed = []
+ for af in tb._ephemeral: af.invalidate(True)
binaries.publish()
tb.modified = False
tb._install_deps(deps_new)
+ def register_ephemeral(tb, af):
+ tb._ephemeral.append(af)
def _install_deps(tb, deps_new):
tb._debug(' installing dependencies '+`deps_new`)
tb.deps_processed = deps_new
def __init__(r, rname, base):
if 'revert' not in testbed.caps:
raise Unsupported(f.lno,
- 'Test breaks testbed but testbed cannot reset')
+ 'Test breaks testbed but testbed cannot revert')
class Field_Restrictions(FieldBase):
def parse(f):
def determine_package(act):
cmd = 'dpkg-deb --info --'.split(' ')+[act.af.read(),'control']
- running = Popen(cmd, stdout=PIPE)
+ running = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output = running.communicate()[0]
rc = running.wait()
if rc: badpkg('failed to parse binary package, code %d' % rc)
re = regexp.compile('^\s*Package\s*:\s*([0-9a-z][-+.0-9a-z]*)\s*$')
act.pkg = None
- for l in '\n'.split(output):
- m = re.match(output)
+ for l in output.split('\n'):
+ m = re.match(l)
if not m: continue
if act.pkg: badpkg('two Package: lines in control file')
- act.pkg = m.groups
+ act.pkg = m.groups()[0]
if not act.pkg: badpkg('no good Package: line in control file')
class Binaries:
apt-ftparchive packages . >Packages
gzip <Packages >Packages.gz
apt-ftparchive release . >Release
+ rm -f Release.gpg
gpg --homedir="$2" --batch --detach-sign --armour -o Release.gpg Release
gpg --homedir="$2" --batch --export >archive-key.pgp
'''
True)
if act.ah['dsc_tests']:
act.tests_tree.read()
- act.tests_tree.invalidate(True)
- act.work.invalidate(True)
+ testbed.register_ephemeral(act.work)
+ testbed.register_ephemeral(act.tests_tree)
act.blamed = copy.copy(testbed.blamed)
testbed.prepare([])
if act.kind == 'deb':
- blame('arg:'+act.af.spec)
+ testbed.blame('arg:'+act.af.spec)
determine_package(act)
- blame('deb:'+act.pkg)
+ testbed.blame('deb:'+act.pkg)
binaries.register(act,act.pkg,act.af,
'forbuilds',testbed.blamed)
if act.kind == 'dsc':