diff options
Diffstat (limited to 'tests/test-encoding.t')
-rw-r--r-- | tests/test-encoding.t | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/tests/test-encoding.t b/tests/test-encoding.t new file mode 100644 index 0000000..ee884ba --- /dev/null +++ b/tests/test-encoding.t @@ -0,0 +1,252 @@ +Test character encoding + + $ hg init t + $ cd t + +we need a repo with some legacy latin-1 changesets + + $ hg unbundle "$TESTDIR/bundles/legacy-encoding.hg" + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 1 files + (run 'hg update' to get a working copy) + $ hg co + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ python << EOF + > f = file('latin-1', 'w'); f.write("latin-1 e' encoded: \xe9"); f.close() + > f = file('utf-8', 'w'); f.write("utf-8 e' encoded: \xc3\xa9"); f.close() + > f = file('latin-1-tag', 'w'); f.write("\xe9"); f.close() + > EOF + +should fail with encoding error + + $ echo "plain old ascii" > a + $ hg st + M a + ? latin-1 + ? latin-1-tag + ? utf-8 + $ HGENCODING=ascii hg ci -l latin-1 + transaction abort! + rollback completed + abort: decoding near ' encoded: \xe9': 'ascii' codec can't decode byte 0xe9 in position 20: ordinal not in range(128)! (esc) + [255] + +these should work + + $ echo "latin-1" > a + $ HGENCODING=latin-1 hg ci -l latin-1 + $ echo "utf-8" > a + $ HGENCODING=utf-8 hg ci -l utf-8 + $ HGENCODING=latin-1 hg tag `cat latin-1-tag` + $ HGENCODING=latin-1 hg branch `cat latin-1-tag` + marked working directory as branch \xe9 (esc) + (branches are permanent and global, did you want a bookmark?) + $ HGENCODING=latin-1 hg ci -m 'latin1 branch' + $ rm .hg/branch + +hg log (ascii) + + $ hg --encoding ascii log + changeset: 5:a52c0692f24a + branch: ? + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin1 branch + + changeset: 4:94db611b4196 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Added tag ? for changeset ca661e7520de + + changeset: 3:ca661e7520de + tag: ? + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: utf-8 e' encoded: ? + + changeset: 2:650c6f3d55dd + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin-1 e' encoded: ? + + changeset: 1:0e5b7e3f9c4a + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: koi8-r: ????? = u'\u0440\u0442\u0443\u0442\u044c' + + changeset: 0:1e78a93102a3 + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: latin-1 e': ? = u'\xe9' + + +hg log (latin-1) + + $ hg --encoding latin-1 log + changeset: 5:a52c0692f24a + branch: \xe9 (esc) + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin1 branch + + changeset: 4:94db611b4196 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Added tag \xe9 for changeset ca661e7520de (esc) + + changeset: 3:ca661e7520de + tag: \xe9 (esc) + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: utf-8 e' encoded: \xe9 (esc) + + changeset: 2:650c6f3d55dd + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin-1 e' encoded: \xe9 (esc) + + changeset: 1:0e5b7e3f9c4a + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: koi8-r: \xd2\xd4\xd5\xd4\xd8 = u'\\u0440\\u0442\\u0443\\u0442\\u044c' (esc) + + changeset: 0:1e78a93102a3 + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: latin-1 e': \xe9 = u'\\xe9' (esc) + + +hg log (utf-8) + + $ hg --encoding utf-8 log + changeset: 5:a52c0692f24a + branch: \xc3\xa9 (esc) + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin1 branch + + changeset: 4:94db611b4196 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Added tag \xc3\xa9 for changeset ca661e7520de (esc) + + changeset: 3:ca661e7520de + tag: \xc3\xa9 (esc) + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: utf-8 e' encoded: \xc3\xa9 (esc) + + changeset: 2:650c6f3d55dd + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin-1 e' encoded: \xc3\xa9 (esc) + + changeset: 1:0e5b7e3f9c4a + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: koi8-r: \xc3\x92\xc3\x94\xc3\x95\xc3\x94\xc3\x98 = u'\\u0440\\u0442\\u0443\\u0442\\u044c' (esc) + + changeset: 0:1e78a93102a3 + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: latin-1 e': \xc3\xa9 = u'\\xe9' (esc) + + +hg tags (ascii) + + $ HGENCODING=ascii hg tags + tip 5:a52c0692f24a + ? 3:ca661e7520de + +hg tags (latin-1) + + $ HGENCODING=latin-1 hg tags + tip 5:a52c0692f24a + \xe9 3:ca661e7520de (esc) + +hg tags (utf-8) + + $ HGENCODING=utf-8 hg tags + tip 5:a52c0692f24a + \xc3\xa9 3:ca661e7520de (esc) + +hg branches (ascii) + + $ HGENCODING=ascii hg branches + ? 5:a52c0692f24a + default 4:94db611b4196 (inactive) + +hg branches (latin-1) + + $ HGENCODING=latin-1 hg branches + \xe9 5:a52c0692f24a (esc) + default 4:94db611b4196 (inactive) + +hg branches (utf-8) + + $ HGENCODING=utf-8 hg branches + \xc3\xa9 5:a52c0692f24a (esc) + default 4:94db611b4196 (inactive) + $ echo '[ui]' >> .hg/hgrc + $ echo 'fallbackencoding = koi8-r' >> .hg/hgrc + +hg log (utf-8) + + $ HGENCODING=utf-8 hg log + changeset: 5:a52c0692f24a + branch: \xc3\xa9 (esc) + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin1 branch + + changeset: 4:94db611b4196 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Added tag \xc3\xa9 for changeset ca661e7520de (esc) + + changeset: 3:ca661e7520de + tag: \xc3\xa9 (esc) + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: utf-8 e' encoded: \xc3\xa9 (esc) + + changeset: 2:650c6f3d55dd + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: latin-1 e' encoded: \xc3\xa9 (esc) + + changeset: 1:0e5b7e3f9c4a + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: koi8-r: \xd1\x80\xd1\x82\xd1\x83\xd1\x82\xd1\x8c = u'\\u0440\\u0442\\u0443\\u0442\\u044c' (esc) + + changeset: 0:1e78a93102a3 + user: test + date: Mon Jan 12 13:46:40 1970 +0000 + summary: latin-1 e': \xd0\x98 = u'\\xe9' (esc) + + +hg log (dolphin) + + $ HGENCODING=dolphin hg log + abort: unknown encoding: dolphin + (please check your locale settings) + [255] + $ HGENCODING=ascii hg branch `cat latin-1-tag` + abort: decoding near '\xe9': 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)! (esc) + [255] + $ cp latin-1-tag .hg/branch + $ HGENCODING=latin-1 hg ci -m 'auto-promote legacy name' + +Test roundtrip encoding of lookup tables when not using UTF-8 (issue2763) + + $ HGENCODING=latin-1 hg up `cat latin-1-tag` + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + + $ cd .. |