diff --git a/tests/test_bids.py b/tests/test_bids.py index a5facaf8ea2727a23e89471bc13e57dee25745f4..ff236b522ffe12137de92010a5ed66c99d6ce5c9 100644 --- a/tests/test_bids.py +++ b/tests/test_bids.py @@ -18,8 +18,12 @@ import fsl.utils.bids as fslbids def test_parseFilename(): - with pytest.raises(ValueError): - fslbids.parseFilename('bad_file.txt') + badtests = ['bad_file.txt', + 'badfile.txt'] + + for test in badtests: + with pytest.raises(ValueError): + fslbids.parseFilename(test) tests = [ ('sub-01_ses-01_t1w.nii.gz', @@ -105,3 +109,41 @@ def test_loadMetadata(): assert fslbids.loadMetadata(t1) == {**meta2, **meta1} json4.write_text(json.dumps(meta4)) assert fslbids.loadMetadata(t1) == {**meta4, **meta2, **meta1} + + + +def test_loadMetadata_symlinked(): + ddreal = Path('a') + t1real = Path('b') + j1real = Path('c') + j2real = Path('d') + j3real = Path('e') + j4real = Path('f') + dd = Path('data/dataset_description.json') + t1 = Path('data/sub-01/func/sub-01_task-stim_bold.nii.gz') + json1 = Path('data/sub-01/func/sub-01_task-stim_bold.json') + json2 = Path('data/sub-01/sub-01_bold.json') + json3 = Path('data/sub-01_t1w.json') + json4 = Path('data/sub-01/task-stim_bold.json') + meta1 = {'a' : '1', 'b' : '2'} + meta2 = {'a' : '10', 'c' : '3'} + meta3 = {'a' : '109', 'b' : '99'} + meta4 = {'c' : '9', 'd' : '5'} + + with tempdir(): + ddreal.touch() + t1real.touch() + j1real.write_text(json.dumps(meta1)) + j2real.write_text(json.dumps(meta2)) + j3real.write_text(json.dumps(meta3)) + j4real.write_text(json.dumps(meta4)) + + Path(op.dirname(t1)).mkdir(parents=True) + dd .symlink_to(op.join('..', ddreal)) + t1 .symlink_to(op.join('..', '..', '..', t1real)) + json1.symlink_to(op.join('..', '..', '..', j1real)) + json2.symlink_to(op.join('..', '..', j2real)) + json3.symlink_to(op.join('..', j3real)) + json4.symlink_to(op.join('..', '..', j4real)) + + assert fslbids.loadMetadata(t1) == {**meta4, **meta2, **meta1}