changeset 639:8e11a6693bb3 trunk

Fix for XInclude fallbacks when auto-reloading is enabled. Closes #147. Thanks to rintaro@cpan.org for reporting the issue and providing a patch and test case!
author cmlenz
date Mon, 17 Sep 2007 23:11:21 +0000
parents 1f73e534e715
children ec86c89da78d
files genshi/template/base.py genshi/template/tests/markup.py
diffstat 2 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/template/base.py
+++ b/genshi/template/base.py
@@ -409,7 +409,7 @@
                         continue
                     elif fallback:
                         # Otherwise the include is performed at run time
-                        data = href, list(self._prepare(fallback))
+                        data = href, cls, list(self._prepare(fallback))
 
                 yield kind, data, pos
 
--- a/genshi/template/tests/markup.py
+++ b/genshi/template/tests/markup.py
@@ -388,6 +388,26 @@
         finally:
             shutil.rmtree(dirname)
 
+    def test_fallback_when_auto_reload_true(self):
+        dirname = tempfile.mkdtemp(suffix='genshi_test')
+        try:
+            file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
+            try:
+                file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
+                  <xi:include href="tmpl1.html"><xi:fallback>
+                    Missing</xi:fallback></xi:include>
+                </html>""")
+            finally:
+                file2.close()
+
+            loader = TemplateLoader([dirname], auto_reload=True)
+            tmpl = loader.load('tmpl2.html')
+            self.assertEqual("""<html>
+                    Missing
+                </html>""", tmpl.generate().render())
+        finally:
+            shutil.rmtree(dirname)
+
     def test_include_in_fallback(self):
         dirname = tempfile.mkdtemp(suffix='genshi_test')
         try:
Copyright (C) 2012-2017 Edgewall Software