feedtools 0.2.26 → 0.2.27

Sign up to get free protection for your applications and to get access to all the features.
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
+ ]}