##// END OF EJS Templates
extdata: avoid crashing inside subprocess when we get a revset parse error...
Augie Fackler -
r42776:ea6558db default
parent child Browse files
Show More
@@ -1541,7 +1541,12 b' def extdatasource(repo, source):'
1541 pass # we ignore data for nodes that don't exist locally
1541 pass # we ignore data for nodes that don't exist locally
1542 finally:
1542 finally:
1543 if proc:
1543 if proc:
1544 proc.communicate()
1544 try:
1545 proc.communicate()
1546 except ValueError:
1547 # This happens if we started iterating src and then
1548 # get a parse error on a line. It should be safe to ignore.
1549 pass
1545 if src:
1550 if src:
1546 src.close()
1551 src.close()
1547 if proc and proc.returncode != 0:
1552 if proc and proc.returncode != 0:
@@ -66,9 +66,14 b' test a zero-exiting source that emits ga'
66 > 9de260b1e88e
66 > 9de260b1e88e
67 > EOF
67 > EOF
68
68
69 BUG: this should print the revset parse error
69 It might be nice if this error message mentioned where the bad string
70 $ hg log -qr "extdata(badparse)" 2>&1 | grep ValueError
70 came from (eg line X of extdata source S), but the important thing is
71 ValueError: Mixing iteration and read methods would lose data
71 that we don't crash before we can print the parse error.
72 $ hg log -qr "extdata(badparse)"
73 hg: parse error at 0: not a prefix: +
74 (+---------------------------------------+
75 ^ here)
76 [255]
72
77
73 test template support:
78 test template support:
74
79
General Comments 0
You need to be logged in to leave comments. Login now