This file is indexed.

/usr/share/pyshared/simpleparse/tests/test_xml.py is in python-simpleparse 2.1.0a1-6build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
from simpleparse.xml import xml_parser
from simpleparse.parser import Parser
import unittest, string

p = Parser( xml_parser.declaration )

class XMLProductionTests(unittest.TestCase):
	"""Tests that XML grammar productions match appropriate values"""
	### ProductionTests will be added here by loop below...

class ProductionTest:
	def __init__( self, production, should, shouldnot ):
		self.production = production
		self.should = should
		self.shouldnot = shouldnot
	def __call__( self ):
		"""Perform the test"""
		for item in self.should:
			success, children, next = p.parse( item, self.production )
			assert success, """Didn't parse %s as a %s, should have"""%( repr(item), self.production)
			assert next == len(item), """Didn't parse whole of %s as a %s, parsed %s of %s characters, results were:\n%s\nRest was:\n%s"""%( repr(item), self.production, next, len(item), children, item[next:])
		for item in shouldnot:
			success, children, next = p.parse( item, self.production )
			assert not success, """Parsed %s chars of %s as a %s, shouldn't have, result was:\n%s"""%( next, repr(item), self.production, children)

def getSuite():
	return unittest.makeSuite(XMLProductionTests, 'test')



testData = {
	"CharData":(
		[# should match
			"""Type """,
		],
		[# should not match
		],
	),
	"Attribute":(
		[# should match
			"""s=&this;""",
			'''s="&this;"''',
			"""&this;""",
		],
		[# should not match
			# unfinished elements
		],
	),
		
	"element":(
		[# should match
			"""<key &this;/>""",
			"""<key s=&this;/>""",
			"""<key &this;></key>""", 
			"""<key s="&this;"/>""",
			"""<key/>""",
		],
		[# should not match
			# unfinished elements
			"""<key>""",
			"""<key &this;>""", 
			"""<key s=&this;>""",
			# end with no start...
			"""</key>""",
			# malformed end tags
			"""<key></key &this;>""", 
			"""<key></key s=&this;>""",
		],
	),
		
	"content":(
		[# should match
			"""Type <key>less-than</key> (&#x3C;) to save options.
This document was prepared on &docdate; and
is classified &security-level;.""",
			"""<key &this;/>""",
			"""<key s=&this;/>""",
			"""<key &this;></key>""", 
			"""<key s="&this;"/>""",
			"""&this;""",
			"""<key/>""",
		],
		[# should not match
			# unfinished elements
			"""<key>""",
			"""<key &this;>""", 
			"""<key s=&this;>""",
			# end with no start...
			"""</key>""",
			# malformed end tags
			"""<key></key &this;>""", 
			"""<key></key s=&this;>""",
		],
	),
	"AttValue":(
		[# should match
			'''"&this;"''',
		],
		[# should not match
		],
	),
		
	"Name": (
		[# should match
			"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-:._",
			"_a",
			":a",
			":a",
		],
		[# should not match
			"-a",
			"0",
			"0.0",
			".this",
		],
	),
	"Comment": (
		[# should match
			"<!-- testing -->",
			"<!---->",
			"<!--- -->",
			"<!-- -- -- -->",
			"<!-- - - -->",
			"<!-- declarations for <head> & <body> -->",
		],
		[# should not match
			"<!-- -- -->",
			"<!-->",
			"<!-- B+, B, or B--->",
		],
	),
	"prolog": (
		[ # should match
			"""<?xml version="1.0"?> <!DOCTYPE greeting SYSTEM "hello.dtd">""",
			"""<?xml version="1.0" encoding="UTF-8" ?>
				<!DOCTYPE greeting [
				  <!ELEMENT greeting (#PCDATA)>
			]>""",
			"""<?xml version="1.0" standalone='yes'?>""",
			"""<?xml version="1.0" encoding="UTF-8" ?>
				<!DOCTYPE greeting [
					<!ELEMENT greeting (#PCDATA)>
					<!ATTLIST greeting
						  id      ID      #REQUIRED
						  name    CDATA   #IMPLIED>
			]>""",

			"""<?xml version="1.0" encoding="UTF-8" ?>
				<!DOCTYPE greeting [
				<!-- declare the parameter entity "ISOLat2"... -->
				<!ENTITY % ISOLat2
						 SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
				<!-- ... now reference it. -->
				%ISOLat2;
			]>""",
			
		],
		[ # should not match
		],
	),
	
	"ExternalID": (
		[# should match
			'''SYSTEM "hello.dtd"''',
		],
		[# should not match
		],
	),
	"elementdecl": (
		[# should match
			'''<!ELEMENT br EMPTY>''',
			"""<!ELEMENT p (#PCDATA|emph)* >""",
			"""<!ELEMENT container ANY >""",
			"""<!ELEMENT %name.para; %content.para; >""",
			"""<!ELEMENT %name.para; ANY >""",
			"""<!ELEMENT yada (a|b|c|d)>""",
			"""<!ELEMENT %yada; (a|b|c|%others;) >""",
			"""<!ELEMENT %yada; (a|b|c|%others;) >""",
		],
		[# should not match
			"""<!ELEMENT %yada;""",
			"""%yada;""",
			"""<!%yada;>""",
		],
	),
	"elementdecl_pe": (
		[# should match
			""" %name.para; %content.para;""",
		],
		[# should not match
		],
	),
		
	"contentspec": (
		[# should match
			'''EMPTY''',
			'''ANY''',
			'''%content.para;''',
		],
		[# should not match
		],
	),
		
	"AttlistDecl": (
		[# should match
			'''<!ATTLIST termdef
          id      ID      #REQUIRED
          name    CDATA   #IMPLIED>''',
			"""<!ATTLIST list
          type    (bullets|ordered|glossary)  "ordered">""",
			"""<!ATTLIST form
          method  CDATA   #FIXED "POST">""",
		],
		[# should not match
		],
	),
	"AttDef": (
		[# should match
			''' id      ID      #REQUIRED''',
			""" name    CDATA   #IMPLIED""",
			''' type    (bullets|ordered|glossary)  "ordered"''',
			''' method  CDATA   #FIXED "POST"''',
		],
		[# should not match
		],
	),
		
	"EntityDecl": (
		[
			"""<!ENTITY Pub-Status "This is a pre-release of the specification.">""",
			"""<!ENTITY open-hatch
         SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">""",
			"""<!ENTITY open-hatch
         PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
         "http://www.textuality.com/boilerplate/OpenHatch.xml">""",
			"""<!ENTITY hatch-pic
         SYSTEM "../grafix/OpenHatch.gif"
         NDATA gif >""",
		],
		[# should not match
		],
	),
	"EntityDef":(
		[
			'''PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
         "http://www.textuality.com/boilerplate/OpenHatch.xml"''',
		],
		[# should not match
		],
	),
	"PubidLiteral":(
		[
			'''"-//Textuality//TEXT Standard open-hatch boilerplate//EN"''',
		],
		[# should not match
		],
	),
}
for production, (should,shouldnot) in testData.items():
	setattr( XMLProductionTests, 'test'+production, ProductionTest(production, should, shouldnot))

if __name__ == "__main__":
	unittest.main(defaultTest="getSuite")