347 '''<?xml version="1.0" ?>
348 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
349 <env:set variable="main">first</env:set>
350 <env:append variable="test_path">data1</env:append>
351 <env:include>first_inc.xml</env:include>
354 '''<?xml version="1.0" ?>
355 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
356 <env:set variable="main">second</env:set>
357 <env:include>second_inc.xml</env:include>
358 <env:append variable="test_path">data1</env:append>
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">third</env:set>
364 <env:append variable="test_path">data1</env:append>
365 <env:include>subdir/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">fourth</env:set>
371 <env:include hints="subdir2">fourth_inc.xml</env:include>
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">recursion</env:set>
377 <env:include>recursion.xml</env:include>
380 '''<?xml version="1.0" ?>
381 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
382 <env:append variable="test_path">data2</env:append>
383 <env:append variable="derived">another_${main}</env:append>
385 'subdir': {
'second_inc.xml':
386 '''<?xml version="1.0" ?>
387 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
388 <env:append variable="test_path">data0</env:append>
389 <env:set variable="map">this_is_second_inc</env:set>
392 '''<?xml version="1.0" ?>
393 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
394 <env:append variable="derived">second_${main}</env:append>
397 '''<?xml version="1.0" ?>
398 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
399 <env:append variable="included">from subdir</env:append>
401 'subdir2': {
'fourth_inc.xml':
402 '''<?xml version="1.0" ?>
403 <env:config xmlns:env="EnvSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="EnvSchema ./EnvSchema.xsd ">
404 <env:append variable="included">from subdir2</env:append>
408 if 'ENVXMLPATH' in os.environ:
409 del os.environ[
'ENVXMLPATH']
411 saved_path = list(EnvConfig.path)
412 EnvConfig.path[:] = [
'.']
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(tmp(
'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 control.loadXML(
'first.xml')
430 self.assertEqual(str(control[
'main']),
'first')
431 self.assertEqual(str(control[
'test_path']),
'data1:data2')
432 self.assertEqual(str(control[
'derived']),
'another_first')
435 self.assertRaises(OSError, control.loadXML, tmp(
'second.xml'))
438 control.loadXML(tmp(
'second.xml'))
439 self.assertEqual(str(control[
'main']),
'second')
440 self.assertEqual(str(control[
'test_path']),
'data0:data1')
441 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
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(tmp(
'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')
456 control.loadXML(
'first.xml')
457 self.assertEqual(str(control[
'main']),
'first')
458 self.assertEqual(str(control[
'test_path']),
'data1:data2')
459 self.assertEqual(str(control[
'derived']),
'another_first')
462 EnvConfig.path[:] = [
'.', tmp(), tmp(
'subdir')]
464 control.loadXML(tmp(
'second.xml'))
465 self.assertEqual(str(control[
'main']),
'second')
466 self.assertEqual(str(control[
'test_path']),
'data0:data1')
467 self.assertEqual(str(control[
'map']),
'this_is_second_inc')
469 EnvConfig.path[:] = [
'.']
472 control.loadXML(tmp(
'third.xml'))
473 self.assertEqual(str(control[
'main']),
'third')
474 self.assertEqual(str(control[
'test_path']),
'data1')
475 self.assertEqual(str(control[
'derived']),
'second_third')
478 control.loadXML(tmp(
'fourth.xml'))
479 self.assertEqual(str(control[
'main']),
'fourth')
480 self.assertEqual(str(control[
'included']),
'from subdir')
483 control.loadXML(tmp(
'fourth.xml'))
484 self.assertEqual(str(control[
'main']),
'fourth')
485 self.assertEqual(str(control[
'included']),
'from subdir2')
489 control.loadXML(tmp(
'recursion.xml'))
492 EnvConfig.path = saved_path