Tests for the journal extension; records bookmark locations. $ cat >> testmocks.py << EOF > # mock out util.getuser() and util.makedate() to supply testable values > import os > from mercurial import util > def mockgetuser(): > return 'foobar' > > def mockmakedate(): > filename = os.path.join(os.environ['TESTTMP'], 'testtime') > try: > with open(filename, 'rb') as timef: > time = float(timef.read()) + 1 > except IOError: > time = 0.0 > with open(filename, 'wb') as timef: > timef.write(str(time)) > return (time, 0) > > util.getuser = mockgetuser > util.makedate = mockmakedate > EOF $ cat >> $HGRCPATH << EOF > [extensions] > journal= > testmocks=`pwd`/testmocks.py > EOF Setup repo $ hg init repo $ cd repo $ echo a > a $ hg commit -Aqm a $ echo b > a $ hg commit -Aqm b $ hg up 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Test empty journal $ hg journal previous locations of all bookmarks: no recorded locations $ hg journal foo previous locations of 'foo': no recorded locations Test that bookmarks are tracked $ hg book -r tip bar $ hg journal bar previous locations of 'bar': 1e6c11564562 book -r tip bar $ hg book -f bar $ hg journal bar previous locations of 'bar': cb9a9f314b8b book -f bar 1e6c11564562 book -r tip bar $ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved updating bookmark bar $ hg journal bar previous locations of 'bar': 1e6c11564562 up cb9a9f314b8b book -f bar 1e6c11564562 book -r tip bar Test that you can list all bookmarks as well as limit the list or filter on them $ hg book -r tip baz $ hg journal previous locations of all bookmarks: 1e6c11564562 book -r tip baz 1e6c11564562 up cb9a9f314b8b book -f bar 1e6c11564562 book -r tip bar $ hg journal --limit 2 previous locations of all bookmarks: 1e6c11564562 book -r tip baz 1e6c11564562 up $ hg journal baz previous locations of 'baz': 1e6c11564562 book -r tip baz $ hg journal bar previous locations of 'bar': 1e6c11564562 up cb9a9f314b8b book -f bar 1e6c11564562 book -r tip bar $ hg journal foo previous locations of 'foo': no recorded locations Test that verbose and commit output work $ hg journal --verbose previous locations of all bookmarks: 000000000000 -> 1e6c11564562 foobar 1970-01-01 00:00 +0000 book -r tip baz cb9a9f314b8b -> 1e6c11564562 foobar 1970-01-01 00:00 +0000 up 1e6c11564562 -> cb9a9f314b8b foobar 1970-01-01 00:00 +0000 book -f bar 000000000000 -> 1e6c11564562 foobar 1970-01-01 00:00 +0000 book -r tip bar $ hg journal --commit previous locations of all bookmarks: 1e6c11564562 book -r tip baz changeset: 1:1e6c11564562 bookmark: bar bookmark: baz tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: b 1e6c11564562 up changeset: 1:1e6c11564562 bookmark: bar bookmark: baz tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: b cb9a9f314b8b book -f bar changeset: 0:cb9a9f314b8b user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: a 1e6c11564562 book -r tip bar changeset: 1:1e6c11564562 bookmark: bar bookmark: baz tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: b Test for behaviour on unexpected storage version information $ printf '42\0' > .hg/journal $ hg journal previous locations of all bookmarks: abort: unknown journal file version '42' [255] $ hg book -r tip doomed unsupported journal file version '42'