Mercurial > hgsubversion
comparison tests/test_utility_commands.py @ 1539:0ebcc5bbf692
tests: when making a `memctx`, make sure to use a single repo instance
The way self.repo is dynamic produces bad lock behavior because the
`context.memctx` ends up with a different instance than self in
`localrepo.commitctx`, which means the callbacks in the `memctx` get
an unlocked repo instance. This causes lock warning failures. When
it's not a code freeze for core, we should probably:
* Make lock failures hard, not just warnings
* Stop holding a repo reference in memctx, or otherwise check it's the same
instance as `self` during `localrepo.commitctx`
That's my best guess based on the (very hard to debug) test failures here.
| author | Augie Fackler <raf@durin42.com> |
|---|---|
| date | Sat, 28 Oct 2017 21:34:52 -0400 |
| parents | 180e0d5fba2e |
| children | 8410a978c650 |
comparison
equal
deleted
inserted
replaced
| 1538:b0eca4d96a53 | 1539:0ebcc5bbf692 |
|---|---|
| 165 path=path, | 165 path=path, |
| 166 data='added', | 166 data='added', |
| 167 islink=False, | 167 islink=False, |
| 168 isexec=False, | 168 isexec=False, |
| 169 copied=False) | 169 copied=False) |
| 170 ctx = context.memctx(self.repo, | 170 lr = self.repo |
| 171 ctx = context.memctx(lr, | |
| 171 parents, | 172 parents, |
| 172 'automated test', | 173 'automated test', |
| 173 ['added_bogus_file', 'other_added_file', ], | 174 ['added_bogus_file', 'other_added_file', ], |
| 174 filectxfn, | 175 filectxfn, |
| 175 'testy', | 176 'testy', |
| 176 '2008-12-21 16:32:00 -0500', | 177 '2008-12-21 16:32:00 -0500', |
| 177 {'branch': 'localbranch', }) | 178 {'branch': 'localbranch', }) |
| 178 new = self.repo.commitctx(ctx) | 179 new = lr.commitctx(ctx) |
| 179 hg.update(self.repo, new) | 180 hg.update(self.repo, new) |
| 180 wrappers.parents(lambda x, y: None, u, self.repo, svn=True) | 181 wrappers.parents(lambda x, y: None, u, self.repo, svn=True) |
| 181 actual = u.popbuffer() | 182 actual = u.popbuffer() |
| 182 self.assertEqual(actual, '3:4e256962fc5d\n') | 183 self.assertEqual(actual, '3:4e256962fc5d\n') |
| 183 | 184 |
| 209 path=path, | 210 path=path, |
| 210 data='added', | 211 data='added', |
| 211 islink=False, | 212 islink=False, |
| 212 isexec=False, | 213 isexec=False, |
| 213 copied=False) | 214 copied=False) |
| 214 ctx = context.memctx(self.repo, | 215 lr = self.repo |
| 216 ctx = context.memctx(lr, | |
| 215 parents, | 217 parents, |
| 216 'automated test', | 218 'automated test', |
| 217 ['added_bogus_file', 'other_added_file', ], | 219 ['added_bogus_file', 'other_added_file', ], |
| 218 filectxfn, | 220 filectxfn, |
| 219 'testy', | 221 'testy', |
| 220 '2008-12-21 16:32:00 -0500', | 222 '2008-12-21 16:32:00 -0500', |
| 221 {'branch': 'localbranch', }) | 223 {'branch': 'localbranch', }) |
| 222 new = self.repo.commitctx(ctx) | 224 new = lr.commitctx(ctx) |
| 223 hg.update(self.repo, new) | 225 hg.update(self.repo, new) |
| 224 u.pushbuffer() | 226 u.pushbuffer() |
| 225 commands.outgoing(u, self.repo, repourl(repo_path)) | 227 commands.outgoing(u, self.repo, repourl(repo_path)) |
| 226 actual = u.popbuffer() | 228 actual = u.popbuffer() |
| 227 self.assertTrue(node.hex(self.repo['localbranch'].node())[:8] in actual) | 229 self.assertTrue(node.hex(self.repo['localbranch'].node())[:8] in actual) |
| 240 path=path, | 242 path=path, |
| 241 data='added', | 243 data='added', |
| 242 islink=False, | 244 islink=False, |
| 243 isexec=False, | 245 isexec=False, |
| 244 copied=False) | 246 copied=False) |
| 245 ctx = context.memctx(self.repo, | 247 lr = self.repo |
| 248 ctx = context.memctx(lr, | |
| 246 parents, | 249 parents, |
| 247 'automated test', | 250 'automated test', |
| 248 ['added_bogus_file', 'other_added_file', ], | 251 ['added_bogus_file', 'other_added_file', ], |
| 249 filectxfn, | 252 filectxfn, |
| 250 'testy', | 253 'testy', |
| 251 '2008-12-21 16:32:00 -0500', | 254 '2008-12-21 16:32:00 -0500', |
| 252 {'branch': 'localbranch', }) | 255 {'branch': 'localbranch', }) |
| 253 self.repo.commitctx(ctx) | 256 lr.commitctx(ctx) |
| 254 self.assertEqual(self.repo['tip'].branch(), 'localbranch') | 257 self.assertEqual(self.repo['tip'].branch(), 'localbranch') |
| 255 beforerebasehash = self.repo['tip'].node() | 258 beforerebasehash = self.repo['tip'].node() |
| 256 hg.update(self.repo, 'tip') | 259 hg.update(self.repo, 'tip') |
| 257 wrappers.rebase(rebase.rebase, self.ui(), self.repo, svn=True) | 260 wrappers.rebase(rebase.rebase, self.ui(), self.repo, svn=True) |
| 258 self.assertEqual(self.repo['tip'].branch(), 'localbranch') | 261 self.assertEqual(self.repo['tip'].branch(), 'localbranch') |
