feedtools 0.2.26 → 0.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. data/CHANGELOG +232 -216
  2. data/db/migration.rb +2 -0
  3. data/db/schema.mysql.sql +2 -0
  4. data/db/schema.postgresql.sql +3 -1
  5. data/db/schema.sqlite.sql +3 -1
  6. data/lib/feed_tools.rb +37 -14
  7. data/lib/feed_tools/database_feed_cache.rb +13 -2
  8. data/lib/feed_tools/feed.rb +430 -104
  9. data/lib/feed_tools/feed_item.rb +533 -268
  10. data/lib/feed_tools/helpers/generic_helper.rb +1 -1
  11. data/lib/feed_tools/helpers/html_helper.rb +78 -116
  12. data/lib/feed_tools/helpers/retrieval_helper.rb +33 -3
  13. data/lib/feed_tools/helpers/uri_helper.rb +46 -54
  14. data/lib/feed_tools/monkey_patch.rb +27 -1
  15. data/lib/feed_tools/vendor/html5/History.txt +10 -0
  16. data/lib/feed_tools/vendor/html5/Manifest.txt +117 -0
  17. data/lib/feed_tools/vendor/html5/README +45 -0
  18. data/lib/feed_tools/vendor/html5/Rakefile.rb +33 -0
  19. data/lib/feed_tools/vendor/html5/bin/html5 +217 -0
  20. data/lib/feed_tools/vendor/html5/lib/core_ext/string.rb +17 -0
  21. data/lib/feed_tools/vendor/html5/lib/html5.rb +13 -0
  22. data/lib/feed_tools/vendor/html5/lib/html5/constants.rb +1046 -0
  23. data/lib/feed_tools/vendor/html5/lib/html5/filters/base.rb +10 -0
  24. data/lib/feed_tools/vendor/html5/lib/html5/filters/inject_meta_charset.rb +82 -0
  25. data/lib/feed_tools/vendor/html5/lib/html5/filters/iso639codes.rb +752 -0
  26. data/lib/feed_tools/vendor/html5/lib/html5/filters/optionaltags.rb +198 -0
  27. data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc2046.rb +30 -0
  28. data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc3987.rb +89 -0
  29. data/lib/feed_tools/vendor/html5/lib/html5/filters/sanitizer.rb +15 -0
  30. data/lib/feed_tools/vendor/html5/lib/html5/filters/validator.rb +830 -0
  31. data/lib/feed_tools/vendor/html5/lib/html5/filters/whitespace.rb +36 -0
  32. data/lib/feed_tools/vendor/html5/lib/html5/html5parser.rb +248 -0
  33. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_body_phase.rb +46 -0
  34. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_frameset_phase.rb +33 -0
  35. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_head_phase.rb +50 -0
  36. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/before_head_phase.rb +41 -0
  37. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_body_phase.rb +613 -0
  38. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_caption_phase.rb +69 -0
  39. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_cell_phase.rb +78 -0
  40. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_column_group_phase.rb +55 -0
  41. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_frameset_phase.rb +57 -0
  42. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_head_phase.rb +138 -0
  43. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_row_phase.rb +89 -0
  44. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_select_phase.rb +85 -0
  45. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_body_phase.rb +86 -0
  46. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_phase.rb +115 -0
  47. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb +133 -0
  48. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/phase.rb +154 -0
  49. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/root_element_phase.rb +41 -0
  50. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/trailing_end_phase.rb +35 -0
  51. data/lib/feed_tools/vendor/html5/lib/html5/inputstream.rb +648 -0
  52. data/lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb +158 -0
  53. data/lib/feed_tools/vendor/html5/lib/html5/sanitizer.rb +188 -0
  54. data/lib/feed_tools/vendor/html5/lib/html5/serializer.rb +2 -0
  55. data/lib/feed_tools/vendor/html5/lib/html5/serializer/htmlserializer.rb +179 -0
  56. data/lib/feed_tools/vendor/html5/lib/html5/serializer/xhtmlserializer.rb +20 -0
  57. data/lib/feed_tools/vendor/html5/lib/html5/sniffer.rb +45 -0
  58. data/lib/feed_tools/vendor/html5/lib/html5/tokenizer.rb +966 -0
  59. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders.rb +24 -0
  60. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/base.rb +334 -0
  61. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/hpricot.rb +231 -0
  62. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/rexml.rb +209 -0
  63. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/simpletree.rb +185 -0
  64. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers.rb +26 -0
  65. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb +162 -0
  66. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/hpricot.rb +48 -0
  67. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/rexml.rb +48 -0
  68. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/simpletree.rb +48 -0
  69. data/lib/feed_tools/vendor/html5/lib/html5/version.rb +3 -0
  70. data/lib/feed_tools/vendor/html5/testdata/encoding/chardet/test_big5.txt +51 -0
  71. data/lib/feed_tools/vendor/html5/testdata/encoding/test-yahoo-jp.dat +10 -0
  72. data/lib/feed_tools/vendor/html5/testdata/encoding/tests1.dat +394 -0
  73. data/lib/feed_tools/vendor/html5/testdata/encoding/tests2.dat +81 -0
  74. data/lib/feed_tools/vendor/html5/testdata/sanitizer/tests1.dat +416 -0
  75. data/lib/feed_tools/vendor/html5/testdata/serializer/core.test +104 -0
  76. data/lib/feed_tools/vendor/html5/testdata/serializer/injectmeta.test +65 -0
  77. data/lib/feed_tools/vendor/html5/testdata/serializer/optionaltags.test +900 -0
  78. data/lib/feed_tools/vendor/html5/testdata/serializer/options.test +60 -0
  79. data/lib/feed_tools/vendor/html5/testdata/serializer/whitespace.test +51 -0
  80. data/lib/feed_tools/vendor/html5/testdata/sites/google-results.htm +1 -0
  81. data/lib/feed_tools/vendor/html5/testdata/sites/python-ref-import.htm +1 -0
  82. data/lib/feed_tools/vendor/html5/testdata/sites/web-apps-old.htm +1 -0
  83. data/lib/feed_tools/vendor/html5/testdata/sites/web-apps.htm +34275 -0
  84. data/lib/feed_tools/vendor/html5/testdata/sniffer/htmlOrFeed.json +43 -0
  85. data/lib/feed_tools/vendor/html5/testdata/tokenizer/contentModelFlags.test +48 -0
  86. data/lib/feed_tools/vendor/html5/testdata/tokenizer/entities.test +2339 -0
  87. data/lib/feed_tools/vendor/html5/testdata/tokenizer/escapeFlag.test +21 -0
  88. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test1.test +172 -0
  89. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test2.test +129 -0
  90. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test3.test +367 -0
  91. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test4.test +198 -0
  92. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests1.dat +1950 -0
  93. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests2.dat +773 -0
  94. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests3.dat +270 -0
  95. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests4.dat +60 -0
  96. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests5.dat +175 -0
  97. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests6.dat +196 -0
  98. data/lib/feed_tools/vendor/html5/testdata/validator/attributes.test +1035 -0
  99. data/lib/feed_tools/vendor/html5/testdata/validator/base-href-attribute.test +787 -0
  100. data/lib/feed_tools/vendor/html5/testdata/validator/base-target-attribute.test +35 -0
  101. data/lib/feed_tools/vendor/html5/testdata/validator/blockquote-cite-attribute.test +7 -0
  102. data/lib/feed_tools/vendor/html5/testdata/validator/classattribute.test +152 -0
  103. data/lib/feed_tools/vendor/html5/testdata/validator/contenteditableattribute.test +59 -0
  104. data/lib/feed_tools/vendor/html5/testdata/validator/contextmenuattribute.test +115 -0
  105. data/lib/feed_tools/vendor/html5/testdata/validator/dirattribute.test +59 -0
  106. data/lib/feed_tools/vendor/html5/testdata/validator/draggableattribute.test +63 -0
  107. data/lib/feed_tools/vendor/html5/testdata/validator/html-xmlns-attribute.test +23 -0
  108. data/lib/feed_tools/vendor/html5/testdata/validator/idattribute.test +115 -0
  109. data/lib/feed_tools/vendor/html5/testdata/validator/inputattributes.test +2795 -0
  110. data/lib/feed_tools/vendor/html5/testdata/validator/irrelevantattribute.test +63 -0
  111. data/lib/feed_tools/vendor/html5/testdata/validator/langattribute.test +5579 -0
  112. data/lib/feed_tools/vendor/html5/testdata/validator/li-value-attribute.test +7 -0
  113. data/lib/feed_tools/vendor/html5/testdata/validator/link-href-attribute.test +7 -0
  114. data/lib/feed_tools/vendor/html5/testdata/validator/link-hreflang-attribute.test +7 -0
  115. data/lib/feed_tools/vendor/html5/testdata/validator/link-rel-attribute.test +271 -0
  116. data/lib/feed_tools/vendor/html5/testdata/validator/ol-start-attribute.test +7 -0
  117. data/lib/feed_tools/vendor/html5/testdata/validator/starttags.test +375 -0
  118. data/lib/feed_tools/vendor/html5/testdata/validator/style-scoped-attribute.test +7 -0
  119. data/lib/feed_tools/vendor/html5/testdata/validator/tabindexattribute.test +79 -0
  120. data/lib/feed_tools/vendor/html5/tests/preamble.rb +72 -0
  121. data/lib/feed_tools/vendor/html5/tests/test_encoding.rb +35 -0
  122. data/lib/feed_tools/vendor/html5/tests/test_lxp.rb +279 -0
  123. data/lib/feed_tools/vendor/html5/tests/test_parser.rb +68 -0
  124. data/lib/feed_tools/vendor/html5/tests/test_sanitizer.rb +142 -0
  125. data/lib/feed_tools/vendor/html5/tests/test_serializer.rb +68 -0
  126. data/lib/feed_tools/vendor/html5/tests/test_sniffer.rb +27 -0
  127. data/lib/feed_tools/vendor/html5/tests/test_stream.rb +62 -0
  128. data/lib/feed_tools/vendor/html5/tests/test_tokenizer.rb +94 -0
  129. data/lib/feed_tools/vendor/html5/tests/test_treewalkers.rb +135 -0
  130. data/lib/feed_tools/vendor/html5/tests/test_validator.rb +31 -0
  131. data/lib/feed_tools/vendor/html5/tests/tokenizer_test_parser.rb +63 -0
  132. data/lib/feed_tools/vendor/uri.rb +781 -0
  133. data/lib/feed_tools/version.rb +1 -1
  134. data/rakefile +27 -6
  135. data/test/unit/atom_test.rb +298 -210
  136. data/test/unit/helper_test.rb +7 -12
  137. data/test/unit/rdf_test.rb +51 -1
  138. data/test/unit/rss_test.rb +13 -3
  139. metadata +239 -116
  140. data/lib/feed_tools/vendor/htree.rb +0 -97
  141. data/lib/feed_tools/vendor/htree/container.rb +0 -10
  142. data/lib/feed_tools/vendor/htree/context.rb +0 -67
  143. data/lib/feed_tools/vendor/htree/display.rb +0 -27
  144. data/lib/feed_tools/vendor/htree/doc.rb +0 -149
  145. data/lib/feed_tools/vendor/htree/elem.rb +0 -262
  146. data/lib/feed_tools/vendor/htree/encoder.rb +0 -163
  147. data/lib/feed_tools/vendor/htree/equality.rb +0 -218
  148. data/lib/feed_tools/vendor/htree/extract_text.rb +0 -37
  149. data/lib/feed_tools/vendor/htree/fstr.rb +0 -33
  150. data/lib/feed_tools/vendor/htree/gencode.rb +0 -97
  151. data/lib/feed_tools/vendor/htree/htmlinfo.rb +0 -672
  152. data/lib/feed_tools/vendor/htree/inspect.rb +0 -108
  153. data/lib/feed_tools/vendor/htree/leaf.rb +0 -94
  154. data/lib/feed_tools/vendor/htree/loc.rb +0 -367
  155. data/lib/feed_tools/vendor/htree/modules.rb +0 -48
  156. data/lib/feed_tools/vendor/htree/name.rb +0 -124
  157. data/lib/feed_tools/vendor/htree/output.rb +0 -207
  158. data/lib/feed_tools/vendor/htree/parse.rb +0 -409
  159. data/lib/feed_tools/vendor/htree/raw_string.rb +0 -124
  160. data/lib/feed_tools/vendor/htree/regexp-util.rb +0 -15
  161. data/lib/feed_tools/vendor/htree/rexml.rb +0 -130
  162. data/lib/feed_tools/vendor/htree/scan.rb +0 -166
  163. data/lib/feed_tools/vendor/htree/tag.rb +0 -111
  164. data/lib/feed_tools/vendor/htree/template.rb +0 -909
  165. data/lib/feed_tools/vendor/htree/text.rb +0 -115
  166. data/lib/feed_tools/vendor/htree/traverse.rb +0 -465
