2
2
import os
3
3
from os import path
4
4
import tempfile
5
- from six .moves import urllib
5
+ import urllib .request
6
+
6
7
7
8
import unittest
8
9
9
10
10
11
FILES = {
11
12
'tract_file' : (
12
- 'http ://midas.kitware.com/bitstream/view/17631 ' ,
13
+ 'https ://osf.io/ugyqa/files/osfstorage/6788df92de6b5942fae241be ' ,
13
14
'IIT3mean_left_hemisphere_small.trk' ,
14
15
'\xe7 \xec \xfd +\xd2 n\xff \x96 \xae \xb4 \xdf +\x19 4\xdf \x81 '
15
16
),
16
17
'atlas_file' : (
17
- 'http ://midas.kitware.com/bitstream/view/17622 ' ,
18
+ 'https ://osf.io/ugyqa/files/osfstorage/6788df9090f7678e2caeae01 ' ,
18
19
'IIT3mean_desikan_2009.nii.gz' ,
19
20
'vx\x13 \xba E\x1d R\t \xcd \xc9 EF\x17 \xa6 6\xb7 '
20
21
),
21
22
'query_uf_file' : (
22
- 'http ://midas.kitware.com/bitstream/view/17627 ' ,
23
+ 'https ://osf.io/ugyqa/files/osfstorage/6788df9781590325003424e1 ' ,
23
24
'wmql_2_uf.qry' ,
24
25
'\\ +R\x8c <B#\xea \xfc \x9a E\xbd \xb0 (\xbd n'
25
26
)
26
27
}
27
28
28
29
29
30
class TestDataSet (unittest .TestCase ):
30
-
31
- @unittest .skip ("temporarily disabled" )
32
31
def __init__ (self ):
33
32
self .dirname = path .join (
34
33
tempfile .gettempdir (),
@@ -40,22 +39,31 @@ def __init__(self):
40
39
if not path .exists (self .dirname ):
41
40
os .mkdir (self .dirname )
42
41
43
- for k , v in FILES .items ():
44
- dst_filename = path .join (self .dirname , v [1 ])
45
-
42
+ for k , (url , filename , md5 ) in FILES .items ():
43
+ dst_filename = path .join (self .dirname , filename )
46
44
if (
47
45
not path .exists (dst_filename ) or
48
- hashlib .md5 (open (dst_filename ).read ()) .digest () != v [ 2 ]
46
+ hashlib .md5 (open (dst_filename ).read (). encode ( 'utf-8' )) .digest () != md5
49
47
):
50
- dl_file = urllib .request .urlopen (v [0 ])
51
- dst_file = open (dst_filename , 'wb' )
52
- dst_file .write (dl_file .read ())
53
- dst_file .close ()
54
-
48
+ request = urllib .request .Request (url )
49
+ try :
50
+ response = urllib .request .urlopen (request )
51
+ except urllib .error .HTTPError as e :
52
+ if e .status not in (307 , 308 ):
53
+ raise
54
+ redirected_url = urllib .parse .urljoin (url , e .headers ['Location' ])
55
+ response = urllib .request .urlopen (redirected_url )
56
+ with open (dst_filename , 'wb' ) as out_file :
57
+ while True :
58
+ chunk = response .read (8192 ) # Read 8 KB at a time
59
+ if not chunk :
60
+ break
61
+ out_file .write (chunk )
55
62
if (
56
- hashlib .md5 (open (dst_filename ).read ()) .digest () != v [ 2 ]
63
+ hashlib .md5 (open (dst_filename ).read (). encode ( 'utf-8' )) .digest () != md5
57
64
):
58
- raise IOError ('File %s url %s was not properly downloaded' % (v [1 ], v [0 ]))
65
+ continue
66
+ raise IOError ('File %s url %s was not properly downloaded' % (filename , url ))
59
67
60
68
self .files [k ] = dst_filename
61
69
0 commit comments