@@ -141,6 +141,32 @@ def test_mixed_quote_in_public
141
141
valid-name PUBLIC \" valid-pubid-literal\" \" invalid-system-literal'>]>
142
142
DETAIL
143
143
end
144
+
145
+ def test_no_literal_in_system
146
+ exception = assert_raise ( REXML ::ParseException ) do
147
+ REXML ::Document . new ( '<!DOCTYPE root [<!ENTITY valid-name SYSTEM>]>' )
148
+ end
149
+ assert_equal ( <<-DETAIL . chomp , exception . to_s )
150
+ Malformed entity declaration
151
+ Line: 1
152
+ Position: 45
153
+ Last 80 unconsumed characters:
154
+ valid-name SYSTEM>]>
155
+ DETAIL
156
+ end
157
+
158
+ def test_no_literal_in_public
159
+ exception = assert_raise ( REXML ::ParseException ) do
160
+ REXML ::Document . new ( '<!DOCTYPE root [<!ENTITY valid-name PUBLIC "valid-pubid-literal">]>' )
161
+ end
162
+ assert_equal ( <<-DETAIL . chomp , exception . to_s )
163
+ Malformed entity declaration
164
+ Line: 1
165
+ Position: 67
166
+ Last 80 unconsumed characters:
167
+ valid-name PUBLIC \" valid-pubid-literal\" >]>
168
+ DETAIL
169
+ end
144
170
end
145
171
146
172
# https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-PubidLiteral
@@ -185,6 +211,19 @@ def test_mixed_quote
185
211
valid-name PUBLIC \" invalid-pubid-literal' \" valid-system-literal\" >]>
186
212
DETAIL
187
213
end
214
+
215
+ def test_no_literal
216
+ exception = assert_raise ( REXML ::ParseException ) do
217
+ REXML ::Document . new ( '<!DOCTYPE root [<!ENTITY valid-name PUBLIC>]>' )
218
+ end
219
+ assert_equal ( <<-DETAIL . chomp , exception . to_s )
220
+ Malformed entity declaration
221
+ Line: 1
222
+ Position: 45
223
+ Last 80 unconsumed characters:
224
+ valid-name PUBLIC>]>
225
+ DETAIL
226
+ end
188
227
end
189
228
end
190
229
@@ -350,6 +389,32 @@ def test_mixed_quote_in_public
350
389
% valid-name PUBLIC \" valid-pubid-literal\" 'invalid-system-literal\" >]>
351
390
DETAIL
352
391
end
392
+
393
+ def test_no_literal_in_system
394
+ exception = assert_raise ( REXML ::ParseException ) do
395
+ REXML ::Document . new ( '<!DOCTYPE root [<!ENTITY % valid-name SYSTEM>]>' )
396
+ end
397
+ assert_equal ( <<-DETAIL . chomp , exception . to_s )
398
+ Malformed entity declaration
399
+ Line: 1
400
+ Position: 47
401
+ Last 80 unconsumed characters:
402
+ % valid-name SYSTEM>]>
403
+ DETAIL
404
+ end
405
+
406
+ def test_no_literal_in_public
407
+ exception = assert_raise ( REXML ::ParseException ) do
408
+ REXML ::Document . new ( '<!DOCTYPE root [<!ENTITY % valid-name PUBLIC "valid-pubid-literal">]>' )
409
+ end
410
+ assert_equal ( <<-DETAIL . chomp , exception . to_s )
411
+ Malformed entity declaration
412
+ Line: 1
413
+ Position: 69
414
+ Last 80 unconsumed characters:
415
+ % valid-name PUBLIC \" valid-pubid-literal\" >]>
416
+ DETAIL
417
+ end
353
418
end
354
419
355
420
# https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-PubidLiteral
@@ -394,6 +459,19 @@ def test_mixed_quote
394
459
% valid-name PUBLIC 'invalid-pubid-literal\" \" valid-system-literal\" >]>
395
460
DETAIL
396
461
end
462
+
463
+ def test_no_literal
464
+ exception = assert_raise ( REXML ::ParseException ) do
465
+ REXML ::Document . new ( '<!DOCTYPE root [<!ENTITY % valid-name PUBLIC>]>' )
466
+ end
467
+ assert_equal ( <<-DETAIL . chomp , exception . to_s )
468
+ Malformed entity declaration
469
+ Line: 1
470
+ Position: 47
471
+ Last 80 unconsumed characters:
472
+ % valid-name PUBLIC>]>
473
+ DETAIL
474
+ end
397
475
end
398
476
end
399
477
0 commit comments