Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
fslpy
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Michiel Cottaar
fslpy
Commits
ce2d5b52
Commit
ce2d5b52
authored
8 years ago
by
Paul McCarthy
Browse files
Options
Downloads
Patches
Plain Diff
fsl.utils.path test suite updated.
parent
5d644d61
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
tests/test_fsl_utils_path.py
+344
-21
344 additions, 21 deletions
tests/test_fsl_utils_path.py
with
344 additions
and
21 deletions
tests/test_fsl_utils_path.py
+
344
−
21
View file @
ce2d5b52
...
...
@@ -5,7 +5,12 @@
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
from
__future__
import
print_function
import
os
import
os.path
as
op
import
shutil
import
tempfile
import
pytest
...
...
@@ -18,7 +23,7 @@ def test_addExt_exists_shouldPass(testdir):
are valid.
"""
replacements
=
fslimage
.
REPLACEMENT
S
groups
=
fslimage
.
FILE_GROUP
S
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
tests
=
[
...
...
@@ -41,7 +46,7 @@ def test_addExt_exists_shouldPass(testdir):
assert
fslpath
.
addExt
(
prefix
,
allowedExts
,
mustExist
=
True
,
replace
=
replacement
s
)
==
output
fileGroups
=
group
s
)
==
output
def
test_addExt_exists_shouldFail
(
testdir
):
...
...
@@ -49,8 +54,8 @@ def test_addExt_exists_shouldFail(testdir):
error.
"""
replacements
=
fslimage
.
REPLACEMENT
S
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
groups
=
fslimage
.
FILE_GROUP
S
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
shouldFail
=
[
...
...
@@ -83,7 +88,7 @@ def test_addExt_exists_shouldFail(testdir):
for
test
in
shouldFail
:
prefix
=
op
.
join
(
testdir
,
'
nifti_formats
'
,
test
[
0
])
allowed
=
allowedExts
replace
=
replacements
group
=
groups
if
len
(
test
)
>=
2
:
if
not
(
test
[
1
]
==
False
):
...
...
@@ -91,14 +96,14 @@ def test_addExt_exists_shouldFail(testdir):
if
len
(
test
)
==
3
:
if
not
(
test
[
2
]
==
False
):
replace
=
test
[
2
]
group
=
test
[
2
]
with
pytest
.
raises
(
fslpath
.
PathError
):
fslpath
.
addExt
(
prefix
,
allowed
,
mustExist
=
True
,
replace
=
replace
)
fileGroups
=
group
)
def
test_addExt_noExist
(
testdir
):
...
...
@@ -136,7 +141,7 @@ def test_addExt_noExist(testdir):
def
test_removeExt
(
testdir
):
def
test_removeExt
():
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
...
...
@@ -170,13 +175,13 @@ def test_removeExt(testdir):
assert
fslpath
.
removeExt
(
path
,
allowed
)
==
output
def
test_getExt
(
testdir
):
def
test_getExt
():
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
# len(test) == 2 -> allowedExts set from above
# Otherwise, allowedExts set from test tuple
shouldPas
s
=
[
test
s
=
[
(
'
blah.blah
'
,
'
.blah
'
,
None
),
(
'
blah.blah
'
,
'
.blah
'
,
[
'
.blah
'
]),
(
'
blah.blah
'
,
'
blah
'
,
[
'
blah
'
]),
...
...
@@ -189,36 +194,74 @@ def test_getExt(testdir):
(
'
blah.hdr
'
,
'
.hdr
'
),
(
'
blah.img
'
,
'
.img
'
),
(
'
blah.img.gz
'
,
'
.img.gz
'
),
]
shouldRaise
=
[
(
'
blah
'
,
''
),
(
'
blah.blah
'
,
''
),
(
'
blah.blah
'
,
''
,
[
'
bla
'
]),
(
'
blah.nii.gz
'
,
''
,
[
'
.nii
'
]),
]
for
test
in
shouldPas
s
:
for
test
in
test
s
:
filename
=
test
[
0
]
output
=
test
[
1
]
if
len
(
test
)
==
2
:
allowed
=
allowedExts
else
:
allowed
=
test
[
2
]
print
filename
,
'
==
'
,
output
print
(
filename
,
'
==
'
,
output
)
assert
fslpath
.
getExt
(
filename
,
allowed
)
==
output
def
test_splitExt
():
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
for
test
in
shouldRaise
:
filename
=
test
[
0
]
output
=
test
[
1
]
# len(test) == 2 -> allowedExts set from above
# Otherwise, allowedExts set from test tuple
tests
=
[
(
'
blah
'
,
(
'
blah
'
,
''
)),
(
'
blah.blah
'
,
(
'
blah.blah
'
,
''
)),
(
'
blah.blah
'
,
(
'
blah
'
,
'
.blah
'
),
[
'
.blah
'
]),
(
'
blah.blah
'
,
(
'
blah.
'
,
'
blah
'
),
[
'
blah
'
]),
(
'
blah.nii
'
,
(
'
blah
'
,
'
.nii
'
)),
(
'
blah.nii.gz
'
,
(
'
blah
'
,
'
.nii.gz
'
)),
(
'
blah.img
'
,
(
'
blah
'
,
'
.img
'
)),
(
'
blah.hdr
'
,
(
'
blah
'
,
'
.hdr
'
)),
(
'
blah.img.gz
'
,
(
'
blah
'
,
'
.img.gz
'
)),
(
'
blah.nii.gz
'
,
(
'
blah.nii.gz
'
,
''
),
[]),
(
'
blah.nii.gz
'
,
(
'
blah.nii
'
,
'
.gz
'
),
[
'
.gz
'
]),
(
'
blah.nii.gz
'
,
(
'
blah.nii.gz
'
,
''
),
[
'
.nii
'
]),
(
'
blah.nii.gz
'
,
(
'
blah
'
,
'
.nii.gz
'
),
[
'
.nii.gz
'
]),
(
'
blah.nii.gz
'
,
(
'
blah.
'
,
'
nii.gz
'
),
[
'
nii.gz
'
]),
(
'
blah.blah
'
,
(
'
blah
'
,
'
.blah
'
),
None
),
(
'
blah.blah
'
,
(
'
blah
'
,
'
.blah
'
),
[
'
.blah
'
]),
(
'
blah.blah
'
,
(
'
blah.
'
,
'
blah
'
),
[
'
blah
'
]),
(
'
blah
'
,
(
'
blah
'
,
''
),
None
),
(
'
blah.nii
'
,
(
'
blah
'
,
'
.nii
'
),
None
),
(
'
blah.nii.gz
'
,
(
'
blah.nii
'
,
'
.gz
'
),
None
),
(
'
blah.nii
'
,
(
'
blah
'
,
'
.nii
'
)),
(
'
blah.nii.gz
'
,
(
'
blah
'
,
'
.nii.gz
'
)),
(
'
blah.hdr
'
,
(
'
blah
'
,
'
.hdr
'
)),
(
'
blah.img
'
,
(
'
blah
'
,
'
.img
'
)),
(
'
blah.img.gz
'
,
(
'
blah
'
,
'
.img.gz
'
)),
(
'
blah
'
,
(
'
blah
'
,
''
)),
(
'
blah.blah
'
,
(
'
blah.blah
'
,
''
)),
(
'
blah.blah
'
,
(
'
blah.blah
'
,
''
),
[
'
bla
'
]),
(
'
blah.nii.gz
'
,
(
'
blah.nii.gz
'
,
''
),
[
'
.nii
'
]),
]
for
test
in
tests
:
filename
=
test
[
0
]
outbase
,
outext
=
test
[
1
]
if
len
(
test
)
==
2
:
allowed
=
allowedExts
else
:
allowed
=
test
[
2
]
with
pytest
.
raises
(
fslpath
.
PathError
):
fslpath
.
getExt
(
filename
,
allowed
)
print
(
filename
,
'
==
'
,
(
outbase
,
outext
))
assert
fslpath
.
splitExt
(
filename
,
allowed
)
==
(
outbase
,
outext
)
def
test_deepest
():
...
...
@@ -281,4 +324,284 @@ def test_shallowest():
]
for
path
,
suffixes
,
output
in
tests
:
assert
fslpath
.
shallowest
(
path
,
suffixes
)
==
output
assert
fslpath
.
shallowest
(
path
,
suffixes
)
==
output
def
test_getFileGroup
():
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
groups
=
fslimage
.
FILE_GROUPS
# (files_to_create,
# [(path, expected),
# ...
# ]
# )
#
# expected == 'all' is equivalent to expected == files_to_create
allTests
=
[
([
'
file.hdr
'
,
'
file.img
'
],
[
(
'
file.hdr
'
,
'
all
'
),
(
'
file.img
'
,
'
all
'
)]),
([
'
file.hdr.gz
'
,
'
file.img.gz
'
],
[
(
'
file.hdr.gz
'
,
'
all
'
),
(
'
file.img.gz
'
,
'
all
'
)]),
([
'
file.hdr
'
,
'
file.img
'
,
'
file.nii
'
],
[
(
'
file.hdr
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
[
'
file.hdr
'
,
'
file.img
'
])]),
([
'
file.hdr
'
,
'
file.img
'
,
'
file.blob
'
],
[
(
'
file.hdr
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
[
'
file.hdr
'
,
'
file.img
'
])]),
([
'
file.hdr
'
],
[
(
'
file.hdr
'
,
[
'
file.hdr
'
]),
(
'
file.img
'
,
[
'
file.img
'
])]),
([
'
file.img
'
],
[
(
'
file.hdr
'
,
[
'
file.hdr
'
]),
(
'
file.img
'
,
[
'
file.img
'
])]),
]
workdir
=
tempfile
.
mkdtemp
()
try
:
for
files_to_create
,
tests
in
allTests
:
for
fn
in
files_to_create
:
with
open
(
op
.
join
(
workdir
,
fn
),
'
wt
'
)
as
f
:
f
.
write
(
'
{}
\n
'
.
format
(
fn
))
for
path
,
expected
in
tests
:
if
expected
==
'
all
'
:
expected
=
list
(
files_to_create
)
fullPaths
=
fslpath
.
getFileGroup
(
op
.
join
(
workdir
,
path
),
allowedExts
=
allowedExts
,
fileGroups
=
groups
,
fullPaths
=
True
)
exts
=
fslpath
.
getFileGroup
(
op
.
join
(
workdir
,
path
),
allowedExts
=
allowedExts
,
fileGroups
=
groups
,
fullPaths
=
False
)
assert
sorted
(
fullPaths
)
==
sorted
([
op
.
join
(
workdir
,
e
)
for
e
in
expected
])
assert
sorted
(
exts
)
==
sorted
([
fslpath
.
getExt
(
e
,
allowedExts
)
for
e
in
expected
])
for
f
in
files_to_create
:
try
:
os
.
remove
(
op
.
join
(
workdir
,
f
))
except
:
pass
finally
:
shutil
.
rmtree
(
workdir
)
def
test_imcp_shouldPass
(
move
=
False
):
allowedExts
=
fslimage
.
ALLOWED_EXTENSIONS
groups
=
fslimage
.
FILE_GROUPS
#
# (files_to_create,
# [( imcp_src, imcp_dest, files_which_should_exist),
# ( imcp_src, imcp_dest, [files_which_should_exist]),
# ([imcp_srcs], imcp_dest, files_which_should_exist),
# ([imcp_srcs], imcp_dest, [files_which_should_exist]),
# ...
# ]
# )
#
# if icmp_dest == '', it means to copy to the directory
# files_which_should_exist == 'all' is equivalent to files_which_should_exist == files_to_create
shouldPass
=
[
([
'
file.hdr
'
,
'
file.img
'
],
[
(
'
file
'
,
'
file
'
,
'
all
'
),
(
'
file
'
,
'
file.img
'
,
'
all
'
),
(
'
file
'
,
'
file.hdr
'
,
'
all
'
),
(
'
file
'
,
''
,
'
all
'
),
(
'
file.img
'
,
'
file
'
,
'
all
'
),
(
'
file.img
'
,
'
file.img
'
,
'
all
'
),
(
'
file.img
'
,
'
file.hdr
'
,
'
all
'
),
(
'
file.img
'
,
''
,
'
all
'
),
(
'
file.hdr
'
,
'
file
'
,
'
all
'
),
(
'
file.hdr
'
,
'
file.img
'
,
'
all
'
),
(
'
file.hdr
'
,
'
file.hdr
'
,
'
all
'
),
(
'
file.hdr
'
,
''
,
'
all
'
),
]),
([
'
file.hdr
'
,
'
file.img
'
,
'
file.blob
'
],
[
(
'
file
'
,
'
file
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file
'
,
'
file.img
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file
'
,
'
file.hdr
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file
'
,
''
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
'
file
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
'
file.img
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
'
file.hdr
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
''
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
'
file
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
'
file.img
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
'
file.hdr
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
''
,
[
'
file.hdr
'
,
'
file.img
'
]),
]),
([
'
file.hdr
'
,
'
file.img
'
,
'
file.nii
'
],
[
(
'
file.img
'
,
'
file
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
'
file.img
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
'
file.hdr
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.img
'
,
''
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
'
file
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
'
file.img
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
'
file.hdr
'
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.hdr
'
,
''
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.nii
'
,
'
file
'
,
'
file.nii
'
),
(
'
file.nii
'
,
'
file.nii
'
,
'
file.nii
'
),
(
'
file.nii
'
,
''
,
'
file.nii
'
),
]),
([
'
file.nii
'
],
[
(
'
file
'
,
'
file
'
,
'
all
'
),
(
'
file
'
,
'
file.nii
'
,
'
all
'
),
(
'
file
'
,
''
,
'
all
'
),
(
'
file.nii
'
,
'
file
'
,
'
all
'
),
(
'
file.nii
'
,
'
file.nii
'
,
'
all
'
),
(
'
file.nii
'
,
''
,
'
all
'
),
]),
([
'
file.nii.gz
'
],
[
(
'
file
'
,
'
file
'
,
'
all
'
),
(
'
file
'
,
'
file.nii.gz
'
,
'
all
'
),
(
'
file
'
,
''
,
'
all
'
),
(
'
file.nii.gz
'
,
'
file
'
,
'
all
'
),
(
'
file.nii.gz
'
,
'
file.nii.gz
'
,
'
all
'
),
(
'
file.nii.gz
'
,
''
,
'
all
'
),
]),
([
'
file.nii
'
,
'
file.blob
'
],
[
(
'
file
'
,
'
file
'
,
'
file.nii
'
),
(
'
file
'
,
'
file.nii
'
,
'
file.nii
'
),
(
'
file
'
,
''
,
'
file.nii
'
),
(
'
file.nii
'
,
'
file
'
,
'
file.nii
'
),
(
'
file.nii
'
,
'
file.nii
'
,
'
file.nii
'
),
(
'
file.nii
'
,
''
,
'
file.nii
'
),
]),
([
'
file.nii
'
,
'
file.nii.gz
'
],
[
(
'
file.nii
'
,
'
file
'
,
'
file.nii
'
),
(
'
file.nii
'
,
'
file.nii
'
,
'
file.nii
'
),
(
'
file.nii
'
,
''
,
'
file.nii
'
),
(
'
file.nii.gz
'
,
'
file
'
,
'
file.nii.gz
'
),
(
'
file.nii.gz
'
,
'
file.nii.gz
'
,
'
file.nii.gz
'
),
(
'
file.nii.gz
'
,
''
,
'
file.nii.gz
'
),
]),
([
'
file.hdr
'
,
'
file.img
'
,
'
file.nii
'
,
'
file.nii.gz
'
],
[
([
'
file.img
'
,
'
file.nii
'
,
'
file.nii.gz
'
],
''
,
'
all
'
),
(
'
file.img
'
,
''
,
[
'
file.hdr
'
,
'
file.img
'
]),
([
'
file.hdr
'
,
'
file.img
'
],
''
,
[
'
file.hdr
'
,
'
file.img
'
]),
(
'
file.nii
'
,
''
,
'
file.nii
'
),
([
'
file.nii
'
,
'
file.nii.gz
'
],
''
,
[
'
file.nii
'
,
'
file.nii.gz
'
]),
]),
([
'
001.hdr
'
,
'
001.img
'
,
'
002.hdr
'
,
'
002.img
'
,
'
003.hdr
'
,
'
003.img
'
],
[
([
'
001
'
,
'
002
'
,
'
003
'
],
''
,
'
all
'
),
([
'
001.img
'
,
'
002.img
'
,
'
003.img
'
],
''
,
'
all
'
),
([
'
001.hdr
'
,
'
002.hdr
'
,
'
003.hdr
'
],
''
,
'
all
'
),
([
'
001.img
'
,
'
002
'
,
'
003
'
],
''
,
'
all
'
),
([
'
001.hdr
'
,
'
002
'
,
'
003
'
],
''
,
'
all
'
),
([
'
001.img
'
,
'
002.hdr
'
,
'
003.img
'
],
''
,
'
all
'
),
([
'
001.hdr
'
,
'
002.img
'
,
'
003.hdr
'
],
''
,
'
all
'
),
([
'
001
'
,
'
003
'
],
''
,
[
'
001.hdr
'
,
'
001.img
'
,
'
003.hdr
'
,
'
003.img
'
]),
([
'
001.img
'
,
'
003.img
'
],
''
,
[
'
001.hdr
'
,
'
001.img
'
,
'
003.hdr
'
,
'
003.img
'
]),
([
'
001.hdr
'
,
'
003.hdr
'
],
''
,
[
'
001.hdr
'
,
'
001.img
'
,
'
003.hdr
'
,
'
003.img
'
]),
([
'
001.img
'
,
'
003
'
],
''
,
[
'
001.hdr
'
,
'
001.img
'
,
'
003.hdr
'
,
'
003.img
'
]),
([
'
001.hdr
'
,
'
003
'
],
''
,
[
'
001.hdr
'
,
'
001.img
'
,
'
003.hdr
'
,
'
003.img
'
]),
([
'
001.img
'
,
'
003.img
'
],
''
,
[
'
001.hdr
'
,
'
001.img
'
,
'
003.hdr
'
,
'
003.img
'
]),
([
'
001.hdr
'
,
'
003.hdr
'
],
''
,
[
'
001.hdr
'
,
'
001.img
'
,
'
003.hdr
'
,
'
003.img
'
]),
([
'
001.img
'
,
'
001.hdr
'
,
'
002.img
'
,
'
002.hdr
'
,
'
003.img
'
,
'
003.hdr
'
],
''
,
'
all
'
),
]),
]
indir
=
tempfile
.
mkdtemp
()
outdir
=
tempfile
.
mkdtemp
()
try
:
for
files_to_create
,
tests
in
shouldPass
:
if
not
isinstance
(
files_to_create
,
list
):
files_to_create
=
[
files_to_create
]
for
imcp_src
,
imcp_dest
,
should_exist
in
tests
:
if
not
isinstance
(
imcp_src
,
list
):
imcp_src
=
[
imcp_src
]
if
should_exist
==
'
all
'
:
should_exist
=
list
(
files_to_create
)
elif
not
isinstance
(
should_exist
,
list
):
should_exist
=
[
should_exist
]
imcp_dest
=
op
.
join
(
outdir
,
imcp_dest
)
# Each input file contains
# its name in plain text,
# so we can verify that the
# files were correctly copied
for
fn
in
files_to_create
:
with
open
(
op
.
join
(
indir
,
fn
),
'
wt
'
)
as
f
:
f
.
write
(
'
{}
\n
'
.
format
(
fn
))
for
src
in
imcp_src
:
src
=
op
.
join
(
indir
,
src
)
if
move
:
fslpath
.
immv
(
src
,
imcp_dest
,
allowedExts
=
allowedExts
,
fileGroups
=
groups
)
else
:
fslpath
.
imcp
(
src
,
imcp_dest
,
allowedExts
=
allowedExts
,
fileGroups
=
groups
)
copied
=
os
.
listdir
(
outdir
)
copied
=
[
f
for
f
in
copied
if
op
.
isfile
(
op
.
join
(
outdir
,
f
))]
assert
sorted
(
copied
)
==
sorted
(
should_exist
)
# check file contents
for
fn
in
should_exist
:
with
open
(
op
.
join
(
outdir
,
fn
),
'
rt
'
)
as
f
:
assert
f
.
read
()
==
'
{}
\n
'
.
format
(
fn
)
# If move, check that
# input files are gone
if
move
:
for
f
in
should_exist
:
assert
not
op
.
exists
(
op
.
join
(
indir
,
f
))
for
f
in
files_to_create
:
try
:
os
.
remove
(
op
.
join
(
indir
,
f
))
except
:
pass
for
f
in
should_exist
:
os
.
remove
(
op
.
join
(
outdir
,
f
))
finally
:
shutil
.
rmtree
(
indir
)
shutil
.
rmtree
(
outdir
)
def
test_immv_shouldPass
():
test_imcp_shouldPass
(
move
=
True
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment