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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
66 def test_empty_with_name(self):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
67 destfile = _memfile()
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
68 with ChangedDir(DATADIR):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
69 opts = shasum.gen_opts(algorithm="SHA256",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
70 dest=destfile,
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
71 files=["empty"])
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
72 shasum.shasum(opts)
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
73 self.assertEqual(
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
74 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *empty\n",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
75 destfile.getvalue())
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
76
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
77 def test_empty_with_name_bsd(self):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
78 destfile = _memfile()
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
79 with ChangedDir(DATADIR):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
80 opts = shasum.gen_opts(algorithm="SHA512",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
81 dest=destfile,
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
82 files=["empty"],
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
83 bsd=True)
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
84 shasum.shasum(opts)
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
85 self.assertEqual(
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
86 "SHA512 (empty) = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\n",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
87 destfile.getvalue())
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
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())