##// END OF EJS Templates
run-tests: "fix" race condition in race condition fix...
run-tests: "fix" race condition in race condition fix Laurent's commit 3203dfe341f9 still suffers from a race: by the time the "job" function tries to assign to channels[channel], that list has been truncated to empty. The result is that every job thread raises an IndexError. Earlier, I tried an approach of correctly locking channels, but that caused run-tests to hang on KeyboardInterrupt sometimes. This approach is strictly hackier, but seems to actually work reliably.

File last commit:

r10905:13a1b2fb default
r27933:a6833e46 stable
Show More
test-status-inprocess.py
31 lines | 601 B | text/x-python | PythonLexer
/ tests / test-status-inprocess.py
#!/usr/bin/python
from mercurial.ui import ui
from mercurial.localrepo import localrepository
from mercurial.commands import add, commit, status
u = ui()
print '% creating repo'
repo = localrepository(u, '.', create=True)
f = open('test.py', 'w')
try:
f.write('foo\n')
finally:
f.close
print '% add and commit'
add(u, repo, 'test.py')
commit(u, repo, message='*')
status(u, repo, clean=True)
print '% change'
f = open('test.py', 'w')
try:
f.write('bar\n')
finally:
f.close()
# this would return clean instead of changed before the fix
status(u, repo, clean=True, modified=True)