@@ -170,6 +170,16 @@ def test_xmlgen_basic(self):
170170
171171 self .assertEquals (result .getvalue (), start + "<doc></doc>" )
172172
173+ def test_xmlgen_basic_empty (self ):
174+ result = StringIO ()
175+ gen = XMLGenerator (result , short_empty_elements = True )
176+ gen .startDocument ()
177+ gen .startElement ("doc" , {})
178+ gen .endElement ("doc" )
179+ gen .endDocument ()
180+
181+ self .assertEquals (result .getvalue (), start + "<doc/>" )
182+
173183 def test_xmlgen_content (self ):
174184 result = StringIO ()
175185 gen = XMLGenerator (result )
@@ -182,6 +192,18 @@ def test_xmlgen_content(self):
182192
183193 self .assertEquals (result .getvalue (), start + "<doc>huhei</doc>" )
184194
195+ def test_xmlgen_content_empty (self ):
196+ result = StringIO ()
197+ gen = XMLGenerator (result , short_empty_elements = True )
198+
199+ gen .startDocument ()
200+ gen .startElement ("doc" , {})
201+ gen .characters ("huhei" )
202+ gen .endElement ("doc" )
203+ gen .endDocument ()
204+
205+ self .assertEquals (result .getvalue (), start + "<doc>huhei</doc>" )
206+
185207 def test_xmlgen_pi (self ):
186208 result = StringIO ()
187209 gen = XMLGenerator (result )
@@ -239,6 +261,18 @@ def test_xmlgen_ignorable(self):
239261
240262 self .assertEquals (result .getvalue (), start + "<doc> </doc>" )
241263
264+ def test_xmlgen_ignorable_empty (self ):
265+ result = StringIO ()
266+ gen = XMLGenerator (result , short_empty_elements = True )
267+
268+ gen .startDocument ()
269+ gen .startElement ("doc" , {})
270+ gen .ignorableWhitespace (" " )
271+ gen .endElement ("doc" )
272+ gen .endDocument ()
273+
274+ self .assertEquals (result .getvalue (), start + "<doc> </doc>" )
275+
242276 def test_xmlgen_ns (self ):
243277 result = StringIO ()
244278 gen = XMLGenerator (result )
@@ -257,6 +291,24 @@ def test_xmlgen_ns(self):
257291 ('<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>' %
258292 ns_uri ))
259293
294+ def test_xmlgen_ns_empty (self ):
295+ result = StringIO ()
296+ gen = XMLGenerator (result , short_empty_elements = True )
297+
298+ gen .startDocument ()
299+ gen .startPrefixMapping ("ns1" , ns_uri )
300+ gen .startElementNS ((ns_uri , "doc" ), "ns1:doc" , {})
301+ # add an unqualified name
302+ gen .startElementNS ((None , "udoc" ), None , {})
303+ gen .endElementNS ((None , "udoc" ), None )
304+ gen .endElementNS ((ns_uri , "doc" ), "ns1:doc" )
305+ gen .endPrefixMapping ("ns1" )
306+ gen .endDocument ()
307+
308+ self .assertEquals (result .getvalue (), start + \
309+ ('<ns1:doc xmlns:ns1="%s"><udoc/></ns1:doc>' %
310+ ns_uri ))
311+
260312 def test_1463026_1 (self ):
261313 result = StringIO ()
262314 gen = XMLGenerator (result )
@@ -268,6 +320,17 @@ def test_1463026_1(self):
268320
269321 self .assertEquals (result .getvalue (), start + '<a b="c"></a>' )
270322
323+ def test_1463026_1_empty (self ):
324+ result = StringIO ()
325+ gen = XMLGenerator (result , short_empty_elements = True )
326+
327+ gen .startDocument ()
328+ gen .startElementNS ((None , 'a' ), 'a' , {(None , 'b' ):'c' })
329+ gen .endElementNS ((None , 'a' ), 'a' )
330+ gen .endDocument ()
331+
332+ self .assertEquals (result .getvalue (), start + '<a b="c"/>' )
333+
271334 def test_1463026_2 (self ):
272335 result = StringIO ()
273336 gen = XMLGenerator (result )
@@ -281,6 +344,19 @@ def test_1463026_2(self):
281344
282345 self .assertEquals (result .getvalue (), start + '<a xmlns="qux"></a>' )
283346
347+ def test_1463026_2_empty (self ):
348+ result = StringIO ()
349+ gen = XMLGenerator (result , short_empty_elements = True )
350+
351+ gen .startDocument ()
352+ gen .startPrefixMapping (None , 'qux' )
353+ gen .startElementNS (('qux' , 'a' ), 'a' , {})
354+ gen .endElementNS (('qux' , 'a' ), 'a' )
355+ gen .endPrefixMapping (None )
356+ gen .endDocument ()
357+
358+ self .assertEquals (result .getvalue (), start + '<a xmlns="qux"/>' )
359+
284360 def test_1463026_3 (self ):
285361 result = StringIO ()
286362 gen = XMLGenerator (result )
@@ -295,6 +371,20 @@ def test_1463026_3(self):
295371 self .assertEquals (result .getvalue (),
296372 start + '<my:a xmlns:my="qux" b="c"></my:a>' )
297373
374+ def test_1463026_3_empty (self ):
375+ result = StringIO ()
376+ gen = XMLGenerator (result , short_empty_elements = True )
377+
378+ gen .startDocument ()
379+ gen .startPrefixMapping ('my' , 'qux' )
380+ gen .startElementNS (('qux' , 'a' ), 'a' , {(None , 'b' ):'c' })
381+ gen .endElementNS (('qux' , 'a' ), 'a' )
382+ gen .endPrefixMapping ('my' )
383+ gen .endDocument ()
384+
385+ self .assertEquals (result .getvalue (),
386+ start + '<my:a xmlns:my="qux" b="c"/>' )
387+
298388
299389class XMLFilterBaseTest (unittest .TestCase ):
300390 def test_filter_basic (self ):
0 commit comments