411 '''<?xml version="1.0" ?>
412 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
413 <env:set variable="main">first</env:set>
414 <env:append variable="test_path">data1</env:append>
415 <env:include>first_inc.xml</env:include>
418 '''<?xml version="1.0" ?>
419 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
420 <env:set variable="main">second</env:set>
421 <env:include>second_inc.xml</env:include>
422 <env:append variable="test_path">data1</env:append>
425 '''<?xml version="1.0" ?>
426 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
427 <env:set variable="main">third</env:set>
428 <env:append variable="test_path">data1</env:append>
429 <env:include>subdir/first_inc.xml</env:include>
432 '''<?xml version="1.0" ?>
433 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
434 <env:set variable="main">fourth</env:set>
435 <env:include hints="subdir2">fourth_inc.xml</env:include>
438 '''<?xml version="1.0" ?>
439 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
440 <env:set variable="main">recursion</env:set>
441 <env:include>recursion.xml</env:include>
444 '''<?xml version="1.0" ?>
445 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
446 <env:append variable="test_path">data2</env:append>
447 <env:append variable="derived">another_${main}</env:append>
449 'subdir': {
'second_inc.xml':
450 '''<?xml version="1.0" ?>
451 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
452 <env:append variable="test_path">data0</env:append>
453 <env:set variable="map">this_is_second_inc</env:set>
456 '''<?xml version="1.0" ?>
457 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
458 <env:append variable="derived">second_${main}</env:append>
461 '''<?xml version="1.0" ?>
462 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
463 <env:append variable="included">from subdir</env:append>
465 'subdir2': {
'fourth_inc.xml':
466 '''<?xml version="1.0" ?>
467 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
468 <env:append variable="included">from subdir2</env:append>
472 if 'ENVXMLPATH' in os.environ:
473 del os.environ[
'ENVXMLPATH']
475 saved_path = list(EnvConfig.path)
476 EnvConfig.path[:] = [
'.']
481 control.loadXML(tmp(
'first.xml'))
482 self.assertEqual(str(control[
'main']),
'first')
483 self.assertEqual(str(control[
'test_path']),
'data1:data2')
484 self.assertEqual(str(control[
'derived']),
'another_first')
487 control.loadXML(tmp(
'first.xml'))
488 self.assertEqual(str(control[
'main']),
'first')
489 self.assertEqual(str(control[
'test_path']),
'data1:data2')
490 self.assertEqual(str(control[
'derived']),
'another_first')
493 control.loadXML(
'first.xml')
494 self.assertEqual(str(control[
'main']),
'first')
495 self.assertEqual(str(control[
'test_path']),
'data1:data2')
496 self.assertEqual(str(control[
'derived']),
'another_first')
499 self.assertRaises(OSError, control.loadXML, tmp(
'second.xml'))
502 control.loadXML(tmp(
'second.xml'))
503 self.assertEqual(str(control[
'main']),
'second')
504 self.assertEqual(str(control[
'test_path']),
'data0:data1')
505 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
508 control.loadXML(tmp(
'first.xml'))
509 self.assertEqual(str(control[
'main']),
'first')
510 self.assertEqual(str(control[
'test_path']),
'data1:data2')
511 self.assertEqual(str(control[
'derived']),
'another_first')
514 control.loadXML(tmp(
'first.xml'))
515 self.assertEqual(str(control[
'main']),
'first')
516 self.assertEqual(str(control[
'test_path']),
'data1:data2')
517 self.assertEqual(str(control[
'derived']),
'another_first')
520 control.loadXML(
'first.xml')
521 self.assertEqual(str(control[
'main']),
'first')
522 self.assertEqual(str(control[
'test_path']),
'data1:data2')
523 self.assertEqual(str(control[
'derived']),
'another_first')
526 EnvConfig.path[:] = [
'.', tmp(), tmp(
'subdir')]
528 control.loadXML(tmp(
'second.xml'))
529 self.assertEqual(str(control[
'main']),
'second')
530 self.assertEqual(str(control[
'test_path']),
'data0:data1')
531 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
533 EnvConfig.path[:] = [
'.']
536 control.loadXML(tmp(
'third.xml'))
537 self.assertEqual(str(control[
'main']),
'third')
538 self.assertEqual(str(control[
'test_path']),
'data1')
539 self.assertEqual(str(control[
'derived']),
'second_third')
542 control.loadXML(tmp(
'fourth.xml'))
543 self.assertEqual(str(control[
'main']),
'fourth')
544 self.assertEqual(str(control[
'included']),
'from subdir')
547 control.loadXML(tmp(
'fourth.xml'))
548 self.assertEqual(str(control[
'main']),
'fourth')
549 self.assertEqual(str(control[
'included']),
'from subdir2')
553 control.loadXML(tmp(
'recursion.xml'))
556 EnvConfig.path = saved_path