Mercurial > hgrepos > Python > apps > py-cutils
annotate tests/test_shasum.py @ 372:bfe1160fbfd3
treesum: Make ERROR outputs more consistent: use native paths where possible
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sun, 13 Apr 2025 14:15:33 +0200 |
| parents | 7f797d71bd5e |
| children |
| rev | line source |
|---|---|
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
|
357
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
103
diff
changeset
|
2 # :- |
|
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
103
diff
changeset
|
3 # SPDX-FileCopyrightText: © 2022 Franz Glasner |
|
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
103
diff
changeset
|
4 # SPDX-License-Identifier: BSD-3-Clause |
|
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
103
diff
changeset
|
5 # :- |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
6 r"""Unit tests |
|
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 """ |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
9 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
10 from __future__ import absolute_import, print_function |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
11 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
12 import io |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
13 import os |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
14 import sys |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
15 import unittest |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
16 try: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
17 from StringIO import StringIO |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
18 except ImportError: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
19 StringIO = None |
|
101
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 from _test_setup import DATADIR |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
22 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
23 from cutils import shasum |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
24 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
25 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
26 PY2 = sys.version_info[0] <= 2 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
27 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
28 |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
29 def _memfile(): |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
30 if StringIO: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
31 return StringIO() |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
32 else: |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
33 return io.StringIO() |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
34 |
|
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
35 |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 class ChangedDir(object): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
38 """Context manager to temporarily change the directory""" |
|
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 __init__(self, path): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
41 self._new_dir = path |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
42 self._prev_dir = None |
|
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 __enter__(self): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 self._prev_dir = os.getcwd() |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 os.chdir(self._new_dir) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
47 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 def __exit__(self, *args, **kwds): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
49 if self._prev_dir is not None: |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 os.chdir(self._prev_dir) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
51 self._prev_dir = None |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
52 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
53 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
54 class SignifyTests(unittest.TestCase): |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
55 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
56 def test_empty(self): |
|
102
83dd2506f8f8
FIX: Make tests work on Python 2
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
101
diff
changeset
|
57 destfile = _memfile() |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 opts = shasum.gen_opts(algorithm="SHA256", |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 dest=destfile, |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
60 files=[os.path.join(DATADIR, "empty")]) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 shasum.shasum(opts) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
62 self.assertTrue( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 destfile.getvalue().startswith( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
64 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *")) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
65 |
| 103 | 66 def test_empty_with_name(self): |
| 67 destfile = _memfile() | |
| 68 with ChangedDir(DATADIR): | |
| 69 opts = shasum.gen_opts(algorithm="SHA256", | |
| 70 dest=destfile, | |
| 71 files=["empty"]) | |
| 72 shasum.shasum(opts) | |
| 73 self.assertEqual( | |
| 74 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *empty\n", | |
| 75 destfile.getvalue()) | |
| 76 | |
| 77 def test_empty_with_name_bsd(self): | |
| 78 destfile = _memfile() | |
| 79 with ChangedDir(DATADIR): | |
| 80 opts = shasum.gen_opts(algorithm="SHA512", | |
| 81 dest=destfile, | |
| 82 files=["empty"], | |
| 83 bsd=True) | |
| 84 shasum.shasum(opts) | |
| 85 self.assertEqual( | |
| 86 "SHA512 (empty) = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\n", | |
| 87 destfile.getvalue()) | |
| 88 | |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
89 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
|
90 destfile = _memfile() |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
91 opts = shasum.gen_opts(algorithm="SHA256", |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
92 dest=destfile, |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
93 files=[os.path.join(DATADIR, "empty")], |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
94 mmap=True) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
95 shasum.shasum(opts) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
96 self.assertTrue( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
97 destfile.getvalue().startswith( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
98 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *")) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
99 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
100 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
|
101 destfile = _memfile() |
|
101
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
102 opts = shasum.gen_opts(algorithm="SHA256", |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
103 dest=destfile, |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
104 files=[os.path.join(DATADIR, "empty")], |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
105 mmap=False) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
106 shasum.shasum(opts) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
107 self.assertTrue( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
108 destfile.getvalue().startswith( |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
109 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *")) |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
110 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
111 |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
112 if __name__ == "__main__": |
|
5de499711a92
Begin some unittests for shasum
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
113 sys.exit(unittest.main()) |
