Mercurial > hgrepos > Python > apps > py-cutils
annotate tests/test_shasum.py @ 278:822cf3a1da22
treesum: FIX: Removal of backslashes in output: do this only where really needed.
Otherwise "backslashreplace" error encodings are "corrected" too.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 21 Feb 2025 17:27:59 +0100 |
| parents | af8318191ed3 |
| children | 7f797d71bd5e |
| rev | line source |
|---|---|
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
2 r"""Unit tests |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
3 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
4 """ |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
5 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
6 from __future__ import absolute_import, print_function |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
7 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
8 import io |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
9 import os |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
10 import sys |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
11 import unittest |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
12 try: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
13 from StringIO import StringIO |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
14 except ImportError: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
15 StringIO = None |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
16 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
17 from _test_setup import DATADIR |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
18 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
19 from cutils import shasum |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
20 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
21 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
22 PY2 = sys.version_info[0] <= 2 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
23 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
24 |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
25 def _memfile(): |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
26 if StringIO: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
27 return StringIO() |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
28 else: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
29 return io.StringIO() |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
30 |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
31 |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
32 class ChangedDir(object): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
33 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
34 """Context manager to temporarily change the directory""" |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
35 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 def __init__(self, path): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 self._new_dir = path |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
38 self._prev_dir = None |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
39 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
40 def __enter__(self): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
41 self._prev_dir = os.getcwd() |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
42 os.chdir(self._new_dir) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
43 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
44 def __exit__(self, *args, **kwds): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 if self._prev_dir is not None: |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 os.chdir(self._prev_dir) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
47 self._prev_dir = None |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
49 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 class SignifyTests(unittest.TestCase): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
51 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
52 def test_empty(self): |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
53 destfile = _memfile() |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
54 opts = shasum.gen_opts(algorithm="SHA256", |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
55 dest=destfile, |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
56 files=[os.path.join(DATADIR, "empty")]) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
57 shasum.shasum(opts) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 self.assertTrue( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 destfile.getvalue().startswith( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
60 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *")) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 |
| 103 | 62 def test_empty_with_name(self): |
| 63 destfile = _memfile() | |
| 64 with ChangedDir(DATADIR): | |
| 65 opts = shasum.gen_opts(algorithm="SHA256", | |
| 66 dest=destfile, | |
| 67 files=["empty"]) | |
| 68 shasum.shasum(opts) | |
| 69 self.assertEqual( | |
| 70 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *empty\n", | |
| 71 destfile.getvalue()) | |
| 72 | |
| 73 def test_empty_with_name_bsd(self): | |
| 74 destfile = _memfile() | |
| 75 with ChangedDir(DATADIR): | |
| 76 opts = shasum.gen_opts(algorithm="SHA512", | |
| 77 dest=destfile, | |
| 78 files=["empty"], | |
| 79 bsd=True) | |
| 80 shasum.shasum(opts) | |
| 81 self.assertEqual( | |
| 82 "SHA512 (empty) = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\n", | |
| 83 destfile.getvalue()) | |
| 84 | |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
85 def test_empty_mmap(self): |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
86 destfile = _memfile() |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
87 opts = shasum.gen_opts(algorithm="SHA256", |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
88 dest=destfile, |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
89 files=[os.path.join(DATADIR, "empty")], |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
90 mmap=True) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
91 shasum.shasum(opts) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
92 self.assertTrue( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
93 destfile.getvalue().startswith( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
94 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *")) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
95 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
96 def test_empty_no_mmap(self): |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
97 destfile = _memfile() |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
98 opts = shasum.gen_opts(algorithm="SHA256", |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
99 dest=destfile, |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
100 files=[os.path.join(DATADIR, "empty")], |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
101 mmap=False) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
102 shasum.shasum(opts) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
103 self.assertTrue( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
104 destfile.getvalue().startswith( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
105 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *")) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
106 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
107 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
108 if __name__ == "__main__": |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
109 sys.exit(unittest.main()) |
