361 '''<?xml version="1.0" ?>
362 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
363 <env:set variable="main">first</env:set>
364 <env:append variable="test_path">data1</env:append>
365 <env:include>first_inc.xml</env:include>
368 '''<?xml version="1.0" ?>
369 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
370 <env:set variable="main">second</env:set>
371 <env:include>second_inc.xml</env:include>
372 <env:append variable="test_path">data1</env:append>
375 '''<?xml version="1.0" ?>
376 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
377 <env:set variable="main">third</env:set>
378 <env:append variable="test_path">data1</env:append>
379 <env:include>subdir/first_inc.xml</env:include>
382 '''<?xml version="1.0" ?>
383 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
384 <env:set variable="main">fourth</env:set>
385 <env:include hints="subdir2">fourth_inc.xml</env:include>
388 '''<?xml version="1.0" ?>
389 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
390 <env:set variable="main">recursion</env:set>
391 <env:include>recursion.xml</env:include>
394 '''<?xml version="1.0" ?>
395 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
396 <env:append variable="test_path">data2</env:append>
397 <env:append variable="derived">another_${main}</env:append>
399 'subdir': {
'second_inc.xml':
400 '''<?xml version="1.0" ?>
401 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
402 <env:append variable="test_path">data0</env:append>
403 <env:set variable="map">this_is_second_inc</env:set>
406 '''<?xml version="1.0" ?>
407 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
408 <env:append variable="derived">second_${main}</env:append>
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:append variable="included">from subdir</env:append>
415 'subdir2': {
'fourth_inc.xml':
416 '''<?xml version="1.0" ?>
417 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
418 <env:append variable="included">from subdir2</env:append>
422 if 'ENVXMLPATH' in os.environ:
423 del os.environ[
'ENVXMLPATH']
425 saved_path = list(EnvConfig.path)
426 EnvConfig.path[:] = [
'.']
431 control.loadXML(tmp(
'first.xml'))
432 self.assertEqual(str(control[
'main']),
'first')
433 self.assertEqual(str(control[
'test_path']),
'data1:data2')
434 self.assertEqual(str(control[
'derived']),
'another_first')
437 control.loadXML(tmp(
'first.xml'))
438 self.assertEqual(str(control[
'main']),
'first')
439 self.assertEqual(str(control[
'test_path']),
'data1:data2')
440 self.assertEqual(str(control[
'derived']),
'another_first')
443 control.loadXML(
'first.xml')
444 self.assertEqual(str(control[
'main']),
'first')
445 self.assertEqual(str(control[
'test_path']),
'data1:data2')
446 self.assertEqual(str(control[
'derived']),
'another_first')
449 self.assertRaises(OSError, control.loadXML, tmp(
'second.xml'))
452 control.loadXML(tmp(
'second.xml'))
453 self.assertEqual(str(control[
'main']),
'second')
454 self.assertEqual(str(control[
'test_path']),
'data0:data1')
455 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
458 control.loadXML(tmp(
'first.xml'))
459 self.assertEqual(str(control[
'main']),
'first')
460 self.assertEqual(str(control[
'test_path']),
'data1:data2')
461 self.assertEqual(str(control[
'derived']),
'another_first')
464 control.loadXML(tmp(
'first.xml'))
465 self.assertEqual(str(control[
'main']),
'first')
466 self.assertEqual(str(control[
'test_path']),
'data1:data2')
467 self.assertEqual(str(control[
'derived']),
'another_first')
470 control.loadXML(
'first.xml')
471 self.assertEqual(str(control[
'main']),
'first')
472 self.assertEqual(str(control[
'test_path']),
'data1:data2')
473 self.assertEqual(str(control[
'derived']),
'another_first')
476 EnvConfig.path[:] = [
'.', tmp(), tmp(
'subdir')]
478 control.loadXML(tmp(
'second.xml'))
479 self.assertEqual(str(control[
'main']),
'second')
480 self.assertEqual(str(control[
'test_path']),
'data0:data1')
481 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
483 EnvConfig.path[:] = [
'.']
486 control.loadXML(tmp(
'third.xml'))
487 self.assertEqual(str(control[
'main']),
'third')
488 self.assertEqual(str(control[
'test_path']),
'data1')
489 self.assertEqual(str(control[
'derived']),
'second_third')
492 control.loadXML(tmp(
'fourth.xml'))
493 self.assertEqual(str(control[
'main']),
'fourth')
494 self.assertEqual(str(control[
'included']),
'from subdir')
497 control.loadXML(tmp(
'fourth.xml'))
498 self.assertEqual(str(control[
'main']),
'fourth')
499 self.assertEqual(str(control[
'included']),
'from subdir2')
503 control.loadXML(tmp(
'recursion.xml'))
506 EnvConfig.path = saved_path