diff --git a/tests/test_settings.py b/tests/test_settings.py index ac3a311b4c0454e4f023e92ce8759d9b3b75ce06..f4eeaa8ce7a4532ff19faacdf8e9e223cfb889ba 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -23,6 +23,7 @@ import pytest import tests import fsl.utils.settings as settings +import fsl.utils.tempdir as tempdir def test_initialise(): @@ -431,3 +432,88 @@ def test_writeConfigFile(): with open(op.join(testdir, 'config.pkl'), 'rb') as f: readback = pickle.load(f) assert testdata == readback + + + +def test_set(): + + with tempdir.tempdir(changeto=False) as td1,\ + tempdir.tempdir(changeto=False) as td2: + + s1 = settings.Settings(cfgdir=td1, writeOnExit=False) + s2 = settings.Settings(cfgdir=td2, writeOnExit=False) + + settings.set(s1) + with settings.writeFile('file1') as f: + f.write('hi!') + assert os.listdir(td1) == ['file1'] + assert os.listdir(td2) == [] + + settings.set(s2) + with settings.writeFile('file2') as f: + f.write('hi!') + assert os.listdir(td1) == ['file1'] + assert os.listdir(td2) == ['file2'] + + settings.set(s1) + with settings.writeFile('file3') as f: + f.write('hi!') + assert os.listdir(td1) == ['file1', 'file3'] + assert os.listdir(td2) == ['file2'] + + settings.set(s2) + with settings.writeFile('file4') as f: + f.write('hi!') + assert os.listdir(td1) == ['file1', 'file3'] + assert os.listdir(td2) == ['file2', 'file4'] + + +def test_use(): + + with tempdir.tempdir(changeto=False) as td1,\ + tempdir.tempdir(changeto=False) as td2: + + s1 = settings.Settings(cfgdir=td1, writeOnExit=False) + s2 = settings.Settings(cfgdir=td2, writeOnExit=False) + + with settings.use(s1): + with settings.writeFile('file1') as f: + f.write('hi!') + + assert os.listdir(td1) == ['file1'] + assert os.listdir(td2) == [] + + with settings.use(s2): + with settings.writeFile('file2') as f: + f.write('hi!') + + settings.set(s1) + with settings.writeFile('file3') as f: + f.write('hi!') + + with settings.use(s2): + with settings.writeFile('file4') as f: + f.write('hi!') + + assert os.listdir(td1) == ['file1', 'file3'] + assert os.listdir(td2) == ['file2', 'file4'] + + # should go back to s1 + with settings.writeFile('file5') as f: + f.write('hi!') + + assert os.listdir(td1) == ['file1', 'file3', 'file5'] + assert os.listdir(td2) == ['file2', 'file4'] + + try: + with settings.use(s2): + raise Exception('hur') + except Exception: + pass + + # should go back to s1 + with settings.writeFile('file6') as f: + f.write('hi!') + + assert os.listdir(td1) == ['file1', 'file3', 'file5', 'file6'] + assert os.listdir(td2) == ['file2', 'file4']