1
1
# -*- coding: utf-8 -*-
2
2
3
+ import imp
3
4
import os
4
5
6
+ from nose import tools
7
+
5
8
import base
6
9
from docker_registry .lib import checksums
7
10
from docker_registry .lib import xtarfile
8
11
12
+
13
+ # setting like this in test, due to flake8 H302
9
14
tarfile = xtarfile .tarfile
10
15
16
+ # To test whether the UnicodeDecodeError still exists
17
+ # (it's still present in python 3.4.0)
18
+ # ((loading this way, since we've monkey patched currently loaded tarfile))
19
+ tarfile_vanilla = imp .load_module ('test_failing' , * imp .find_module ('tarfile' ))
20
+
11
21
12
22
class TestTarfile (base .TestCase ):
23
+ @tools .raises (UnicodeDecodeError )
24
+ def test_vanilla_tarfile (self ):
25
+ layer_fh = open (os .path .join (base .data_dir , "xattr/layer.tar" ))
26
+ tar = tarfile_vanilla .open (mode = 'r|*' , fileobj = layer_fh )
27
+ assert tar
28
+
13
29
def test_headers (self ):
14
30
expected = {
15
31
"46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457/layer.tar" : { # noqa
@@ -70,31 +86,21 @@ def test_headers(self):
70
86
for member in tar :
71
87
member_count += 1
72
88
# check that we know the file names
73
- assert (
74
- (len (
75
- filter (
76
- lambda x : member .path in x , expected [file ].keys ()
77
- )
78
- ) > 0 ), "in %s, did not find file %s" % (
79
- file ,
80
- member .path ))
89
+ msg = "in %s, did not find file %s" % (file , member .path )
90
+ l = len (filter (lambda x : member .path in x ,
91
+ expected [file ].keys ()))
92
+ assert (l > 0 ), msg
81
93
e = expected [file ][member .path ]
82
94
for attr in e ["headers" ].keys ():
83
- assert (e ["headers" ][attr ] == getattr (member , attr ),
84
- "in %s:%s, expected %s of %s, but got %s" % (
85
- file ,
86
- member .path ,
87
- attr ,
88
- e ["headers" ][attr ],
89
- getattr (member , attr )))
95
+ msg = "in %s:%s, expected %s of %s, but got %s" % (
96
+ file , member .path , attr , e ["headers" ][attr ],
97
+ getattr (member , attr ))
98
+ assert e ["headers" ][attr ] == getattr (member , attr ), msg
90
99
for attr in e ["pax" ].keys ():
91
- assert (e ["pax" ][attr ] == member .pax_headers [attr ],
92
- b"in %s:%s, expected %s of %s, but got %s" .format (
93
- file ,
94
- member .path ,
95
- attr ,
96
- e ["pax" ][attr ],
97
- member .pax_headers [attr ]))
100
+ msg = b"in %s:%s, expected %s of %s, but got %s" .format (
101
+ file , member .path , attr , e ["pax" ][attr ],
102
+ member .pax_headers [attr ])
103
+ assert e ["pax" ][attr ] == member .pax_headers [attr ], msg
98
104
99
105
assert member_count == len (expected [file ])
100
106
layer_fh .close ()
@@ -114,11 +120,9 @@ def test_tarsum(self):
114
120
for member in tar :
115
121
tarsum .append (member , tar )
116
122
sum = tarsum .compute ()
117
- assert (expected [layer ] == sum ,
118
- "layer %s, expected [%s] but got [%s]" % (
119
- layer ,
120
- expected [layer ],
121
- sum ))
123
+ msg = "layer %s, expected [%s] but got [%s]" % (
124
+ layer , expected [layer ], sum )
125
+ assert expected [layer ] == sum , msg
122
126
123
127
layer_fh .close ()
124
128
json_fh .close ()
0 commit comments