# HG changeset patch # User Pierre-Yves David # Date 1674647786 -3600 # Node ID d41960df197e654ed2e05bb3a98d3f165a60854c # Parent 7b289a70c2c823d1787506019fc91acbe51cb347 dirstate: wrap repository change in appropriate context in `test-context` We need the `wlock` (to add files), the `lock` (to commit), a `transaction` (to commit) and a `changing_files` context (to add files). Strictly speaking, we could let the commit take the `lock` and create a `transaction`, but it seems more consistent that way. diff -r 7b289a70c2c8 -r d41960df197e tests/test-context.py --- a/tests/test-context.py Wed Jan 25 12:57:52 2023 +0100 +++ b/tests/test-context.py Wed Jan 25 12:56:26 2023 +0100 @@ -42,8 +42,10 @@ os.utime('foo', (1000, 1000)) # add+commit 'foo' -repo[None].add([b'foo']) -repo.commit(text=b'commit1', date=b"0 0") +with repo.wlock(), repo.lock(), repo.transaction(b'test-context'): + with repo.dirstate.changing_files(repo): + repo[None].add([b'foo']) + repo.commit(text=b'commit1', date=b"0 0") d = repo[None][b'foo'].date() if os.name == 'nt': @@ -108,16 +110,20 @@ repo.wwrite(b'bar-m', b'bar-m\n', b'') repo.wwrite(b'bar-r', b'bar-r\n', b'') -repo[None].add([b'bar-m', b'bar-r']) -repo.commit(text=b'add bar-m, bar-r', date=b"0 0") +with repo.wlock(), repo.lock(), repo.transaction(b'test-context'): + with repo.dirstate.changing_files(repo): + repo[None].add([b'bar-m', b'bar-r']) + repo.commit(text=b'add bar-m, bar-r', date=b"0 0") # ancestor "wcctx ~ 1" actx1 = repo[b'.'] repo.wwrite(b'bar-m', b'bar-m bar-m\n', b'') repo.wwrite(b'bar-a', b'bar-a\n', b'') -repo[None].add([b'bar-a']) -repo[None].forget([b'bar-r']) +with repo.wlock(), repo.lock(), repo.transaction(b'test-context'): + with repo.dirstate.changing_files(repo): + repo[None].add([b'bar-a']) + repo[None].forget([b'bar-r']) # status at this point: # M bar-m @@ -237,7 +243,8 @@ with repo.wlock(), repo.lock(), repo.transaction(b'test'): with open(b'4', 'wb') as f: f.write(b'4') - repo.dirstate.set_tracked(b'4') + with repo.dirstate.changing_files(repo): + repo.dirstate.set_tracked(b'4') repo.commit(b'4') revsbefore = len(repo.changelog) repo.invalidate(clearfilecache=True)