@@ -0,0 +1,7 @@
1
+ {"tests": [
2
+
3
+ {"description": "invalid li value attribute value due to leading junk",
4
+ "input": "<li value=a1>",
5
+ "fail-unless": "invalid-integer-value"}
6
+
7
+ ]}
@@ -0,0 +1,7 @@
1
+ {"tests": [
2
+
3
+ {"description": "link href contains invalid URI due to space in domain",
4
+ "input": "<link href='http://www.example. com/'",
5
+ "fail-unless": "invalid-uri-char"}
6
+
7
+ ]}
@@ -0,0 +1,7 @@
1
+ {"tests": [
2
+
3
+ {"description": "invalid lang attribute 'foo'",
4
+ "input": "<link hreflang=foo>",
5
+ "fail-unless": "invalid-lang-code"}
6
+
7
+ ]}
@@ -0,0 +1,271 @@
1
+ {"tests": [
2
+
3
+ {"description": "invalid link rel value 'foo'",
4
+ "input": "<link rel=foo>",
5
+ "fail-unless": "invalid-rel"},
6
+
7
+ {"description": "valid link rel value 'alternate stylesheet'",
8
+ "input": "<link rel='alternate stylesheet'>",
9
+ "fail-if": "invalid-rel"},
10
+
11
+ {"description": "valid single link rel value with leading space",
12
+ "input": "<link rel=' stylesheet'>",
13
+ "fail-if": "invalid-rel"},
14
+
15
+ {"description": "valid single link rel value with trailing space",
16
+ "input": "<link rel='stylesheet '>",
17
+ "fail-if": "invalid-rel"},
18
+
19
+ {"description": "valid single link rel value with leading and trailing space",
20
+ "input": "<link rel=' stylesheet '>",
21
+ "fail-if": "invalid-rel"},
22
+
23
+ {"description": "valid single link rel value with leading tab",
24
+ "input": "<link rel='\tstylesheet'>",
25
+ "fail-if": "invalid-rel"},
26
+
27
+ {"description": "valid single link rel value with trailing tab",
28
+ "input": "<link rel='stylesheet\t'>",
29
+ "fail-if": "invalid-rel"},
30
+
31
+ {"description": "valid single link rel value with leading and trailing tab",
32
+ "input": "<link rel='\tstylesheet\t'>",
33
+ "fail-if": "invalid-rel"},
34
+
35
+ {"description": "valid single link rel value with leading LF",
36
+ "input": "<link rel='\nstylesheet'>",
37
+ "fail-if": "invalid-rel"},
38
+
39
+ {"description": "valid single link rel value with trailing LF",
40
+ "input": "<link rel='stylesheet\n'>",
41
+ "fail-if": "invalid-rel"},
42
+
43
+ {"description": "valid single link rel value with leading and trailing LF",
44
+ "input": "<link rel='\nstylesheet\n'>",
45
+ "fail-if": "invalid-rel"},
46
+
47
+ {"description": "valid single link rel value with leading LT",
48
+ "input": "<link rel='\u000Bstylesheet'>",
49
+ "fail-if": "invalid-rel"},
50
+
51
+ {"description": "valid single link rel value with trailing LT",
52
+ "input": "<link rel='stylesheet\u000B'>",
53
+ "fail-if": "invalid-rel"},
54
+
55
+ {"description": "valid single link rel value with leading and trailing LT",
56
+ "input": "<link rel='\u000Bstylesheet\u000B'>",
57
+ "fail-if": "invalid-rel"},
58
+
59
+ {"description": "valid single link rel value with leading FF",
60
+ "input": "<link rel='\u000Cstylesheet'>",
61
+ "fail-if": "invalid-rel"},
62
+
63
+ {"description": "valid single link rel value with trailing FF",
64
+ "input": "<link rel='stylesheet\u000C'>",
65
+ "fail-if": "invalid-rel"},
66
+
67
+ {"description": "valid single link rel value with leading and trailing FF",
68
+ "input": "<link rel='\u000Cstylesheet\u000C'>",
69
+ "fail-if": "invalid-rel"},
70
+
71
+ {"description": "valid single link rel value with leading CR",
72
+ "input": "<link rel='\rstylesheet'>",
73
+ "fail-if": "invalid-rel"},
74
+
75
+ {"description": "valid single link rel value with trailing CR",
76
+ "input": "<link rel='stylesheet\r'>",
77
+ "fail-if": "invalid-rel"},
78
+
79
+ {"description": "valid single link rel value with leading and trailing CR",
80
+ "input": "<link rel='\rstylesheet\r'>",
81
+ "fail-if": "invalid-rel"},
82
+
83
+ {"description": "valid double link rel value separated by space",
84
+ "input": "<link rel='stylesheet alternate'>",
85
+ "fail-if": "invalid-rel"},
86
+
87
+ {"description": "valid double link rel value separated by tab",
88
+ "input": "<link rel='stylesheet\talternate'>",
89
+ "fail-if": "invalid-rel"},
90
+
91
+ {"description": "valid double link rel value separated by LF",
92
+ "input": "<link rel='stylesheet\nalternate'>",
93
+ "fail-if": "invalid-rel"},
94
+
95
+ {"description": "valid double link rel value separated by LT",
96
+ "input": "<link rel='stylesheet\u000Balternate'>",
97
+ "fail-if": "invalid-rel"},
98
+
99
+ {"description": "valid double link rel value separated by FF",
100
+ "input": "<link rel='stylesheet\u000Calternate'>",
101
+ "fail-if": "invalid-rel"},
102
+
103
+ {"description": "valid double link rel value separated by CR",
104
+ "input": "<link rel='stylesheet\ralternate'>",
105
+ "fail-if": "invalid-rel"},
106
+
107
+ {"description": "invalid duplicated link rel value separated by space",
108
+ "input": "<link rel='stylesheet stylesheet'>",
109
+ "fail-unless": "duplicate-value-in-token-list"},
110
+
111
+ {"description": "invalid duplicated link rel value separated by tab",
112
+ "input": "<link rel='stylesheet\tstylesheet'>",
113
+ "fail-unless": "duplicate-value-in-token-list"},
114
+
115
+ {"description": "invalid duplicated link rel value separated by LF",
116
+ "input": "<link rel='stylesheet\nstylesheet'>",
117
+ "fail-unless": "duplicate-value-in-token-list"},
118
+
119
+ {"description": "invalid duplicated link rel value separated by LT",
120
+ "input": "<link rel='stylesheet\u000Bstylesheet'>",
121
+ "fail-unless": "duplicate-value-in-token-list"},
122
+
123
+ {"description": "invalid duplicated link rel value separated by FF",
124
+ "input": "<link rel='stylesheet\u000Cstylesheet'>",
125
+ "fail-unless": "duplicate-value-in-token-list"},
126
+
127
+ {"description": "invalid duplicated link rel value separated by CR",
128
+ "input": "<link rel='stylesheet\rstylesheet'>",
129
+ "fail-unless": "duplicate-value-in-token-list"},
130
+
131
+ {"description": "invalid duplicated link rel value separated by space",
132
+ "input": "<link rel='stylesheet stylesheet'>",
133
+ "fail-unless": "duplicate-value-in-token-list"},
134
+
135
+ {"description": "invalid duplicated link rel value separated by tab",
136
+ "input": "<link rel='stylesheet\tstylesheet'>",
137
+ "fail-unless": "duplicate-value-in-token-list"},
138
+
139
+ {"description": "invalid duplicated link rel value separated by LF",
140
+ "input": "<link rel='stylesheet\nstylesheet'>",
141
+ "fail-unless": "duplicate-value-in-token-list"},
142
+
143
+ {"description": "invalid duplicated link rel value separated by LT",
144
+ "input": "<link rel='stylesheet\u000Bstylesheet'>",
145
+ "fail-unless": "duplicate-value-in-token-list"},
146
+
147
+ {"description": "invalid duplicated link rel value separated by FF",
148
+ "input": "<link rel='stylesheet\u000Cstylesheet'>",
149
+ "fail-unless": "duplicate-value-in-token-list"},
150
+
151
+ {"description": "invalid duplicated link rel value separated by CR",
152
+ "input": "<link rel='stylesheet\rstylesheet'>",
153
+ "fail-unless": "duplicate-value-in-token-list"},
154
+
155
+ {"description": "valid link rel value 'feed'",
156
+ "input": "<link rel=feed>",
157
+ "fail-if": "invalid-rel"},
158
+
159
+ {"description": "valid link rel value 'help'",
160
+ "input": "<link rel=help>",
161
+ "fail-if": "invalid-rel"},
162
+
163
+ {"description": "valid link rel value 'tag'",
164
+ "input": "<link rel=tag>",
165
+ "fail-if": "invalid-rel"},
166
+
167
+ {"description": "valid link rel value 'sidebar'",
168
+ "input": "<link rel=sidebar>",
169
+ "fail-if": "invalid-rel"},
170
+
171
+ {"description": "valid link rel value 'archive'",
172
+ "input": "<link rel=archive>",
173
+ "fail-if": "invalid-rel"},
174
+
175
+ {"description": "valid link rel value 'contents'",
176
+ "input": "<link rel=contents>",
177
+ "fail-if": "invalid-rel"},
178
+
179
+ {"description": "valid link rel value 'previous'",
180
+ "input": "<link rel=previous>",
181
+ "fail-if": "invalid-rel"},
182
+
183
+ {"description": "valid link rel value 'index'",
184
+ "input": "<link rel=index>",
185
+ "fail-if": "invalid-rel"},
186
+
187
+ {"description": "valid link rel value 'end'",
188
+ "input": "<link rel=end>",
189
+ "fail-if": "invalid-rel"},
190
+
191
+ {"description": "valid link rel value 'copyright'",
192
+ "input": "<link rel=copyright>",
193
+ "fail-if": "invalid-rel"},
194
+
195
+ {"description": "valid link rel value 'author'",
196
+ "input": "<link rel=author>",
197
+ "fail-if": "invalid-rel"},
198
+
199
+ {"description": "valid link rel value 'top'",
200
+ "input": "<link rel=top>",
201
+ "fail-if": "invalid-rel"},
202
+
203
+ {"description": "valid link rel value 'alternate'",
204
+ "input": "<link rel=alternate>",
205
+ "fail-if": "invalid-rel"},
206
+
207
+ {"description": "valid link rel value 'next'",
208
+ "input": "<link rel=next>",
209
+ "fail-if": "invalid-rel"},
210
+
211
+ {"description": "valid link rel value 'start'",
212
+ "input": "<link rel=start>",
213
+ "fail-if": "invalid-rel"},
214
+
215
+ {"description": "valid link rel value 'stylesheet'",
216
+ "input": "<link rel=stylesheet>",
217
+ "fail-if": "invalid-rel"},
218
+
219
+ {"description": "valid link rel value 'archives'",
220
+ "input": "<link rel=archives>",
221
+ "fail-if": "invalid-rel"},
222
+
223
+ {"description": "valid link rel value 'toc'",
224
+ "input": "<link rel=toc>",
225
+ "fail-if": "invalid-rel"},
226
+
227
+ {"description": "valid link rel value 'prev'",
228
+ "input": "<link rel=prev>",
229
+ "fail-if": "invalid-rel"},
230
+
231
+ {"description": "valid link rel value 'begin'",
232
+ "input": "<link rel=begin>",
233
+ "fail-if": "invalid-rel"},
234
+
235
+ {"description": "valid link rel value 'icon'",
236
+ "input": "<link rel=icon>",
237
+ "fail-if": "invalid-rel"},
238
+
239
+ {"description": "valid link rel value 'search'",
240
+ "input": "<link rel=search>",
241
+ "fail-if": "invalid-rel"},
242
+
243
+ {"description": "valid link rel value 'last'",
244
+ "input": "<link rel=last>",
245
+ "fail-if": "invalid-rel"},
246
+
247
+ {"description": "valid link rel value 'license'",
248
+ "input": "<link rel=license>",
249
+ "fail-if": "invalid-rel"},
250
+
251
+ {"description": "valid link rel value 'pingback'",
252
+ "input": "<link rel=pingback>",
253
+ "fail-if": "invalid-rel"},
254
+
255
+ {"description": "valid link rel value 'up'",
256
+ "input": "<link rel=up>",
257
+ "fail-if": "invalid-rel"},
258
+
259
+ {"description": "valid link rel value 'contact'",
260
+ "input": "<link rel=contact>",
261
+ "fail-if": "invalid-rel"},
262
+
263
+ {"description": "valid link rel value 'prefetch'",
264
+ "input": "<link rel=prefetch>",
265
+ "fail-if": "invalid-rel"},
266
+
267
+ {"description": "valid link rel value 'first'",
268
+ "input": "<link rel=first>",
269
+ "fail-if": "invalid-rel"}
270
+
271
+ ]}
@@ -0,0 +1,7 @@
1
+ {"tests": [
2
+
3
+ {"description": "invalid ol start attribute value due to leading junk",
4
+ "input": "<ol start=a1>",
5
+ "fail-unless": "invalid-integer-value"}
6
+
7
+ ]}
@@ -0,0 +1,375 @@
1
+ {"tests": [
2
+
3
+ {"description": "unknown start tag <foo>",
4
+ "input": "<foo>",
5
+ "fail-unless": "unknown-start-tag"},
6
+
7
+ {"description": "allowed start tag <code>",
8
+ "input": "<code>",
9
+ "fail-if": "unknown-start-tag"},
10
+
11
+ {"description": "allowed start tag <kbd>",
12
+ "input": "<kbd>",
13
+ "fail-if": "unknown-start-tag"},
14
+
15
+ {"description": "allowed start tag <aside>",
16
+ "input": "<aside>",
17
+ "fail-if": "unknown-start-tag"},
18
+
19
+ {"description": "allowed start tag <datagrid>",
20
+ "input": "<datagrid>",
21
+ "fail-if": "unknown-start-tag"},
22
+
23
+ {"description": "allowed start tag <font>",
24
+ "input": "<font>",
25
+ "fail-if": "unknown-start-tag"},
26
+
27
+ {"description": "allowed start tag <noscript>",
28
+ "input": "<noscript>",
29
+ "fail-if": "unknown-start-tag"},
30
+
31
+ {"description": "allowed start tag <style>",
32
+ "input": "<style>",
33
+ "fail-if": "unknown-start-tag"},
34
+
35
+ {"description": "allowed start tag <img>",
36
+ "input": "<img>",
37
+ "fail-if": "unknown-start-tag"},
38
+
39
+ {"description": "allowed start tag <title>",
40
+ "input": "<title>",
41
+ "fail-if": "unknown-start-tag"},
42
+
43
+ {"description": "allowed start tag <menu>",
44
+ "input": "<menu>",
45
+ "fail-if": "unknown-start-tag"},
46
+
47
+ {"description": "allowed start tag <tr>",
48
+ "input": "<tr>",
49
+ "fail-if": "unknown-start-tag"},
50
+
51
+ {"description": "allowed start tag <param>",
52
+ "input": "<param>",
53
+ "fail-if": "unknown-start-tag"},
54
+
55
+ {"description": "allowed start tag <li>",
56
+ "input": "<li>",
57
+ "fail-if": "unknown-start-tag"},
58
+
59
+ {"description": "allowed start tag <source>",
60
+ "input": "<source>",
61
+ "fail-if": "unknown-start-tag"},
62
+
63
+ {"description": "allowed start tag <tfoot>",
64
+ "input": "<tfoot>",
65
+ "fail-if": "unknown-start-tag"},
66
+
67
+ {"description": "allowed start tag <th>",
68
+ "input": "<th>",
69
+ "fail-if": "unknown-start-tag"},
70
+
71
+ {"description": "allowed start tag <td>",
72
+ "input": "<td>",
73
+ "fail-if": "unknown-start-tag"},
74
+
75
+ {"description": "allowed start tag <dl>",
76
+ "input": "<dl>",
77
+ "fail-if": "unknown-start-tag"},
78
+
79
+ {"description": "allowed start tag <blockquote>",
80
+ "input": "<blockquote>",
81
+ "fail-if": "unknown-start-tag"},
82
+
83
+ {"description": "allowed start tag <dd>",
84
+ "input": "<dd>",
85
+ "fail-if": "unknown-start-tag"},
86
+
87
+ {"description": "allowed start tag <abbr>",
88
+ "input": "<abbr>",
89
+ "fail-if": "unknown-start-tag"},
90
+
91
+ {"description": "allowed start tag <dt>",
92
+ "input": "<dt>",
93
+ "fail-if": "unknown-start-tag"},
94
+
95
+ {"description": "allowed start tag <noembed>",
96
+ "input": "<noembed>",
97
+ "fail-if": "unknown-start-tag"},
98
+
99
+ {"description": "allowed start tag <p>",
100
+ "input": "<p>",
101
+ "fail-if": "unknown-start-tag"},
102
+
103
+ {"description": "allowed start tag <small>",
104
+ "input": "<small>",
105
+ "fail-if": "unknown-start-tag"},
106
+
107
+ {"description": "allowed start tag <meter>",
108
+ "input": "<meter>",
109
+ "fail-if": "unknown-start-tag"},
110
+
111
+ {"description": "allowed start tag <em>",
112
+ "input": "<em>",
113
+ "fail-if": "unknown-start-tag"},
114
+
115
+ {"description": "allowed start tag <meta>",
116
+ "input": "<meta>",
117
+ "fail-if": "unknown-start-tag"},
118
+
119
+ {"description": "allowed start tag <video>",
120
+ "input": "<video>",
121
+ "fail-if": "unknown-start-tag"},
122
+
123
+ {"description": "allowed start tag <div>",
124
+ "input": "<div>",
125
+ "fail-if": "unknown-start-tag"},
126
+
127
+ {"description": "allowed start tag <canvas>",
128
+ "input": "<canvas>",
129
+ "fail-if": "unknown-start-tag"},
130
+
131
+ {"description": "allowed start tag <sub>",
132
+ "input": "<sub>",
133
+ "fail-if": "unknown-start-tag"},
134
+
135
+ {"description": "allowed start tag <section>",
136
+ "input": "<section>",
137
+ "fail-if": "unknown-start-tag"},
138
+
139
+ {"description": "allowed start tag <sup>",
140
+ "input": "<sup>",
141
+ "fail-if": "unknown-start-tag"},
142
+
143
+ {"description": "allowed start tag <progress>",
144
+ "input": "<progress>",
145
+ "fail-if": "unknown-start-tag"},
146
+
147
+ {"description": "allowed start tag <body>",
148
+ "input": "<body>",
149
+ "fail-if": "unknown-start-tag"},
150
+
151
+ {"description": "allowed start tag <base>",
152
+ "input": "<base>",
153
+ "fail-if": "unknown-start-tag"},
154
+
155
+ {"description": "allowed start tag <br>",
156
+ "input": "<br>",
157
+ "fail-if": "unknown-start-tag"},
158
+
159
+ {"description": "allowed start tag <address>",
160
+ "input": "<address>",
161
+ "fail-if": "unknown-start-tag"},
162
+
163
+ {"description": "allowed start tag <article>",
164
+ "input": "<article>",
165
+ "fail-if": "unknown-start-tag"},
166
+
167
+ {"description": "allowed start tag <strong>",
168
+ "input": "<strong>",
169
+ "fail-if": "unknown-start-tag"},
170
+
171
+ {"description": "allowed start tag <legend>",
172
+ "input": "<legend>",
173
+ "fail-if": "unknown-start-tag"},
174
+
175
+ {"description": "allowed start tag <event-source>",
176
+ "input": "<event-source>",
177
+ "fail-if": "unknown-start-tag"},
178
+
179
+ {"description": "allowed start tag <ol>",
180
+ "input": "<ol>",
181
+ "fail-if": "unknown-start-tag"},
182
+
183
+ {"description": "allowed start tag <script>",
184
+ "input": "<script>",
185
+ "fail-if": "unknown-start-tag"},
186
+
187
+ {"description": "allowed start tag <caption>",
188
+ "input": "<caption>",
189
+ "fail-if": "unknown-start-tag"},
190
+
191
+ {"description": "allowed start tag <dialog>",
192
+ "input": "<dialog>",
193
+ "fail-if": "unknown-start-tag"},
194
+
195
+ {"description": "allowed start tag <col>",
196
+ "input": "<col>",
197
+ "fail-if": "unknown-start-tag"},
198
+
199
+ {"description": "allowed start tag <h2>",
200
+ "input": "<h2>",
201
+ "fail-if": "unknown-start-tag"},
202
+
203
+ {"description": "allowed start tag <h3>",
204
+ "input": "<h3>",
205
+ "fail-if": "unknown-start-tag"},
206
+
207
+ {"description": "allowed start tag <h1>",
208
+ "input": "<h1>",
209
+ "fail-if": "unknown-start-tag"},
210
+
211
+ {"description": "allowed start tag <h6>",
212
+ "input": "<h6>",
213
+ "fail-if": "unknown-start-tag"},
214
+
215
+ {"description": "allowed start tag <h4>",
216
+ "input": "<h4>",
217
+ "fail-if": "unknown-start-tag"},
218
+
219
+ {"description": "allowed start tag <h5>",
220
+ "input": "<h5>",
221
+ "fail-if": "unknown-start-tag"},
222
+
223
+ {"description": "allowed start tag <header>",
224
+ "input": "<header>",
225
+ "fail-if": "unknown-start-tag"},
226
+
227
+ {"description": "allowed start tag <table>",
228
+ "input": "<table>",
229
+ "fail-if": "unknown-start-tag"},
230
+
231
+ {"description": "allowed start tag <span>",
232
+ "input": "<span>",
233
+ "fail-if": "unknown-start-tag"},
234
+
235
+ {"description": "allowed start tag <area>",
236
+ "input": "<area>",
237
+ "fail-if": "unknown-start-tag"},
238
+
239
+ {"description": "allowed start tag <dfn>",
240
+ "input": "<dfn>",
241
+ "fail-if": "unknown-start-tag"},
242
+
243
+ {"description": "allowed start tag <var>",
244
+ "input": "<var>",
245
+ "fail-if": "unknown-start-tag"},
246
+
247
+ {"description": "allowed start tag <cite>",
248
+ "input": "<cite>",
249
+ "fail-if": "unknown-start-tag"},
250
+
251
+ {"description": "allowed start tag <thead>",
252
+ "input": "<thead>",
253
+ "fail-if": "unknown-start-tag"},
254
+
255
+ {"description": "allowed start tag <head>",
256
+ "input": "<head>",
257
+ "fail-if": "unknown-start-tag"},
258
+
259
+ {"description": "allowed start tag <hr>",
260
+ "input": "<hr>",
261
+ "fail-if": "unknown-start-tag"},
262
+
263
+ {"description": "allowed start tag <link>",
264
+ "input": "<link>",
265
+ "fail-if": "unknown-start-tag"},
266
+
267
+ {"description": "allowed start tag <datatemplate>",
268
+ "input": "<datatemplate>",
269
+ "fail-if": "unknown-start-tag"},
270
+
271
+ {"description": "allowed start tag <b>",
272
+ "input": "<b>",
273
+ "fail-if": "unknown-start-tag"},
274
+
275
+ {"description": "allowed start tag <colgroup>",
276
+ "input": "<colgroup>",
277
+ "fail-if": "unknown-start-tag"},
278
+
279
+ {"description": "allowed start tag <ul>",
280
+ "input": "<ul>",
281
+ "fail-if": "unknown-start-tag"},
282
+
283
+ {"description": "allowed start tag <del>",
284
+ "input": "<del>",
285
+ "fail-if": "unknown-start-tag"},
286
+
287
+ {"description": "allowed start tag <iframe>",
288
+ "input": "<iframe>",
289
+ "fail-if": "unknown-start-tag"},
290
+
291
+ {"description": "allowed start tag <pre>",
292
+ "input": "<pre>",
293
+ "fail-if": "unknown-start-tag"},
294
+
295
+ {"description": "allowed start tag <figure>",
296
+ "input": "<figure>",
297
+ "fail-if": "unknown-start-tag"},
298
+
299
+ {"description": "allowed start tag <ins>",
300
+ "input": "<ins>",
301
+ "fail-if": "unknown-start-tag"},
302
+
303
+ {"description": "allowed start tag <tbody>",
304
+ "input": "<tbody>",
305
+ "fail-if": "unknown-start-tag"},
306
+
307
+ {"description": "allowed start tag <html>",
308
+ "input": "<html>",
309
+ "fail-if": "unknown-start-tag"},
310
+
311
+ {"description": "allowed start tag <nav>",
312
+ "input": "<nav>",
313
+ "fail-if": "unknown-start-tag"},
314
+
315
+ {"description": "allowed start tag <details>",
316
+ "input": "<details>",
317
+ "fail-if": "unknown-start-tag"},
318
+
319
+ {"description": "allowed start tag <samp>",
320
+ "input": "<samp>",
321
+ "fail-if": "unknown-start-tag"},
322
+
323
+ {"description": "allowed start tag <map>",
324
+ "input": "<map>",
325
+ "fail-if": "unknown-start-tag"},
326
+
327
+ {"description": "allowed start tag <nest>",
328
+ "input": "<nest>",
329
+ "fail-if": "unknown-start-tag"},
330
+
331
+ {"description": "allowed start tag <object>",
332
+ "input": "<object>",
333
+ "fail-if": "unknown-start-tag"},
334
+
335
+ {"description": "allowed start tag <a>",
336
+ "input": "<a>",
337
+ "fail-if": "unknown-start-tag"},
338
+
339
+ {"description": "allowed start tag <footer>",
340
+ "input": "<footer>",
341
+ "fail-if": "unknown-start-tag"},
342
+
343
+ {"description": "allowed start tag <i>",
344
+ "input": "<i>",
345
+ "fail-if": "unknown-start-tag"},
346
+
347
+ {"description": "allowed start tag <m>",
348
+ "input": "<m>",
349
+ "fail-if": "unknown-start-tag"},
350
+
351
+ {"description": "allowed start tag <rule>",
352
+ "input": "<rule>",
353
+ "fail-if": "unknown-start-tag"},
354
+
355
+ {"description": "allowed start tag <q>",
356
+ "input": "<q>",
357
+ "fail-if": "unknown-start-tag"},
358
+
359
+ {"description": "allowed start tag <command>",
360
+ "input": "<command>",
361
+ "fail-if": "unknown-start-tag"},
362
+
363
+ {"description": "allowed start tag <time>",
364
+ "input": "<time>",
365
+ "fail-if": "unknown-start-tag"},
366
+
367
+ {"description": "allowed start tag <audio>",
368
+ "input": "<audio>",
369
+ "fail-if": "unknown-start-tag"},
370
+
371
+ {"description": "allowed start tag <bdo>",
372
+ "input": "<bdo>",
373
+ "fail-if": "unknown-start-tag"}
374
+
375
+ ]}