1
2
3
4
5
6
7
8
9 """Test some base functionality which did not make it into a separate unittests"""
10
11 import unittest
12 import os.path
13 import numpy as N
14
15 from mvpa import cfg
16 from mvpa.base import externals
17
18
20
22 self.backup = []
23
24 if cfg.has_section('externals'):
25 self.backup = cfg.items('externals')
26 cfg.remove_section('externals')
27
28
30 if len(self.backup):
31 if not cfg.has_section('externals'):
32 cfg.add_section('externals')
33 for o,v in self.backup:
34 cfg.set('externals', o,v)
35
36
37 - def testExternals(self):
38 self.failUnlessRaises(ValueError, externals.exists, 'BoGuS')
39
40
42
43
44
45 class Checker(object):
46 """Helper class to increment count of actual checks"""
47 def __init__(self): self.checked = 0
48 def check(self): self.checked += 1
49
50 checker = Checker()
51
52 externals._KNOWN['checker'] = 'checker.check()'
53 externals.__dict__['checker'] = checker
54 externals.exists('checker')
55 self.failUnlessEqual(checker.checked, 1)
56 externals.exists('checker')
57 self.failUnlessEqual(checker.checked, 1)
58 externals.exists('checker', force=True)
59 self.failUnlessEqual(checker.checked, 2)
60 externals.exists('checker')
61 self.failUnlessEqual(checker.checked, 2)
62
63
64 externals.__dict__.pop('checker')
65 externals._KNOWN.pop('checker')
66
67
69
70 externals._KNOWN['checker2'] = 'raise ImportError'
71
72 self.failUnless(not externals.exists('checker2'),
73 msg="Should be False on 1st invocation")
74
75 self.failUnless(not externals.exists('checker2'),
76 msg="Should be False on 2nd invocation as well")
77
78 externals._KNOWN.pop('checker2')
79
80
83
84
85 if __name__ == '__main__':
86 import runner
87