##// END OF EJS Templates
errors: stop passing non-strings to Abort's constructor...
errors: stop passing non-strings to Abort's constructor The next patch will change `Abort`'s constructor and `__bytes__` functions and they will start assuming that the first argument is the messages as `bytes`. Differential Revision: https://phab.mercurial-scm.org/D9178

File last commit:

r40405:ef6cab79 default
r46273:a736ab68 default
Show More
test-journal.t
298 lines | 8.9 KiB | text/troff | Tads3Lexer
Martijn Pieters
journal: new experimental extension...
r29443 Tests for the journal extension; records bookmark locations.
$ cat >> testmocks.py << EOF
Yuya Nishihara
procutil: bulk-replace function calls to point to new module
r37138 > # mock out procutil.getuser() and util.makedate() to supply testable values
Martijn Pieters
journal: new experimental extension...
r29443 > import os
Matt Harbison
py3: fix module imports in tests, as flagged by test-check-module-imports.t...
r40405 > from mercurial import pycompat, util
Yuya Nishihara
procutil: bulk-replace function calls to point to new module
r37138 > from mercurial.utils import dateutil, procutil
Martijn Pieters
journal: new experimental extension...
r29443 > def mockgetuser():
Pulkit Goyal
py3: convert user value to bytes by b'' prefix...
r37401 > return b'foobar'
Martijn Pieters
journal: new experimental extension...
r29443 >
> 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:
Pulkit Goyal
py3: use pycompat.bytestr in test-journal.t...
r37382 > timef.write(pycompat.bytestr(time))
Martijn Pieters
journal: new experimental extension...
r29443 > return (time, 0)
>
Yuya Nishihara
procutil: bulk-replace function calls to point to new module
r37138 > procutil.getuser = mockgetuser
Boris Feld
util: extract all date-related utils in utils/dateutil module...
r36625 > dateutil.makedate = mockmakedate
Martijn Pieters
journal: new experimental extension...
r29443 > EOF
$ cat >> $HGRCPATH << EOF
> [extensions]
> journal=
> testmocks=`pwd`/testmocks.py
> EOF
Setup repo
$ hg init repo
$ cd repo
Test empty journal
$ hg journal
Martijn Pieters
journal: add dirstate tracking...
r29502 previous locations of '.':
Martijn Pieters
journal: new experimental extension...
r29443 no recorded locations
$ hg journal foo
previous locations of 'foo':
no recorded locations
Martijn Pieters
journal: add dirstate tracking...
r29502 Test that working copy changes are tracked
$ echo a > a
$ hg commit -Aqm a
$ hg journal
previous locations of '.':
cb9a9f314b8b commit -Aqm a
$ echo b > a
$ hg commit -Aqm b
$ hg journal
previous locations of '.':
1e6c11564562 commit -Aqm b
cb9a9f314b8b commit -Aqm a
$ hg up 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg journal
previous locations of '.':
cb9a9f314b8b up 0
1e6c11564562 commit -Aqm b
cb9a9f314b8b commit -Aqm a
Martijn Pieters
journal: new experimental extension...
r29443 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
Martijn Pieters
journal: add dirstate tracking...
r29502 Test that bookmarks and working copy tracking is not mixed
$ hg journal
previous locations of '.':
1e6c11564562 up
cb9a9f314b8b up 0
1e6c11564562 commit -Aqm b
cb9a9f314b8b commit -Aqm a
Test that you can list all entries as well as limit the list or filter on them
Martijn Pieters
journal: new experimental extension...
r29443
$ hg book -r tip baz
Martijn Pieters
journal: add dirstate tracking...
r29502 $ hg journal --all
previous locations of the working copy and bookmarks:
1e6c11564562 baz book -r tip baz
1e6c11564562 bar up
1e6c11564562 . up
cb9a9f314b8b bar book -f bar
1e6c11564562 bar book -r tip bar
cb9a9f314b8b . up 0
1e6c11564562 . commit -Aqm b
cb9a9f314b8b . commit -Aqm a
Martijn Pieters
journal: new experimental extension...
r29443 $ hg journal --limit 2
Martijn Pieters
journal: add dirstate tracking...
r29502 previous locations of '.':
Martijn Pieters
journal: new experimental extension...
r29443 1e6c11564562 up
Martijn Pieters
journal: add dirstate tracking...
r29502 cb9a9f314b8b up 0
Martijn Pieters
journal: new experimental extension...
r29443 $ 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
Martijn Pieters
journal: add dirstate tracking...
r29502 $ hg journal .
previous locations of '.':
1e6c11564562 up
cb9a9f314b8b up 0
1e6c11564562 commit -Aqm b
cb9a9f314b8b commit -Aqm a
Martijn Pieters
journal: add support for seaching by pattern...
r29504 $ hg journal "re:ba."
previous locations of 're:ba.':
1e6c11564562 baz book -r tip baz
1e6c11564562 bar up
cb9a9f314b8b bar book -f bar
1e6c11564562 bar book -r tip bar
Martijn Pieters
journal: new experimental extension...
r29443
Yuya Nishihara
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
r29677 Test that verbose, JSON, template and commit output work
Martijn Pieters
journal: new experimental extension...
r29443
Martijn Pieters
journal: add dirstate tracking...
r29502 $ hg journal --verbose --all
previous locations of the working copy and bookmarks:
000000000000 -> 1e6c11564562 foobar baz 1970-01-01 00:00 +0000 book -r tip baz
cb9a9f314b8b -> 1e6c11564562 foobar bar 1970-01-01 00:00 +0000 up
cb9a9f314b8b -> 1e6c11564562 foobar . 1970-01-01 00:00 +0000 up
1e6c11564562 -> cb9a9f314b8b foobar bar 1970-01-01 00:00 +0000 book -f bar
000000000000 -> 1e6c11564562 foobar bar 1970-01-01 00:00 +0000 book -r tip bar
1e6c11564562 -> cb9a9f314b8b foobar . 1970-01-01 00:00 +0000 up 0
cb9a9f314b8b -> 1e6c11564562 foobar . 1970-01-01 00:00 +0000 commit -Aqm b
000000000000 -> cb9a9f314b8b foobar . 1970-01-01 00:00 +0000 commit -Aqm a
$ hg journal --verbose -Tjson
[
{
"command": "up",
Yuya Nishihara
formatter: convert timestamp to int...
r37788 "date": [5, 0],
Martijn Pieters
journal: add dirstate tracking...
r29502 "name": ".",
Yuya Nishihara
journal: unify template name for "nodes" (BC)...
r39737 "newnodes": ["1e6c11564562b4ed919baca798bc4338bd299d6a"],
"oldnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
Martijn Pieters
journal: add dirstate tracking...
r29502 "user": "foobar"
},
{
"command": "up 0",
Yuya Nishihara
formatter: convert timestamp to int...
r37788 "date": [2, 0],
Martijn Pieters
journal: add dirstate tracking...
r29502 "name": ".",
Yuya Nishihara
journal: unify template name for "nodes" (BC)...
r39737 "newnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
"oldnodes": ["1e6c11564562b4ed919baca798bc4338bd299d6a"],
Martijn Pieters
journal: add dirstate tracking...
r29502 "user": "foobar"
},
{
"command": "commit -Aqm b",
Yuya Nishihara
formatter: convert timestamp to int...
r37788 "date": [1, 0],
Martijn Pieters
journal: add dirstate tracking...
r29502 "name": ".",
Yuya Nishihara
journal: unify template name for "nodes" (BC)...
r39737 "newnodes": ["1e6c11564562b4ed919baca798bc4338bd299d6a"],
"oldnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
Martijn Pieters
journal: add dirstate tracking...
r29502 "user": "foobar"
},
{
"command": "commit -Aqm a",
Yuya Nishihara
formatter: convert timestamp to int...
r37788 "date": [0, 0],
Martijn Pieters
journal: add dirstate tracking...
r29502 "name": ".",
Yuya Nishihara
journal: unify template name for "nodes" (BC)...
r39737 "newnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
"oldnodes": ["0000000000000000000000000000000000000000"],
Martijn Pieters
journal: add dirstate tracking...
r29502 "user": "foobar"
}
]
Yuya Nishihara
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
r29677
$ cat <<EOF >> $HGRCPATH
> [templates]
Yuya Nishihara
journal: unify template name for "nodes" (BC)...
r39737 > j = "{oldnodes % '{node|upper}'} -> {newnodes % '{node|upper}'}
Yuya Nishihara
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
r29677 > - user: {user}
> - command: {command}
Yuya Nishihara
journal: use fm.formatdate() to pass date tuple in appropriate type (BC)
r29679 > - date: {date|rfc3339date}
Yuya Nishihara
journal: unify template name for "nodes" (BC)...
r39737 > - newnodes: {newnodes}
> - oldnodes: {oldnodes}
Yuya Nishihara
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
r29677 > "
> EOF
$ hg journal -Tj -l1
previous locations of '.':
CB9A9F314B8B07BA71012FCDBC544B5A4D82FF5B -> 1E6C11564562B4ED919BACA798BC4338BD299D6A
- user: foobar
- command: up
Yuya Nishihara
journal: use fm.formatdate() to pass date tuple in appropriate type (BC)
r29679 - date: 1970-01-01T00:00:05+00:00
Yuya Nishihara
journal: unify template name for "nodes" (BC)...
r39737 - newnodes: 1e6c11564562b4ed919baca798bc4338bd299d6a
- oldnodes: cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
Yuya Nishihara
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
r29677
Martijn Pieters
journal: new experimental extension...
r29443 $ hg journal --commit
Martijn Pieters
journal: add dirstate tracking...
r29502 previous locations of '.':
Martijn Pieters
journal: new experimental extension...
r29443 1e6c11564562 up
changeset: 1:1e6c11564562
bookmark: bar
bookmark: baz
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
Martijn Pieters
journal: add dirstate tracking...
r29502 cb9a9f314b8b up 0
Martijn Pieters
journal: new experimental extension...
r29443 changeset: 0:cb9a9f314b8b
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Martijn Pieters
journal: add dirstate tracking...
r29502 1e6c11564562 commit -Aqm b
Martijn Pieters
journal: new experimental extension...
r29443 changeset: 1:1e6c11564562
bookmark: bar
bookmark: baz
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
Martijn Pieters
journal: add dirstate tracking...
r29502 cb9a9f314b8b commit -Aqm a
changeset: 0:cb9a9f314b8b
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Martijn Pieters
journal: new experimental extension...
r29443
Yuya Nishihara
journal: use changesetformatter to properly nest list of commits in JSON...
r39740 $ hg journal --commit -Tjson
[
{
"changesets": [{"bookmarks": ["bar", "baz"], "branch": "default", "date": [0, 0], "desc": "b", "node": "1e6c11564562b4ed919baca798bc4338bd299d6a", "parents": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"], "phase": "draft", "rev": 1, "tags": ["tip"], "user": "test"}],
"command": "up",
"date": [5, 0],
"name": ".",
"newnodes": ["1e6c11564562b4ed919baca798bc4338bd299d6a"],
"oldnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
"user": "foobar"
},
{
"changesets": [{"bookmarks": [], "branch": "default", "date": [0, 0], "desc": "a", "node": "cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b", "parents": ["0000000000000000000000000000000000000000"], "phase": "draft", "rev": 0, "tags": [], "user": "test"}],
"command": "up 0",
"date": [2, 0],
"name": ".",
"newnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
"oldnodes": ["1e6c11564562b4ed919baca798bc4338bd299d6a"],
"user": "foobar"
},
{
"changesets": [{"bookmarks": ["bar", "baz"], "branch": "default", "date": [0, 0], "desc": "b", "node": "1e6c11564562b4ed919baca798bc4338bd299d6a", "parents": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"], "phase": "draft", "rev": 1, "tags": ["tip"], "user": "test"}],
"command": "commit -Aqm b",
"date": [1, 0],
"name": ".",
"newnodes": ["1e6c11564562b4ed919baca798bc4338bd299d6a"],
"oldnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
"user": "foobar"
},
{
"changesets": [{"bookmarks": [], "branch": "default", "date": [0, 0], "desc": "a", "node": "cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b", "parents": ["0000000000000000000000000000000000000000"], "phase": "draft", "rev": 0, "tags": [], "user": "test"}],
"command": "commit -Aqm a",
"date": [0, 0],
"name": ".",
"newnodes": ["cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b"],
"oldnodes": ["0000000000000000000000000000000000000000"],
"user": "foobar"
}
]
$ hg journal --commit \
> -T'command: {command}\n{changesets % " rev: {rev}\n children: {children}\n"}'
previous locations of '.':
command: up
rev: 1
children:
command: up 0
rev: 0
Yuya Nishihara
log: make changesetformatter pass in changectx to formatter...
r39741 children: 1:1e6c11564562
Yuya Nishihara
journal: use changesetformatter to properly nest list of commits in JSON...
r39740 command: commit -Aqm b
rev: 1
children:
command: commit -Aqm a
rev: 0
Yuya Nishihara
log: make changesetformatter pass in changectx to formatter...
r39741 children: 1:1e6c11564562
Yuya Nishihara
journal: use changesetformatter to properly nest list of commits in JSON...
r39740
Martijn Pieters
journal: new experimental extension...
r29443 Test for behaviour on unexpected storage version information
Pierre-Yves David
journal: rename on disk files to 'namejournal'...
r29870 $ printf '42\0' > .hg/namejournal
Martijn Pieters
journal: new experimental extension...
r29443 $ hg journal
Martijn Pieters
journal: add dirstate tracking...
r29502 previous locations of '.':
Martijn Pieters
journal: new experimental extension...
r29443 abort: unknown journal file version '42'
[255]
$ hg book -r tip doomed
unsupported journal file version '42'