Bug 1631470 [wpt PR 23116] - MIME Sniffing: tests for MIME type groups, a=testonly

Automatic update from web-platform-tests
MIME Sniffing: tests for MIME type groups

Note: these are currently not run by browsers, but might be useful for tooling.
--

wpt-commits: 5c417eadfaa7ff328eb1cbc6338b843d73de4f63
wpt-pr: 23116
This commit is contained in:
J. King 2020-04-28 11:32:38 +00:00 коммит произвёл moz-wptsync-bot
Родитель 3db9df5c0a
Коммит 3158bf4309
2 изменённых файлов: 171 добавлений и 1 удалений

Просмотреть файл

@ -1,4 +1,4 @@
== MIME types ==
## MIME types
`resources/mime-types.json` and `resources/generated-mime-types.json` contain MIME type tests. The tests are encoded as a JSON array. String values in the array serve as documentation. All other values are objects with the following fields:
@ -29,3 +29,14 @@ function isByteCompatible(str) {
`resources/generated-mime-types.json` is generated by running `resources/generated-mime-types.py`. Modify the latter to correct the former.
These tests are used by resources in this directory to test various aspects of MIME types.
## MIME type groups
`resources/mime-groups.json` contains MIME type group-membership tests. The tests are encoded as a JSON array. String values in the array serve as documentation. All other values are objects with the following fields:
* `input`: The MIME type to test.
* `groups`: An array of zero or more groups to which the MIME type belongs.
In order to pass the tests an implementation must treat each MIME type as belonging to the exact set of groups listed, with no additions or omissions.
Note: As MIME type groups are used only while determining the computed MIME type of a resource and are not exposed in any API, no browser-based test harness is available.

Просмотреть файл

@ -0,0 +1,159 @@
[
{"input": "x/x", "groups": []},
{"input": "image/x", "groups": ["image"]},
{"input": "audio/x", "groups": ["audio or video"]},
{"input": "video/x", "groups": ["audio or video"]},
{"input": "application/ogg", "groups": ["audio or video"]},
{"input": "application/ogg;x=x", "groups": ["audio or video"]},
{"input": "font/x", "groups": ["font"]},
{"input": "application/font-cff", "groups": ["font"]},
{"input": "application/font-cff;x=x", "groups": ["font"]},
{"input": "application/font-off", "groups": ["font"]},
{"input": "application/font-off;x=x", "groups": ["font"]},
{"input": "application/font-sfnt", "groups": ["font"]},
{"input": "application/font-sfnt;x=x", "groups": ["font"]},
{"input": "application/font-ttf", "groups": ["font"]},
{"input": "application/font-ttf;x=x", "groups": ["font"]},
{"input": "application/font-woff", "groups": ["font"]},
{"input": "application/font-woff;x=x", "groups": ["font"]},
{"input": "application/vnd.ms-fontobject", "groups": ["font"]},
{"input": "application/vnd.ms-fontobject;x=x", "groups": ["font"]},
{"input": "application/vnd.ms-opentype", "groups": ["font"]},
{"input": "application/vnd.ms-opentype;x=x", "groups": ["font"]},
{"input": "x/x+zip", "groups": ["ZIP-based"]},
{"input": "x/x+zip;x=x", "groups": ["ZIP-based"]},
{"input": "x/+zip", "groups": ["ZIP-based"]},
{"input": "x/+zip;x=x", "groups": ["ZIP-based"]},
"application/zip also matches the archive group",
{"input": "application/zip", "groups": ["ZIP-based", "archive"]},
{"input": "application/zip;x=x", "groups": ["ZIP-based", "archive"]},
{"input": "application/x-rar-compressed", "groups": ["archive"]},
{"input": "application/x-rar-compressed;x=x", "groups": ["archive"]},
{"input": "application/x-gzip", "groups": ["archive"]},
{"input": "application/x-gzip;x=x", "groups": ["archive"]},
"XML is also scriptable",
{"input": "x/x+xml", "groups": ["XML", "scriptable"]},
{"input": "x/x+xml;x=x", "groups": ["XML", "scriptable"]},
{"input": "x/+xml", "groups": ["XML", "scriptable"]},
{"input": "x/+xml;x=x", "groups": ["XML", "scriptable"]},
{"input": "application/xml", "groups": ["XML", "scriptable"]},
{"input": "application/xml;x=x", "groups": ["XML", "scriptable"]},
{"input": "text/xml", "groups": ["XML", "scriptable"]},
{"input": "text/xml;x=x", "groups": ["XML", "scriptable"]},
"HTML is scriptable",
{"input": "text/html", "groups": ["HTML", "scriptable"]},
{"input": "text/html;x=x", "groups": ["HTML", "scriptable"]},
"PDF is scriptable",
{"input": "application/pdf", "groups": ["scriptable"]},
{"input": "application/pdf;x=x", "groups": ["scriptable"]},
{"input": "application/ecmascript", "groups": ["JavaScript"]},
{"input": "application/ecmascript;x=x", "groups": ["JavaScript"]},
{"input": "application/javascript", "groups": ["JavaScript"]},
{"input": "application/javascript;x=x", "groups": ["JavaScript"]},
{"input": "application/x-ecmascript", "groups": ["JavaScript"]},
{"input": "application/x-ecmascript;x=x", "groups": ["JavaScript"]},
{"input": "application/x-javascript", "groups": ["JavaScript"]},
{"input": "application/x-javascript;x=x", "groups": ["JavaScript"]},
{"input": "text/ecmascript", "groups": ["JavaScript"]},
{"input": "text/ecmascript;x=x", "groups": ["JavaScript"]},
{"input": "text/javascript", "groups": ["JavaScript"]},
{"input": "text/javascript;x=x", "groups": ["JavaScript"]},
{"input": "text/javascript1.0", "groups": ["JavaScript"]},
{"input": "text/javascript1.0;x=x", "groups": ["JavaScript"]},
{"input": "text/javascript1.1", "groups": ["JavaScript"]},
{"input": "text/javascript1.1;x=x", "groups": ["JavaScript"]},
{"input": "text/javascript1.2", "groups": ["JavaScript"]},
{"input": "text/javascript1.2;x=x", "groups": ["JavaScript"]},
{"input": "text/javascript1.3", "groups": ["JavaScript"]},
{"input": "text/javascript1.3;x=x", "groups": ["JavaScript"]},
{"input": "text/javascript1.4", "groups": ["JavaScript"]},
{"input": "text/javascript1.4;x=x", "groups": ["JavaScript"]},
{"input": "text/javascript1.5", "groups": ["JavaScript"]},
{"input": "text/javascript1.5;x=x", "groups": ["JavaScript"]},
{"input": "text/jscript", "groups": ["JavaScript"]},
{"input": "text/jscript;x=x", "groups": ["JavaScript"]},
{"input": "text/livescript", "groups": ["JavaScript"]},
{"input": "text/livescript;x=x", "groups": ["JavaScript"]},
{"input": "text/x-ecmascript", "groups": ["JavaScript"]},
{"input": "text/x-ecmascript;x=x", "groups": ["JavaScript"]},
{"input": "text/x-javascript", "groups": ["JavaScript"]},
{"input": "text/x-javascript;x=x", "groups": ["JavaScript"]},
{"input": "x/x+json", "groups": ["JSON"]},
{"input": "x/x+json;x=x", "groups": ["JSON"]},
{"input": "x/+json", "groups": ["JSON"]},
{"input": "x/+json;x=x", "groups": ["JSON"]},
{"input": "application/json", "groups": ["JSON"]},
{"input": "application/json;x=x", "groups": ["JSON"]},
{"input": "text/json", "groups": ["JSON"]},
{"input": "text/json;x=x", "groups": ["JSON"]},
{"input": "x/x;type=image", "groups": []},
{"input": "x/x;type=audio", "groups": []},
{"input": "x/x;type=video", "groups": []},
{"input": "x/x;type=font", "groups": []},
{"input": "ximage/x", "groups": []},
{"input": "xaudio/x", "groups": []},
{"input": "xvideo/x", "groups": []},
{"input": "xfont/x", "groups": []},
{"input": "imagex/x", "groups": []},
{"input": "audiox/x", "groups": []},
{"input": "videox/x", "groups": []},
{"input": "fontx/x", "groups": []},
{"input": "x/image", "groups": []},
{"input": "x/png", "groups": []},
{"input": "x/audio", "groups": []},
{"input": "x/video", "groups": []},
{"input": "x/ogg", "groups": []},
{"input": "x/font", "groups": []},
{"input": "x/woff", "groups": []},
{"input": "x/font-ttf", "groups": []},
{"input": "x/x;x=\"application/font-ttf\"", "groups": []},
{"input": "x/zip", "groups": []},
{"input": "x/x-gzip", "groups": []},
{"input": "x/x-rar-compressed", "groups": []},
{"input": "x/x;x=\"application/x-gip\"", "groups": []},
{"input": "x+zip/x", "groups": []},
{"input": "x/x;x=x+zip", "groups": []},
{"input": "x/x;subtype=x+zip", "groups": []},
{"input": "x/xml", "groups": []},
{"input": "x/x;x=\"application/xml\"", "groups": []},
{"input": "x+xml/x", "groups": []},
{"input": "x/x;x=x+xml", "groups": []},
{"input": "x/x;subtype=x+xml", "groups": []},
{"input": "x/pdf", "groups": []},
{"input": "x/html", "groups": []},
{"input": "x/ecmascript", "groups": []},
{"input": "x/javascript", "groups": []},
{"input": "x/x-ecmascript", "groups": []},
{"input": "x/x-javascript", "groups": []},
{"input": "x/jscript", "groups": []},
{"input": "x/livescript", "groups": []},
{"input": "x/javascript1.0", "groups": []},
{"input": "x/javascript1.1", "groups": []},
{"input": "x/javascript1.2", "groups": []},
{"input": "x/javascript1.3", "groups": []},
{"input": "x/javascript1.4", "groups": []},
{"input": "x/javascript1.5", "groups": []},
{"input": "x/x;x=\"application/javascript\"", "groups": []},
{"input": "x/json", "groups": []},
{"input": "x/x;x=\"application/json\"", "groups": []},
{"input": "x+json/x", "groups": []},
{"input": "x/x;x=x+json", "groups": []},
{"input": "x/x;subtype=x+json", "groups": []},
{"input": "image/png", "groups": ["image"]},
{"input": "audio/mp4", "groups": ["audio or video"]},
{"input": "video/mpeg", "groups": ["audio or video"]},
{"input": "font/woff", "groups": ["font"]},
"SVG is both image and XML, thus also scriptable",
{"input": "image/svg+xml", "groups": ["image", "XML", "scriptable"]},
"Hypothetical SVG font type",
{"input": "font/svg+xml", "groups": ["font", "XML", "scriptable"]},
"XHTML is not considered HTML",
{"input": "application/xhtml+xml", "groups": ["XML", "scriptable"]},
"Subtype longer than 255",
{"input": "x/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789+zip",
"groups": ["ZIP-based"]},
{"input": "x/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789+xml",
"groups": ["XML", "scriptable"]},
{"input": "x/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789+json",
"groups": ["JSON"]}
]