Gaudi Framework, version v25r2

Home   Generated: Wed Jun 4 2014
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TestEnvOps.py
Go to the documentation of this file.
1 '''
2 Created on Jul 12, 2011
3 
4 @author: mplajner
5 '''
6 import unittest
7 import os
8 import sys
9 import shutil
10 from tempfile import mkdtemp
11 
12 from EnvConfig import Variable
13 from EnvConfig import Control
14 
15 # Keep only some Variable processors.
16 saved_processors = Variable.processors
17 Variable.processors = [Variable.EnvExpander,
20 
21 def buildDir(files, rootdir=os.curdir):
22  '''
23  Create a directory structure from the content of files.
24 
25  @param files: a dictionary or list of pairs mapping a filename to the content
26  if the content is a dictionary, recurse
27  @param rootdir: base directory
28  '''
29  if type(files) is dict:
30  files = files.items()
31 
32  # ensure that the root exists (to allow empty directories)
33  if not os.path.exists(rootdir):
34  os.makedirs(rootdir)
35 
36  # create all the entries
37  for filename, data in files:
38  filename = os.path.join(rootdir, filename)
39  if type(data) is dict:
40  buildDir(data, filename)
41  else:
42  d = os.path.dirname(filename)
43  if not os.path.exists(d):
44  os.makedirs(d)
45  f = open(filename, "w")
46  if data:
47  f.write(data)
48  f.close()
49 
50 class TempDir(object):
51  '''
52  Class for easy creation, use and removal of temporary directory structures.
53  '''
54  def __init__(self, files=None):
55  self.tmpdir = mkdtemp()
56  if files is None:
57  files = {}
58  buildDir(files, self.tmpdir)
59 
60  def __del__(self):
61  shutil.rmtree(self.tmpdir, ignore_errors=False)
62 
63  def __call__(self, *args):
64  '''
65  Return the absolute path to a file in the temporary directory.
66  '''
67  return os.path.join(self.tmpdir, *args)
68 
69 class Test(unittest.TestCase):
70 
71 
72  def setUp(self):
73  pass
74 
75  def tearDown(self):
76  pass
77 
78 
79  def testValues(self):
80  '''Test of value appending, prepending, setting, unsetting, removing'''
81  control = Control.Environment()
82 
83  self.assertFalse('MY_PATH' in control.vars())
84  control.append('MY_PATH', 'newValue')
85  self.assertTrue('MY_PATH' in control.vars())
86  var = control.var('MY_PATH')
87 
88  control.append('MY_PATH', 'newValue:secondVal:valval')
89  self.assertTrue(var[len(var)-1] == 'valval')
90 
91  self.assertTrue('newValue' in var)
92  control.remove('MY_PATH', 'newValue')
93  self.assertFalse('newValue' in var)
94 
95  control.prepend('MY_PATH', 'newValue')
96  self.assertTrue('newValue' == var[0])
97 
98  control.set('MY_PATH', 'hi:hello')
99  self.assertTrue(len(var) == 2)
100  self.assertTrue('hi' == var[0])
101 
102  control.unset('MY_PATH')
103  self.assertTrue('MY_PATH' not in control)
104 
105 
106  def testHidingDotVar(self):
107  control = Control.Environment()
108  control.variables['.'].set('some/dir')
109 
110  self.assertTrue('.' in control.variables)
111  self.assertTrue('.' not in control.vars())
112  self.assertTrue('.' not in control.vars(strings=False))
113 
114  control.set('MY_DIR', '${.}')
115  self.assertEqual(control.var('MY_DIR').value(True), 'some/dir')
116  self.assertEqual(control.vars()['MY_DIR'], 'some/dir')
117 
118 
119 
120  def testWrite(self):
121  """XML file write and load test"""
122  control = Control.Environment(useAsWriter = True)
123  control.unset('MY_PATH')
124  control.set('MY_PATH', 'set:toDelete')
125  control.append('MY_PATH', 'appended:toDelete')
126  control.prepend('MY_PATH', 'prepended:toDelete')
127  control.remove('MY_PATH', 'toDelete')
128  control.finishXMLinput('testOutputFile.xml')
129 
130  control = Control.Environment()
131  self.assertFalse('MY_PATH' in control.vars())
132  control.loadXML('testOutputFile.xml')
133 
134  self.assertTrue('MY_PATH' in control.vars())
135  var = control.var('MY_PATH')
136  self.assertTrue(var[0] == 'prepended')
137  self.assertTrue(var[1] == 'set')
138  self.assertTrue(var[2] == 'appended')
139  self.assertFalse('toDelete' in var)
140 
141  os.remove('testOutputFile.xml')
142 
143 
144  def testWriteWithList(self):
145  """XML file write and load test"""
146  control = Control.Environment(useAsWriter = True)
147  control.unset('MY_PATH')
148  control.set('MY_PATH', ['set','toDelete'])
149  control.append('MY_PATH', ['appended','toDelete'])
150  control.prepend('MY_PATH', ['prepended','toDelete'])
151  control.remove('MY_PATH', ['toDelete'])
152  control.finishXMLinput('testOutputFile.xml')
153 
154  control = Control.Environment()
155  self.assertFalse('MY_PATH' in control.vars())
156  control.loadXML('testOutputFile.xml')
157 
158  self.assertTrue('MY_PATH' in control.vars())
159  var = control.var('MY_PATH')
160  self.assertTrue(var[0] == 'prepended')
161  self.assertTrue(var[1] == 'set')
162  self.assertTrue(var[2] == 'appended')
163  self.assertFalse('toDelete' in var)
164 
165  os.remove('testOutputFile.xml')
166 
167 
168  def testSaveToXML(self):
169  """XML file write and load test"""
170  control = Control.Environment()
171 
172  control.unset('MY_PATH')
173  control.set('MY_PATH', 'set:toDelete')
174  control.append('MY_PATH', 'appended:toDelete')
175  control.prepend('MY_PATH', 'prepended:toDelete')
176  control.remove('MY_PATH', 'toDelete')
177  control.writeToXMLFile('testOutputFile.xml')
178 
179  control = Control.Environment()
180  self.assertFalse('MY_PATH' in control.vars())
181  control.loadXML('testOutputFile.xml')
182 
183  self.assertTrue('MY_PATH' in control.vars())
184  var = control.var('MY_PATH')
185  self.assertTrue(var[0] == 'prepended')
186  self.assertTrue(var[1] == 'set')
187  self.assertTrue(var[2] == 'appended')
188  self.assertFalse('toDelete' in var)
189 
190  os.remove('testOutputFile.xml')
191 
192  def testSaveToFile(self):
193  '''Test addition of variable to system'''
194  control = Control.Environment()
195 
196  control.append('sysVar', 'newValue:lala')
197  control.writeToFile('setupFile.txt')
198 
199  with open('setupFile.txt', "r") as f:
200  f.readline()
201  stri = f.readline()
202  f.close()
203 
204  self.assertEqual(stri, 'export sysVar=newValue:lala\n')
205 
206  os.remove('setupFile.txt')
207 
208  def testSearch(self):
209  '''Testing searching in variables'''
210  control = Control.Environment()
211 
212  control.append('MY_PATH', 'newValue:mess:something new:aaaabbcc')
213 
214  def count(val, regExp = False):
215  return len(control.search('MY_PATH', val, regExp))
216 
217  self.assertEqual(count('new'), 0)
218  self.assertEqual(count('newValue'), 1)
219 
220  self.assertEqual(count('me', False), 0)
221  self.assertEqual(count('me', True), 2)
222 
223  self.assertEqual(count('cc', False), 0)
224  self.assertEqual(count('cc', True), 1)
225 
226  self.assertEqual(count('a{2}b{2}c{2}', True), 1)
227  self.assertEqual(count('a{2}b{2}', True), 1)
228  self.assertEqual(count('a{1}b{2}c{2}', True), 1)
229  self.assertEqual(count('a{1}b{1}c{2}', True), 0)
230  self.assertEqual(count('a{1,2}b{1,2}c{2}', True), 1)
231  self.assertEqual(count('a{2,3}', True), 1)
232  self.assertEqual(count('a{2,3}?', True), 1)
233 
234  def testVariables(self):
235  '''Tests variables creation and redeclaration.'''
236  control = Control.Environment()
237 
238  control.append('MY_PATH', 'newValue')
239  self.assertFalse(control.var('MY_PATH').local)
240  self.assertTrue(isinstance(control.var('MY_PATH'),Variable.List))
241 
242  control.declare('loc', 'list', True)
243  self.assertTrue(control.var('loc').local)
244  self.assertTrue(isinstance(control.var('loc'),Variable.List))
245 
246  control.declare('myVar2', 'scalar', False)
247  self.assertFalse(control.var('myVar2').local)
248  self.assertTrue(isinstance(control.var('myVar2'),Variable.Scalar))
249 
250  control.declare('loc2', 'scalar', True)
251  self.assertTrue(control.var('loc2').local)
252  self.assertTrue(isinstance(control.var('loc2'),Variable.Scalar))
253 
254  control.declare('MY_PATH', 'list', False)
255  self.failUnlessRaises(Variable.EnvError, control.declare, 'MY_PATH', 'list', True)
256  self.failUnlessRaises(Variable.EnvError, control.declare, 'MY_PATH', 'scalar', True)
257  self.failUnlessRaises(Variable.EnvError, control.declare, 'MY_PATH', 'scalar', True)
258 
259  control.declare('loc', 'list', True)
260  self.failUnlessRaises(Variable.EnvError, control.declare,'loc', 'list', False)
261  self.failUnlessRaises(Variable.EnvError, control.declare,'loc', 'scalar', True)
262  self.failUnlessRaises(Variable.EnvError, control.declare,'loc', 'scalar', True)
263 
264  control.declare('myVar2', 'scalar', False)
265  self.failUnlessRaises(Variable.EnvError, control.declare,'myVar2', 'list', False)
266  self.failUnlessRaises(Variable.EnvError, control.declare,'myVar2', 'list', True)
267  self.failUnlessRaises(Variable.EnvError, control.declare,'myVar2', 'scalar', True)
268 
269  control.declare('loc2', 'scalar', True)
270  self.failUnlessRaises(Variable.EnvError, control.declare,'loc2', 'list', False)
271  self.failUnlessRaises(Variable.EnvError, control.declare,'loc2', 'list', True)
272  self.failUnlessRaises(Variable.EnvError, control.declare,'loc2', 'scalar', False)
273 
274 
275  def testDelete(self):
276  control = Control.Environment()
277 
278  control.append('MY_PATH','myVal:anotherVal:lastVal')
279  control.remove('MY_PATH','anotherVal')
280 
281  self.assertFalse('anotherVal' in control['MY_PATH'])
282  self.assertTrue('myVal' in control['MY_PATH'])
283  self.assertTrue('lastVal' in control['MY_PATH'])
284 
285  control.set('MY_PATH','myVal:anotherVal:lastVal:else')
286  control.remove('MY_PATH', '^anotherVal$', False)
287  self.assertTrue('anotherVal' in control['MY_PATH'])
288  control.remove('MY_PATH', '^anotherVal$', True)
289  self.assertFalse('anotherVal' in control['MY_PATH'])
290  self.assertTrue('myVal' in control['MY_PATH'])
291  self.assertTrue('lastVal' in control['MY_PATH'])
292  self.assertTrue('lastVal' in control['MY_PATH'])
293  control.remove('MY_PATH', 'Val', True)
294  self.assertTrue('else' in control['MY_PATH'])
295  self.assertTrue(len(control['MY_PATH']) == 1)
296 
297 
298  control.declare('myLoc', 'scalar', False)
299  control.append('myLoc','myVal:anotherVal:lastVal')
300  control.remove('myLoc', 'Val:', True)
301  self.assertTrue(str(control['myLoc']) == 'myanotherlastVal')
302 
303 
305  control = Control.Environment()
306 
307  os.environ['MY_PATH'] = '$myVal'
308  os.environ['myScal'] = '$myVal'
309 
310  control.set('ABC','anyValue')
311  control.declare('MY_PATH', 'list', False)
312  control.append('MY_PATH','$ABC')
313  self.assertTrue(control['MY_PATH'].value(True) == '$myVal:anyValue')
314 
315  control.declare('myScal', 'scalar', False)
316  control.append('myScal', '$ABC')
317  self.assertTrue(control['myScal'].value(True) == '$myValanyValue')
318 
319 
320  def testDependencies(self):
321  control = Control.Environment()
322 
323  control.declare('myVar', 'list', False)
324 
325  control.declare('loc', 'list', True)
326  control.append('loc','locVal')
327  control.append('loc','locVal2')
328 
329  control.declare('scal', 'scalar', False)
330  control.append('scal','scalVal')
331  control.append('scal','scalVal2')
332 
333  control.declare('scal2', 'scalar', True)
334  control.append('scal2','locScal')
335  control.append('scal2','locScal2')
336 
337  control.set('myVar', 'newValue:$loc:endValue')
338  self.assertEqual(str(control['myVar']),'newValue:locVal:locVal2:endValue')
339 
340  control.set('myVar', 'newValue:$scal:endValue')
341  self.assertEqual(str(control['myVar']),'newValue:scalValscalVal2:endValue')
342 
343  control.set('myVar', 'new${scal}Value:endValue')
344  self.assertEqual(str(control['myVar']),'newscalValscalVal2Value:endValue')
345 
346  control.set('myVar', 'bla:$myVar:Value')
347  self.assertEqual(str(control['myVar']),'bla:newscalValscalVal2Value:endValue:Value')
348 
349  control.set('scal', 'new${scal2}Value')
350  self.assertEqual(str(control['scal']),'newlocScallocScal2Value')
351 
352  control.set('scal', 'new${loc}Value')
353  self.assertEqual(str(control['scal']),'newlocVal:locVal2Value')
354 
355  control.set('scal2', 'new${scal2}Value')
356  self.assertEqual(str(control['scal2']),'newlocScallocScal2Value')
357 
358  def testInclude(self):
359  tmp = TempDir({'first.xml':
360 '''<?xml version="1.0" ?>
361 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
362 <env:set variable="main">first</env:set>
363 <env:append variable="test_path">data1</env:append>
364 <env:include>first_inc.xml</env:include>
365 </env:config>''',
366  'second.xml':
367 '''<?xml version="1.0" ?>
368 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
369 <env:set variable="main">second</env:set>
370 <env:include>second_inc.xml</env:include>
371 <env:append variable="test_path">data1</env:append>
372 </env:config>''',
373  'third.xml':
374 '''<?xml version="1.0" ?>
375 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
376 <env:set variable="main">third</env:set>
377 <env:append variable="test_path">data1</env:append>
378 <env:include>subdir/first_inc.xml</env:include>
379 </env:config>''',
380  'fourth.xml':
381 '''<?xml version="1.0" ?>
382 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
383 <env:set variable="main">fourth</env:set>
384 <env:include hints="subdir2">fourth_inc.xml</env:include>
385 </env:config>''',
386  'recursion.xml':
387 '''<?xml version="1.0" ?>
388 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
389 <env:set variable="main">recursion</env:set>
390 <env:include>recursion.xml</env:include>
391 </env:config>''',
392  'first_inc.xml':
393 '''<?xml version="1.0" ?>
394 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
395 <env:append variable="test_path">data2</env:append>
396 <env:append variable="derived">another_${main}</env:append>
397 </env:config>''',
398  'subdir': {'second_inc.xml':
399 '''<?xml version="1.0" ?>
400 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
401 <env:append variable="test_path">data0</env:append>
402 <env:set variable="map">this_is_second_inc</env:set>
403 </env:config>''',
404  'first_inc.xml':
405 '''<?xml version="1.0" ?>
406 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
407 <env:append variable="derived">second_${main}</env:append>
408 </env:config>''',
409  'fourth_inc.xml':
410 '''<?xml version="1.0" ?>
411 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
412 <env:append variable="included">from subdir</env:append>
413 </env:config>''',},
414  'subdir2': {'fourth_inc.xml':
415 '''<?xml version="1.0" ?>
416 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
417 <env:append variable="included">from subdir2</env:append>
418 </env:config>''',}})
419 
420  # set the basic search path to the minimal default
421  if 'ENVXMLPATH' in os.environ:
422  del os.environ['ENVXMLPATH']
423  import EnvConfig
424  saved_path = list(EnvConfig.path)
425  EnvConfig.path[:] = ['.']
426 
427  control = Control.Environment(searchPath=[])
428 
429  #self.assertRaises(OSError, control.loadXML, tmp('first.xml'))
430  control.loadXML(tmp('first.xml'))
431  self.assertEqual(str(control['main']), 'first')
432  self.assertEqual(str(control['test_path']), 'data1:data2')
433  self.assertEqual(str(control['derived']), 'another_first')
434 
435  control = Control.Environment(searchPath=[tmp()])
436  control.loadXML(tmp('first.xml'))
437  self.assertEqual(str(control['main']), 'first')
438  self.assertEqual(str(control['test_path']), 'data1:data2')
439  self.assertEqual(str(control['derived']), 'another_first')
440 
441  control = Control.Environment(searchPath=[tmp()])
442  control.loadXML('first.xml')
443  self.assertEqual(str(control['main']), 'first')
444  self.assertEqual(str(control['test_path']), 'data1:data2')
445  self.assertEqual(str(control['derived']), 'another_first')
446 
447  control = Control.Environment(searchPath=[tmp()])
448  self.assertRaises(OSError, control.loadXML, tmp('second.xml'))
449 
450  control = Control.Environment(searchPath=[tmp(), tmp('subdir')])
451  control.loadXML(tmp('second.xml'))
452  self.assertEqual(str(control['main']), 'second')
453  self.assertEqual(str(control['test_path']), 'data0:data1')
454  self.assertEqual(str(control['map']), 'this_is_second_inc')
455 
456  control = Control.Environment(searchPath=[tmp(), tmp('subdir')])
457  control.loadXML(tmp('first.xml'))
458  self.assertEqual(str(control['main']), 'first')
459  self.assertEqual(str(control['test_path']), 'data1:data2')
460  self.assertEqual(str(control['derived']), 'another_first')
461 
462  control = Control.Environment(searchPath=[tmp('subdir'), tmp()])
463  control.loadXML(tmp('first.xml'))
464  self.assertEqual(str(control['main']), 'first')
465  self.assertEqual(str(control['test_path']), 'data1:data2')
466  self.assertEqual(str(control['derived']), 'another_first')
467 
468  control = Control.Environment(searchPath=[tmp('subdir'), tmp()])
469  control.loadXML('first.xml')
470  self.assertEqual(str(control['main']), 'first')
471  self.assertEqual(str(control['test_path']), 'data1:data2')
472  self.assertEqual(str(control['derived']), 'another_first')
473 
474  #os.environ['ENVXMLPATH'] = os.pathsep.join([tmp(), tmp('subdir')])
475  EnvConfig.path[:] = ['.', tmp(), tmp('subdir')]
476  control = Control.Environment(searchPath=[])
477  control.loadXML(tmp('second.xml'))
478  self.assertEqual(str(control['main']), 'second')
479  self.assertEqual(str(control['test_path']), 'data0:data1')
480  self.assertEqual(str(control['map']), 'this_is_second_inc')
481  #del os.environ['ENVXMLPATH']
482  EnvConfig.path[:] = ['.']
483 
484  control = Control.Environment(searchPath=[])
485  control.loadXML(tmp('third.xml'))
486  self.assertEqual(str(control['main']), 'third')
487  self.assertEqual(str(control['test_path']), 'data1')
488  self.assertEqual(str(control['derived']), 'second_third')
489 
490  control = Control.Environment(searchPath=[tmp('subdir')])
491  control.loadXML(tmp('fourth.xml'))
492  self.assertEqual(str(control['main']), 'fourth')
493  self.assertEqual(str(control['included']), 'from subdir')
494 
495  control = Control.Environment(searchPath=[])
496  control.loadXML(tmp('fourth.xml'))
497  self.assertEqual(str(control['main']), 'fourth')
498  self.assertEqual(str(control['included']), 'from subdir2')
499 
500  control = Control.Environment(searchPath=[])
501  #self.assertRaises(OSError, control.loadXML, tmp('first.xml'))
502  control.loadXML(tmp('recursion.xml'))
503 
504  # restore search path
505  EnvConfig.path = saved_path
506 
507 
508  def testFileDir(self):
509  tmp = TempDir({'env.xml':
510 '''<?xml version="1.0" ?>
511 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
512 <env:set variable="mydirs">${.}</env:set>
513 <env:set variable="myparent">${.}/..</env:set>
514 </env:config>'''})
515 
516  control = Control.Environment()
517  control.loadXML(tmp('env.xml'))
518  self.assertEqual(str(control['mydirs']), tmp())
519  self.assertEqual(str(control['myparent']), os.path.dirname(tmp()))
520 
521  olddir = os.getcwd()
522  os.chdir(tmp())
523  try:
524  control = Control.Environment()
525  control.loadXML('env.xml')
526  self.assertEqual(str(control['mydirs']), tmp())
527  self.assertEqual(str(control['myparent']), os.path.dirname(tmp()))
528  finally:
529  os.chdir(olddir)
530 
531  def testDefaults(self):
532  tmp = TempDir({'env.xml':
533 '''<?xml version="1.0" ?>
534 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
535 <env:default variable="var1">value1</env:default>
536 <env:declare variable="var2" local="true" />
537 <env:default variable="var2">test2</env:default>
538 </env:config>'''})
539 
540  if 'var1' in os.environ:
541  del os.environ['var1']
542  control = Control.Environment()
543  control.loadXML(tmp('env.xml'))
544  self.assertEqual(str(control['var1']), "value1")
545  self.assertEqual(str(control['var2']), "test2")
546 
547  os.environ['var1'] = "some_value"
548  control = Control.Environment()
549  control.loadXML(tmp('env.xml'))
550  self.assertEqual(str(control['var1']), "some_value")
551  self.assertEqual(str(control['var2']), "test2")
552 
553 
555  l = Variable.List('PATH')
556 
557  l.set("/usr/bin:/some//strange/../nice/./location")
558  assert l.value(asString=True) == "/usr/bin:/some/nice/location"
559 
560  l.append("/another/path")
561  assert l.value(asString=True) == "/usr/bin:/some/nice/location:/another/path"
562 
563  # duplicates removal
564  l.append("/usr/bin")
565  assert l.value(asString=True) == "/usr/bin:/some/nice/location:/another/path"
566  l.prepend("/another/path")
567  assert l.value(asString=True) == "/another/path:/usr/bin:/some/nice/location"
568 
569  s = Variable.Scalar('VAR')
570 
571  s.set("/usr/bin")
572  assert s.value(asString=True) == "/usr/bin"
573 
574  s.set("/some//strange/../nice/./location")
575  assert s.value(asString=True) == "/some/nice/location"
576 
577  # This is undefined
578  # l.set("http://cern.ch")
579 
580  s.set("http://cern.ch")
581  assert s.value(asString=True) == "http://cern.ch"
582 
583 if __name__ == "__main__":
584  #import sys;sys.argv = ['', 'Test.testName']
585  unittest.main()

Generated at Wed Jun 4 2014 14:48:55 for Gaudi Framework, version v25r2 by Doxygen version 1.8.2 written by Dimitri van Heesch, © 1997-2004