346 '''<?xml version="1.0" ?>
347 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
348 <env:set variable="main">first</env:set>
349 <env:append variable="test_path">data1</env:append>
350 <env:include>first_inc.xml</env:include>
353 '''<?xml version="1.0" ?>
354 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
355 <env:set variable="main">second</env:set>
356 <env:include>second_inc.xml</env:include>
357 <env:append variable="test_path">data1</env:append>
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">third</env:set>
363 <env:append variable="test_path">data1</env:append>
364 <env:include>subdir/first_inc.xml</env:include>
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">fourth</env:set>
370 <env:include hints="subdir2">fourth_inc.xml</env:include>
373 '''<?xml version="1.0" ?>
374 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
375 <env:set variable="main">recursion</env:set>
376 <env:include>recursion.xml</env:include>
379 '''<?xml version="1.0" ?>
380 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
381 <env:append variable="test_path">data2</env:append>
382 <env:append variable="derived">another_${main}</env:append>
384 'subdir': {
'second_inc.xml':
385 '''<?xml version="1.0" ?>
386 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
387 <env:append variable="test_path">data0</env:append>
388 <env:set variable="map">this_is_second_inc</env:set>
391 '''<?xml version="1.0" ?>
392 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
393 <env:append variable="derived">second_${main}</env:append>
396 '''<?xml version="1.0" ?>
397 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
398 <env:append variable="included">from subdir</env:append>
400 'subdir2': {
'fourth_inc.xml':
401 '''<?xml version="1.0" ?>
402 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
403 <env:append variable="included">from subdir2</env:append>
406 if 'ENVXMLPATH' in os.environ:
407 del os.environ[
'ENVXMLPATH']
411 control.loadXML(tmp(
'first.xml'))
412 self.assertEqual(str(control[
'main']),
'first')
413 self.assertEqual(str(control[
'test_path']),
'data1:data2')
414 self.assertEqual(str(control[
'derived']),
'another_first')
417 control.loadXML(tmp(
'first.xml'))
418 self.assertEqual(str(control[
'main']),
'first')
419 self.assertEqual(str(control[
'test_path']),
'data1:data2')
420 self.assertEqual(str(control[
'derived']),
'another_first')
423 control.loadXML(
'first.xml')
424 self.assertEqual(str(control[
'main']),
'first')
425 self.assertEqual(str(control[
'test_path']),
'data1:data2')
426 self.assertEqual(str(control[
'derived']),
'another_first')
429 self.assertRaises(OSError, control.loadXML, tmp(
'second.xml'))
432 control.loadXML(tmp(
'second.xml'))
433 self.assertEqual(str(control[
'main']),
'second')
434 self.assertEqual(str(control[
'test_path']),
'data0:data1')
435 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
438 control.loadXML(tmp(
'first.xml'))
439 self.assertEqual(str(control[
'main']),
'first')
440 self.assertEqual(str(control[
'test_path']),
'data1:data2')
441 self.assertEqual(str(control[
'derived']),
'another_first')
444 control.loadXML(tmp(
'first.xml'))
445 self.assertEqual(str(control[
'main']),
'first')
446 self.assertEqual(str(control[
'test_path']),
'data1:data2')
447 self.assertEqual(str(control[
'derived']),
'another_first')
450 control.loadXML(
'first.xml')
451 self.assertEqual(str(control[
'main']),
'first')
452 self.assertEqual(str(control[
'test_path']),
'data1:data2')
453 self.assertEqual(str(control[
'derived']),
'another_first')
455 os.environ[
'ENVXMLPATH'] = os.pathsep.join([tmp(), tmp(
'subdir')])
457 control.loadXML(tmp(
'second.xml'))
458 self.assertEqual(str(control[
'main']),
'second')
459 self.assertEqual(str(control[
'test_path']),
'data0:data1')
460 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
461 del os.environ[
'ENVXMLPATH']
464 control.loadXML(tmp(
'third.xml'))
465 self.assertEqual(str(control[
'main']),
'third')
466 self.assertEqual(str(control[
'test_path']),
'data1')
467 self.assertEqual(str(control[
'derived']),
'second_third')
470 control.loadXML(tmp(
'fourth.xml'))
471 self.assertEqual(str(control[
'main']),
'fourth')
472 self.assertEqual(str(control[
'included']),
'from subdir')
475 control.loadXML(tmp(
'fourth.xml'))
476 self.assertEqual(str(control[
'main']),
'fourth')
477 self.assertEqual(str(control[
'included']),
'from subdir2')
481 control.loadXML(tmp(
'recursion.xml'))