annotate tests/test_shasum.py @ 327:8e62738e7469

treesum: implement option "--output-style". Currently only the existing output writer implementing the BSD style tagged output is allowed.
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 26 Mar 2025 23:42:08 +0100
parents af8318191ed3
children 7f797d71bd5e
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 -*-
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
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
62 def test_empty_with_name(self):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
63 destfile = _memfile()
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
64 with ChangedDir(DATADIR):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
65 opts = shasum.gen_opts(algorithm="SHA256",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
66 dest=destfile,
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
67 files=["empty"])
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
68 shasum.shasum(opts)
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
69 self.assertEqual(
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
70 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *empty\n",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
71 destfile.getvalue())
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
72
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
73 def test_empty_with_name_bsd(self):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
74 destfile = _memfile()
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
75 with ChangedDir(DATADIR):
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
76 opts = shasum.gen_opts(algorithm="SHA512",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
77 dest=destfile,
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
78 files=["empty"],
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
79 bsd=True)
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
80 shasum.shasum(opts)
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
81 self.assertEqual(
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
82 "SHA512 (empty) = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\n",
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
83 destfile.getvalue())
af8318191ed3 Some more tests
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 102
diff changeset
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())