feedtools 0.2.26 → 0.2.27
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +232 -216
- data/db/migration.rb +2 -0
- data/db/schema.mysql.sql +2 -0
- data/db/schema.postgresql.sql +3 -1
- data/db/schema.sqlite.sql +3 -1
- data/lib/feed_tools.rb +37 -14
- data/lib/feed_tools/database_feed_cache.rb +13 -2
- data/lib/feed_tools/feed.rb +430 -104
- data/lib/feed_tools/feed_item.rb +533 -268
- data/lib/feed_tools/helpers/generic_helper.rb +1 -1
- data/lib/feed_tools/helpers/html_helper.rb +78 -116
- data/lib/feed_tools/helpers/retrieval_helper.rb +33 -3
- data/lib/feed_tools/helpers/uri_helper.rb +46 -54
- data/lib/feed_tools/monkey_patch.rb +27 -1
- data/lib/feed_tools/vendor/html5/History.txt +10 -0
- data/lib/feed_tools/vendor/html5/Manifest.txt +117 -0
- data/lib/feed_tools/vendor/html5/README +45 -0
- data/lib/feed_tools/vendor/html5/Rakefile.rb +33 -0
- data/lib/feed_tools/vendor/html5/bin/html5 +217 -0
- data/lib/feed_tools/vendor/html5/lib/core_ext/string.rb +17 -0
- data/lib/feed_tools/vendor/html5/lib/html5.rb +13 -0
- data/lib/feed_tools/vendor/html5/lib/html5/constants.rb +1046 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/base.rb +10 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/inject_meta_charset.rb +82 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/iso639codes.rb +752 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/optionaltags.rb +198 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc2046.rb +30 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc3987.rb +89 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/sanitizer.rb +15 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/validator.rb +830 -0
- data/lib/feed_tools/vendor/html5/lib/html5/filters/whitespace.rb +36 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser.rb +248 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_body_phase.rb +46 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_frameset_phase.rb +33 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_head_phase.rb +50 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/before_head_phase.rb +41 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_body_phase.rb +613 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_caption_phase.rb +69 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_cell_phase.rb +78 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_column_group_phase.rb +55 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_frameset_phase.rb +57 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_head_phase.rb +138 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_row_phase.rb +89 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_select_phase.rb +85 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_body_phase.rb +86 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_phase.rb +115 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb +133 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/phase.rb +154 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/root_element_phase.rb +41 -0
- data/lib/feed_tools/vendor/html5/lib/html5/html5parser/trailing_end_phase.rb +35 -0
- data/lib/feed_tools/vendor/html5/lib/html5/inputstream.rb +648 -0
- data/lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb +158 -0
- data/lib/feed_tools/vendor/html5/lib/html5/sanitizer.rb +188 -0
- data/lib/feed_tools/vendor/html5/lib/html5/serializer.rb +2 -0
- data/lib/feed_tools/vendor/html5/lib/html5/serializer/htmlserializer.rb +179 -0
- data/lib/feed_tools/vendor/html5/lib/html5/serializer/xhtmlserializer.rb +20 -0
- data/lib/feed_tools/vendor/html5/lib/html5/sniffer.rb +45 -0
- data/lib/feed_tools/vendor/html5/lib/html5/tokenizer.rb +966 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treebuilders.rb +24 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/base.rb +334 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/hpricot.rb +231 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/rexml.rb +209 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/simpletree.rb +185 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treewalkers.rb +26 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb +162 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/hpricot.rb +48 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/rexml.rb +48 -0
- data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/simpletree.rb +48 -0
- data/lib/feed_tools/vendor/html5/lib/html5/version.rb +3 -0
- data/lib/feed_tools/vendor/html5/testdata/encoding/chardet/test_big5.txt +51 -0
- data/lib/feed_tools/vendor/html5/testdata/encoding/test-yahoo-jp.dat +10 -0
- data/lib/feed_tools/vendor/html5/testdata/encoding/tests1.dat +394 -0
- data/lib/feed_tools/vendor/html5/testdata/encoding/tests2.dat +81 -0
- data/lib/feed_tools/vendor/html5/testdata/sanitizer/tests1.dat +416 -0
- data/lib/feed_tools/vendor/html5/testdata/serializer/core.test +104 -0
- data/lib/feed_tools/vendor/html5/testdata/serializer/injectmeta.test +65 -0
- data/lib/feed_tools/vendor/html5/testdata/serializer/optionaltags.test +900 -0
- data/lib/feed_tools/vendor/html5/testdata/serializer/options.test +60 -0
- data/lib/feed_tools/vendor/html5/testdata/serializer/whitespace.test +51 -0
- data/lib/feed_tools/vendor/html5/testdata/sites/google-results.htm +1 -0
- data/lib/feed_tools/vendor/html5/testdata/sites/python-ref-import.htm +1 -0
- data/lib/feed_tools/vendor/html5/testdata/sites/web-apps-old.htm +1 -0
- data/lib/feed_tools/vendor/html5/testdata/sites/web-apps.htm +34275 -0
- data/lib/feed_tools/vendor/html5/testdata/sniffer/htmlOrFeed.json +43 -0
- data/lib/feed_tools/vendor/html5/testdata/tokenizer/contentModelFlags.test +48 -0
- data/lib/feed_tools/vendor/html5/testdata/tokenizer/entities.test +2339 -0
- data/lib/feed_tools/vendor/html5/testdata/tokenizer/escapeFlag.test +21 -0
- data/lib/feed_tools/vendor/html5/testdata/tokenizer/test1.test +172 -0
- data/lib/feed_tools/vendor/html5/testdata/tokenizer/test2.test +129 -0
- data/lib/feed_tools/vendor/html5/testdata/tokenizer/test3.test +367 -0
- data/lib/feed_tools/vendor/html5/testdata/tokenizer/test4.test +198 -0
- data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests1.dat +1950 -0
- data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests2.dat +773 -0
- data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests3.dat +270 -0
- data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests4.dat +60 -0
- data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests5.dat +175 -0
- data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests6.dat +196 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/attributes.test +1035 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/base-href-attribute.test +787 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/base-target-attribute.test +35 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/blockquote-cite-attribute.test +7 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/classattribute.test +152 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/contenteditableattribute.test +59 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/contextmenuattribute.test +115 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/dirattribute.test +59 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/draggableattribute.test +63 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/html-xmlns-attribute.test +23 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/idattribute.test +115 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/inputattributes.test +2795 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/irrelevantattribute.test +63 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/langattribute.test +5579 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/li-value-attribute.test +7 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/link-href-attribute.test +7 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/link-hreflang-attribute.test +7 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/link-rel-attribute.test +271 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/ol-start-attribute.test +7 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/starttags.test +375 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/style-scoped-attribute.test +7 -0
- data/lib/feed_tools/vendor/html5/testdata/validator/tabindexattribute.test +79 -0
- data/lib/feed_tools/vendor/html5/tests/preamble.rb +72 -0
- data/lib/feed_tools/vendor/html5/tests/test_encoding.rb +35 -0
- data/lib/feed_tools/vendor/html5/tests/test_lxp.rb +279 -0
- data/lib/feed_tools/vendor/html5/tests/test_parser.rb +68 -0
- data/lib/feed_tools/vendor/html5/tests/test_sanitizer.rb +142 -0
- data/lib/feed_tools/vendor/html5/tests/test_serializer.rb +68 -0
- data/lib/feed_tools/vendor/html5/tests/test_sniffer.rb +27 -0
- data/lib/feed_tools/vendor/html5/tests/test_stream.rb +62 -0
- data/lib/feed_tools/vendor/html5/tests/test_tokenizer.rb +94 -0
- data/lib/feed_tools/vendor/html5/tests/test_treewalkers.rb +135 -0
- data/lib/feed_tools/vendor/html5/tests/test_validator.rb +31 -0
- data/lib/feed_tools/vendor/html5/tests/tokenizer_test_parser.rb +63 -0
- data/lib/feed_tools/vendor/uri.rb +781 -0
- data/lib/feed_tools/version.rb +1 -1
- data/rakefile +27 -6
- data/test/unit/atom_test.rb +298 -210
- data/test/unit/helper_test.rb +7 -12
- data/test/unit/rdf_test.rb +51 -1
- data/test/unit/rss_test.rb +13 -3
- metadata +239 -116
- data/lib/feed_tools/vendor/htree.rb +0 -97
- data/lib/feed_tools/vendor/htree/container.rb +0 -10
- data/lib/feed_tools/vendor/htree/context.rb +0 -67
- data/lib/feed_tools/vendor/htree/display.rb +0 -27
- data/lib/feed_tools/vendor/htree/doc.rb +0 -149
- data/lib/feed_tools/vendor/htree/elem.rb +0 -262
- data/lib/feed_tools/vendor/htree/encoder.rb +0 -163
- data/lib/feed_tools/vendor/htree/equality.rb +0 -218
- data/lib/feed_tools/vendor/htree/extract_text.rb +0 -37
- data/lib/feed_tools/vendor/htree/fstr.rb +0 -33
- data/lib/feed_tools/vendor/htree/gencode.rb +0 -97
- data/lib/feed_tools/vendor/htree/htmlinfo.rb +0 -672
- data/lib/feed_tools/vendor/htree/inspect.rb +0 -108
- data/lib/feed_tools/vendor/htree/leaf.rb +0 -94
- data/lib/feed_tools/vendor/htree/loc.rb +0 -367
- data/lib/feed_tools/vendor/htree/modules.rb +0 -48
- data/lib/feed_tools/vendor/htree/name.rb +0 -124
- data/lib/feed_tools/vendor/htree/output.rb +0 -207
- data/lib/feed_tools/vendor/htree/parse.rb +0 -409
- data/lib/feed_tools/vendor/htree/raw_string.rb +0 -124
- data/lib/feed_tools/vendor/htree/regexp-util.rb +0 -15
- data/lib/feed_tools/vendor/htree/rexml.rb +0 -130
- data/lib/feed_tools/vendor/htree/scan.rb +0 -166
- data/lib/feed_tools/vendor/htree/tag.rb +0 -111
- data/lib/feed_tools/vendor/htree/template.rb +0 -909
- data/lib/feed_tools/vendor/htree/text.rb +0 -115
- data/lib/feed_tools/vendor/htree/traverse.rb +0 -465
@@ -0,0 +1,35 @@
|
|
1
|
+
{"tests": [
|
2
|
+
|
3
|
+
{"description": "valid base target attribute '_self'",
|
4
|
+
"input": "<base target=_self>",
|
5
|
+
"fail-if": "invalid-browsing-context"},
|
6
|
+
|
7
|
+
{"description": "valid base target attribute '_parent'",
|
8
|
+
"input": "<base target=_parent>",
|
9
|
+
"fail-if": "invalid-browsing-context"},
|
10
|
+
|
11
|
+
{"description": "valid base target attribute '_top'",
|
12
|
+
"input": "<base target=_top>",
|
13
|
+
"fail-if": "invalid-browsing-context"},
|
14
|
+
|
15
|
+
{"description": "valid base target attribute '_blank'",
|
16
|
+
"input": "<base target=_blank>",
|
17
|
+
"fail-if": "invalid-browsing-context"},
|
18
|
+
|
19
|
+
{"description": "valid base target attribute 'foo'",
|
20
|
+
"input": "<base target=foo>",
|
21
|
+
"fail-if": "invalid-browsing-context"},
|
22
|
+
|
23
|
+
{"description": "base target attribute may be blank",
|
24
|
+
"input": "<base target>",
|
25
|
+
"fail-if": "invalid-browsing-context"},
|
26
|
+
|
27
|
+
{"description": "invalid base target attribute '_'",
|
28
|
+
"input": "<base target=_>",
|
29
|
+
"fail-unless": "invalid-browsing-context"},
|
30
|
+
|
31
|
+
{"description": "invalid base target attribute '_foo'",
|
32
|
+
"input": "<base target=_foo>",
|
33
|
+
"fail-unless": "invalid-browsing-context"}
|
34
|
+
|
35
|
+
]}
|
@@ -0,0 +1,152 @@
|
|
1
|
+
{"tests": [
|
2
|
+
|
3
|
+
{"description": "valid single class attribute value",
|
4
|
+
"input": "<span class=a>",
|
5
|
+
"fail-if": "invalid-attribute-value"},
|
6
|
+
|
7
|
+
{"description": "valid single class attribute value with leading space",
|
8
|
+
"input": "<span class=' a'>",
|
9
|
+
"fail-if": "invalid-attribute-value"},
|
10
|
+
|
11
|
+
{"description": "valid single class attribute value with trailing space",
|
12
|
+
"input": "<span class='a '>",
|
13
|
+
"fail-if": "invalid-attribute-value"},
|
14
|
+
|
15
|
+
{"description": "valid single class attribute value with leading and trailing space",
|
16
|
+
"input": "<span class=' a '>",
|
17
|
+
"fail-if": "invalid-attribute-value"},
|
18
|
+
|
19
|
+
{"description": "valid single class attribute value with leading tab",
|
20
|
+
"input": "<span class='\ta'>",
|
21
|
+
"fail-if": "invalid-attribute-value"},
|
22
|
+
|
23
|
+
{"description": "valid single class attribute value with trailing tab",
|
24
|
+
"input": "<span class='a\t'>",
|
25
|
+
"fail-if": "invalid-attribute-value"},
|
26
|
+
|
27
|
+
{"description": "valid single class attribute value with leading and trailing tab",
|
28
|
+
"input": "<span class='\ta\t'>",
|
29
|
+
"fail-if": "invalid-attribute-value"},
|
30
|
+
|
31
|
+
{"description": "valid single class attribute value with leading LF",
|
32
|
+
"input": "<span class='\na'>",
|
33
|
+
"fail-if": "invalid-attribute-value"},
|
34
|
+
|
35
|
+
{"description": "valid single class attribute value with trailing LF",
|
36
|
+
"input": "<span class='a\n'>",
|
37
|
+
"fail-if": "invalid-attribute-value"},
|
38
|
+
|
39
|
+
{"description": "valid single class attribute value with leading and trailing LF",
|
40
|
+
"input": "<span class='\na\n'>",
|
41
|
+
"fail-if": "invalid-attribute-value"},
|
42
|
+
|
43
|
+
{"description": "valid single class attribute value with leading LT",
|
44
|
+
"input": "<span class='\u000Ba'>",
|
45
|
+
"fail-if": "invalid-attribute-value"},
|
46
|
+
|
47
|
+
{"description": "valid single class attribute value with trailing LT",
|
48
|
+
"input": "<span class='a\u000B'>",
|
49
|
+
"fail-if": "invalid-attribute-value"},
|
50
|
+
|
51
|
+
{"description": "valid single class attribute value with leading and trailing LT",
|
52
|
+
"input": "<span class='\u000Ba\u000B'>",
|
53
|
+
"fail-if": "invalid-attribute-value"},
|
54
|
+
|
55
|
+
{"description": "valid single class attribute value with leading FF",
|
56
|
+
"input": "<span class='\u000Ca'>",
|
57
|
+
"fail-if": "invalid-attribute-value"},
|
58
|
+
|
59
|
+
{"description": "valid single class attribute value with trailing FF",
|
60
|
+
"input": "<span class='a\u000C'>",
|
61
|
+
"fail-if": "invalid-attribute-value"},
|
62
|
+
|
63
|
+
{"description": "valid single class attribute value with leading and trailing FF",
|
64
|
+
"input": "<span class='\u000Ca\u000C'>",
|
65
|
+
"fail-if": "invalid-attribute-value"},
|
66
|
+
|
67
|
+
{"description": "valid single class attribute value with leading CR",
|
68
|
+
"input": "<span class='\ra'>",
|
69
|
+
"fail-if": "invalid-attribute-value"},
|
70
|
+
|
71
|
+
{"description": "valid single class attribute value with trailing CR",
|
72
|
+
"input": "<span class='a\r'>",
|
73
|
+
"fail-if": "invalid-attribute-value"},
|
74
|
+
|
75
|
+
{"description": "valid single class attribute value with leading and trailing CR",
|
76
|
+
"input": "<span class='\ra\r'>",
|
77
|
+
"fail-if": "invalid-attribute-value"},
|
78
|
+
|
79
|
+
{"description": "valid double class attribute value separated by space",
|
80
|
+
"input": "<span class='a b'>",
|
81
|
+
"fail-if": "invalid-attribute-value"},
|
82
|
+
|
83
|
+
{"description": "valid double class attribute value separated by tab",
|
84
|
+
"input": "<span class='a\tb'>",
|
85
|
+
"fail-if": "invalid-attribute-value"},
|
86
|
+
|
87
|
+
{"description": "valid double class attribute value separated by LF",
|
88
|
+
"input": "<span class='a\nb'>",
|
89
|
+
"fail-if": "invalid-attribute-value"},
|
90
|
+
|
91
|
+
{"description": "valid double class attribute value separated by LT",
|
92
|
+
"input": "<span class='a\u000Bb'>",
|
93
|
+
"fail-if": "invalid-attribute-value"},
|
94
|
+
|
95
|
+
{"description": "valid double class attribute value separated by FF",
|
96
|
+
"input": "<span class='a\u000Cb'>",
|
97
|
+
"fail-if": "invalid-attribute-value"},
|
98
|
+
|
99
|
+
{"description": "valid double class attribute value separated by CR",
|
100
|
+
"input": "<span class='a\rb'>",
|
101
|
+
"fail-if": "invalid-attribute-value"},
|
102
|
+
|
103
|
+
{"description": "invalid duplicated class attribute value separated by space",
|
104
|
+
"input": "<span class='a a'>",
|
105
|
+
"fail-unless": "invalid-attribute-value"},
|
106
|
+
|
107
|
+
{"description": "invalid duplicated class attribute value separated by tab",
|
108
|
+
"input": "<span class='a\ta'>",
|
109
|
+
"fail-unless": "invalid-attribute-value"},
|
110
|
+
|
111
|
+
{"description": "invalid duplicated class attribute value separated by LF",
|
112
|
+
"input": "<span class='a\na'>",
|
113
|
+
"fail-unless": "invalid-attribute-value"},
|
114
|
+
|
115
|
+
{"description": "invalid duplicated class attribute value separated by LT",
|
116
|
+
"input": "<span class='a\u000Ba'>",
|
117
|
+
"fail-unless": "invalid-attribute-value"},
|
118
|
+
|
119
|
+
{"description": "invalid duplicated class attribute value separated by FF",
|
120
|
+
"input": "<span class='a\u000Ca'>",
|
121
|
+
"fail-unless": "invalid-attribute-value"},
|
122
|
+
|
123
|
+
{"description": "invalid duplicated class attribute value separated by CR",
|
124
|
+
"input": "<span class='a\ra'>",
|
125
|
+
"fail-unless": "duplicate-value-in-token-list"},
|
126
|
+
|
127
|
+
{"description": "invalid duplicated class attribute value separated by space",
|
128
|
+
"input": "<span class='a a'>",
|
129
|
+
"fail-unless": "duplicate-value-in-token-list"},
|
130
|
+
|
131
|
+
{"description": "invalid duplicated class attribute value separated by tab",
|
132
|
+
"input": "<span class='a\ta'>",
|
133
|
+
"fail-unless": "duplicate-value-in-token-list"},
|
134
|
+
|
135
|
+
{"description": "invalid duplicated class attribute value separated by LF",
|
136
|
+
"input": "<span class='a\na'>",
|
137
|
+
"fail-unless": "duplicate-value-in-token-list"},
|
138
|
+
|
139
|
+
{"description": "invalid duplicated class attribute value separated by LT",
|
140
|
+
"input": "<span class='a\u000Ba'>",
|
141
|
+
"fail-unless": "duplicate-value-in-token-list"},
|
142
|
+
|
143
|
+
{"description": "invalid duplicated class attribute value separated by FF",
|
144
|
+
"input": "<span class='a\u000Ca'>",
|
145
|
+
"fail-unless": "duplicate-value-in-token-list"},
|
146
|
+
|
147
|
+
{"description": "invalid duplicated class attribute value separated by CR",
|
148
|
+
"input": "<span class='a\ra'>",
|
149
|
+
"fail-unless": "duplicate-value-in-token-list"}
|
150
|
+
|
151
|
+
]}
|
152
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
{"tests": [
|
2
|
+
|
3
|
+
{"description": "valid contenteditable attribute value 'true'",
|
4
|
+
"input": "<span contenteditable=true>",
|
5
|
+
"fail-if": "invalid-attribute-value"},
|
6
|
+
|
7
|
+
{"description": "valid contenteditable attribute value 'TRUE'",
|
8
|
+
"input": "<span contenteditable=TRUE>",
|
9
|
+
"fail-if": "invalid-attribute-value"},
|
10
|
+
|
11
|
+
{"description": "valid contenteditable attribute value 'TrUe'",
|
12
|
+
"input": "<span contenteditable=TrUe>",
|
13
|
+
"fail-if": "invalid-attribute-value"},
|
14
|
+
|
15
|
+
{"description": "valid contenteditable attribute value 'false'",
|
16
|
+
"input": "<span contenteditable=false>",
|
17
|
+
"fail-if": "invalid-attribute-value"},
|
18
|
+
|
19
|
+
{"description": "valid contenteditable attribute value 'FALSE'",
|
20
|
+
"input": "<span contenteditable=FALSE>",
|
21
|
+
"fail-if": "invalid-attribute-value"},
|
22
|
+
|
23
|
+
{"description": "valid contenteditable attribute value 'FalSe'",
|
24
|
+
"input": "<span contenteditable=FalSe>",
|
25
|
+
"fail-if": "invalid-attribute-value"},
|
26
|
+
|
27
|
+
{"description": "valid contenteditable attribute value ''",
|
28
|
+
"input": "<span contenteditable=''>",
|
29
|
+
"fail-if": "invalid-attribute-value"},
|
30
|
+
|
31
|
+
{"description": "valid contenteditable attribute value (not specified)",
|
32
|
+
"input": "<span contenteditable>",
|
33
|
+
"fail-if": "invalid-attribute-value"},
|
34
|
+
|
35
|
+
{"description": "invalid contenteditable attribute value 'foo'",
|
36
|
+
"input": "<span contenteditable=foo>",
|
37
|
+
"fail-unless": "invalid-enumerated-value"},
|
38
|
+
|
39
|
+
{"description": "invalid contenteditable attribute value '0'",
|
40
|
+
"input": "<span contenteditable=0>",
|
41
|
+
"fail-unless": "invalid-enumerated-value"},
|
42
|
+
|
43
|
+
{"description": "invalid contenteditable attribute value '1'",
|
44
|
+
"input": "<span contenteditable=1>",
|
45
|
+
"fail-unless": "invalid-enumerated-value"},
|
46
|
+
|
47
|
+
{"description": "invalid contenteditable attribute value 'yes'",
|
48
|
+
"input": "<span contenteditable=yes>",
|
49
|
+
"fail-unless": "invalid-enumerated-value"},
|
50
|
+
|
51
|
+
{"description": "invalid contenteditable attribute value 'no'",
|
52
|
+
"input": "<span contenteditable=no>",
|
53
|
+
"fail-unless": "invalid-enumerated-value"},
|
54
|
+
|
55
|
+
{"description": "invalid contenteditable attribute value 'inherit'",
|
56
|
+
"input": "<span contenteditable=inherit>",
|
57
|
+
"fail-unless": "invalid-enumerated-value"}
|
58
|
+
|
59
|
+
]}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
{"tests": [
|
2
|
+
|
3
|
+
{"description": "contextmenu points to valid ID earlier",
|
4
|
+
"input": "<menu id=a><span contextmenu=a>",
|
5
|
+
"fail-if": "id-does-not-exist"},
|
6
|
+
|
7
|
+
{"description": "contextmenu points to valid ID later",
|
8
|
+
"input": "<span contextmenu=a><menu id=a>",
|
9
|
+
"fail-if": "id-does-not-exist"},
|
10
|
+
|
11
|
+
{"description": "contextmenu points to non-existent ID",
|
12
|
+
"input": "<span contextmenu=a>",
|
13
|
+
"fail-unless": "id-does-not-exist"},
|
14
|
+
|
15
|
+
{"description": "contextmenu points to ID on non-menu element",
|
16
|
+
"input": "<span id=a><span contextmenu=a>",
|
17
|
+
"fail-unless": "contextmenu-must-point-to-menu"},
|
18
|
+
|
19
|
+
{"description": "uppercase contextmenu points to ID on non-menu element",
|
20
|
+
"input": "<span id=a><span CONTEXTMENU=a>",
|
21
|
+
"fail-unless": "contextmenu-must-point-to-menu"},
|
22
|
+
|
23
|
+
{"description": "valid ID 'a'",
|
24
|
+
"input": "<span contextmenu=a>",
|
25
|
+
"fail-if": "invalid-attribute-value"},
|
26
|
+
|
27
|
+
{"description": "valid ID '1'",
|
28
|
+
"input": "<span contextmenu=1>",
|
29
|
+
"fail-if": "invalid-attribute-value"},
|
30
|
+
|
31
|
+
{"description": "wacky but valid ID",
|
32
|
+
"input": "<span contextmenu='<html><head><title>a</title></head><body><p>b</p></body></html>'>",
|
33
|
+
"fail-if": "invalid-attribute-value"},
|
34
|
+
|
35
|
+
{"description": "invalid blank ID",
|
36
|
+
"input": "<span id>",
|
37
|
+
"fail-unless": "attribute-value-can-not-be-blank"},
|
38
|
+
|
39
|
+
{"description": "invalid blank ID with quotes",
|
40
|
+
"input": "<span contextmenu=''>",
|
41
|
+
"fail-unless": "attribute-value-can-not-be-blank"},
|
42
|
+
|
43
|
+
{"description": "invalid ID because of leading space",
|
44
|
+
"input": "<span contextmenu=' a'>",
|
45
|
+
"fail-unless": "space-in-id"},
|
46
|
+
|
47
|
+
{"description": "invalid ID because of trailing space",
|
48
|
+
"input": "<span contextmenu='a '>",
|
49
|
+
"fail-unless": "space-in-id"},
|
50
|
+
|
51
|
+
{"description": "invalid ID because of space in value",
|
52
|
+
"input": "<span contextmenu='a b'>",
|
53
|
+
"fail-unless": "space-in-id"},
|
54
|
+
|
55
|
+
{"description": "invalid ID because of leading tab",
|
56
|
+
"input": "<span contextmenu='\ta'>",
|
57
|
+
"fail-unless": "space-in-id"},
|
58
|
+
|
59
|
+
{"description": "invalid ID because of trailing tab",
|
60
|
+
"input": "<span contextmenu='a\t'>",
|
61
|
+
"fail-unless": "space-in-id"},
|
62
|
+
|
63
|
+
{"description": "invalid ID because of tab in value",
|
64
|
+
"input": "<span contextmenu='a\tb'>",
|
65
|
+
"fail-unless": "space-in-id"},
|
66
|
+
|
67
|
+
{"description": "invalid ID because of leading LF",
|
68
|
+
"input": "<span contextmenu='\na'>",
|
69
|
+
"fail-unless": "space-in-id"},
|
70
|
+
|
71
|
+
{"description": "invalid ID because of trailing LF",
|
72
|
+
"input": "<span contextmenu='a\n'>",
|
73
|
+
"fail-unless": "space-in-id"},
|
74
|
+
|
75
|
+
{"description": "invalid ID because of LF in value",
|
76
|
+
"input": "<span contextmenu='a\nb'>",
|
77
|
+
"fail-unless": "space-in-id"},
|
78
|
+
|
79
|
+
{"description": "invalid ID because of leading LT",
|
80
|
+
"input": "<span contextmenu='\u000Ba'>",
|
81
|
+
"fail-unless": "space-in-id"},
|
82
|
+
|
83
|
+
{"description": "invalid ID because of trailing LT",
|
84
|
+
"input": "<span contextmenu='a\u000B'>",
|
85
|
+
"fail-unless": "space-in-id"},
|
86
|
+
|
87
|
+
{"description": "invalid ID because of LT in value",
|
88
|
+
"input": "<span contextmenu='a\u000Bb'>",
|
89
|
+
"fail-unless": "space-in-id"},
|
90
|
+
|
91
|
+
{"description": "invalid ID because of leading FF",
|
92
|
+
"input": "<span contextmenu='\u000Ca'>",
|
93
|
+
"fail-unless": "space-in-id"},
|
94
|
+
|
95
|
+
{"description": "invalid ID because of trailing FF",
|
96
|
+
"input": "<span contextmenu='a\u000C'>",
|
97
|
+
"fail-unless": "space-in-id"},
|
98
|
+
|
99
|
+
{"description": "invalid ID because of FF in value",
|
100
|
+
"input": "<span contextmenu='a\u000Cb'>",
|
101
|
+
"fail-unless": "space-in-id"},
|
102
|
+
|
103
|
+
{"description": "invalid ID because of leading CR",
|
104
|
+
"input": "<span contextmenu='\ra'>",
|
105
|
+
"fail-unless": "space-in-id"},
|
106
|
+
|
107
|
+
{"description": "invalid ID because of trailing CR",
|
108
|
+
"input": "<span contextmenu='a\r'>",
|
109
|
+
"fail-unless": "space-in-id"},
|
110
|
+
|
111
|
+
{"description": "invalid ID because of CR in value",
|
112
|
+
"input": "<span contextmenu='a\rb'>",
|
113
|
+
"fail-unless": "space-in-id"}
|
114
|
+
|
115
|
+
]}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
{"tests": [
|
2
|
+
|
3
|
+
{"description": "valid dir attribute value 'ltr'",
|
4
|
+
"input": "<span dir=ltr>",
|
5
|
+
"fail-if": "invalid-attribute-value"},
|
6
|
+
|
7
|
+
{"description": "valid dir attribute value 'LTR'",
|
8
|
+
"input": "<span dir=LTR>",
|
9
|
+
"fail-if": "invalid-attribute-value"},
|
10
|
+
|
11
|
+
{"description": "valid dir attribute value 'LtR'",
|
12
|
+
"input": "<span dir=LtR>",
|
13
|
+
"fail-if": "invalid-attribute-value"},
|
14
|
+
|
15
|
+
{"description": "valid dir attribute value 'rtl'",
|
16
|
+
"input": "<span dir=rtl>",
|
17
|
+
"fail-if": "invalid-attribute-value"},
|
18
|
+
|
19
|
+
{"description": "valid dir attribute value 'RTL'",
|
20
|
+
"input": "<span dir=RTL>",
|
21
|
+
"fail-if": "invalid-attribute-value"},
|
22
|
+
|
23
|
+
{"description": "valid dir attribute value 'RtL'",
|
24
|
+
"input": "<span dir=RtL>",
|
25
|
+
"fail-if": "invalid-attribute-value"},
|
26
|
+
|
27
|
+
{"description": "invalid dir attribute value due to leading space",
|
28
|
+
"input": "<span dir=' ltr'>",
|
29
|
+
"fail-unless": "invalid-enumerated-value"},
|
30
|
+
|
31
|
+
{"description": "dir attribute value can not be blank",
|
32
|
+
"input": "<span dir>",
|
33
|
+
"fail-unless": "attribute-value-can-not-be-blank"},
|
34
|
+
|
35
|
+
{"description": "dir attribute value can not be blank (with quotes)",
|
36
|
+
"input": "<span dir=''>",
|
37
|
+
"fail-unless": "attribute-value-can-not-be-blank"},
|
38
|
+
|
39
|
+
{"description": "invalid dir attribute value 'left'",
|
40
|
+
"input": "<span dir=left>",
|
41
|
+
"fail-unless": "invalid-enumerated-value"},
|
42
|
+
|
43
|
+
{"description": "invalid dir attribute value 'right'",
|
44
|
+
"input": "<span dir=right>",
|
45
|
+
"fail-unless": "invalid-enumerated-value"},
|
46
|
+
|
47
|
+
{"description": "invalid dir attribute value 'lefttoright'",
|
48
|
+
"input": "<span dir=lefttoright>",
|
49
|
+
"fail-unless": "invalid-enumerated-value"},
|
50
|
+
|
51
|
+
{"description": "invalid dir attribute value 'righttoleft'",
|
52
|
+
"input": "<span dir=righttoleft>",
|
53
|
+
"fail-unless": "invalid-enumerated-value"},
|
54
|
+
|
55
|
+
{"description": "invalid dir attribute value 'inherit'",
|
56
|
+
"input": "<span dir=inherit>",
|
57
|
+
"fail-unless": "invalid-enumerated-value"}
|
58
|
+
|
59
|
+
]}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
{"tests": [
|
2
|
+
|
3
|
+
{"description": "valid draggable attribute value 'true'",
|
4
|
+
"input": "<span draggable=true>",
|
5
|
+
"fail-if": "invalid-attribute-value"},
|
6
|
+
|
7
|
+
{"description": "valid draggable attribute value 'TRUE'",
|
8
|
+
"input": "<span draggable=TRUE>",
|
9
|
+
"fail-if": "invalid-attribute-value"},
|
10
|
+
|
11
|
+
{"description": "valid draggable attribute value 'TrUe'",
|
12
|
+
"input": "<span draggable=TrUe>",
|
13
|
+
"fail-if": "invalid-attribute-value"},
|
14
|
+
|
15
|
+
{"description": "valid draggable attribute value 'false'",
|
16
|
+
"input": "<span draggable=false>",
|
17
|
+
"fail-if": "invalid-attribute-value"},
|
18
|
+
|
19
|
+
{"description": "valid draggable attribute value 'FALSE'",
|
20
|
+
"input": "<span draggable=FALSE>",
|
21
|
+
"fail-if": "invalid-attribute-value"},
|
22
|
+
|
23
|
+
{"description": "valid draggable attribute value 'FalSe'",
|
24
|
+
"input": "<span draggable=FalSe>",
|
25
|
+
"fail-if": "invalid-attribute-value"},
|
26
|
+
|
27
|
+
{"description": "invalid draggable attribute value ''",
|
28
|
+
"input": "<span draggable=''>",
|
29
|
+
"fail-unless": "attribute-value-can-not-be-blank"},
|
30
|
+
|
31
|
+
{"description": "valid draggable attribute value (not specified)",
|
32
|
+
"input": "<span draggable>",
|
33
|
+
"fail-unless": "attribute-value-can-not-be-blank"},
|
34
|
+
|
35
|
+
{"description": "invalid draggable attribute value 'foo'",
|
36
|
+
"input": "<span draggable=foo>",
|
37
|
+
"fail-unless": "invalid-enumerated-value"},
|
38
|
+
|
39
|
+
{"description": "invalid draggable attribute value '0'",
|
40
|
+
"input": "<span draggable=0>",
|
41
|
+
"fail-unless": "invalid-enumerated-value"},
|
42
|
+
|
43
|
+
{"description": "invalid draggable attribute value '1'",
|
44
|
+
"input": "<span draggable=1>",
|
45
|
+
"fail-unless": "invalid-enumerated-value"},
|
46
|
+
|
47
|
+
{"description": "invalid draggable attribute value 'yes'",
|
48
|
+
"input": "<span draggable=yes>",
|
49
|
+
"fail-unless": "invalid-enumerated-value"},
|
50
|
+
|
51
|
+
{"description": "invalid draggable attribute value 'no'",
|
52
|
+
"input": "<span draggable=no>",
|
53
|
+
"fail-unless": "invalid-enumerated-value"},
|
54
|
+
|
55
|
+
{"description": "invalid draggable attribute value 'auto'",
|
56
|
+
"input": "<span draggable=auto>",
|
57
|
+
"fail-unless": "invalid-enumerated-value"},
|
58
|
+
|
59
|
+
{"description": "invalid draggable attribute value 'inherit'",
|
60
|
+
"input": "<span draggable=inherit>",
|
61
|
+
"fail-unless": "invalid-enumerated-value"}
|
62
|
+
|
63
|
+
]}
|