Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of #9248 - askalski:issue9185, r=<try>
Issue9185 I have to write tests yet, but I wanted to see full Travis CI output. Fixes #9185 <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9248) <!-- Reviewable:end -->
- Loading branch information
Showing
7 changed files
with
240 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 changes: 5 additions & 0 deletions
5
.../web-platform-tests/html/semantics/scripting-1/the-script-element/external-script-utf8.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
(function() { | ||
window.getSomeString = function() { | ||
return "śćążź"; //<- these are five Polish letters, similar to scazz. It can be read correctly only with windows 1250 encoding. | ||
}; | ||
})(); |
5 changes: 5 additions & 0 deletions
5
...atform-tests/html/semantics/scripting-1/the-script-element/external-script-windows1250.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
(function() { | ||
window.getSomeString = function() { | ||
return "œæ¹¿Ÿ"; //<- these are five Polish letters, similar to scazz. It can be read correctly only with windows 1250 encoding. | ||
}; | ||
})(); |
89 changes: 89 additions & 0 deletions
89
...t/web-platform-tests/html/semantics/scripting-1/the-script-element/script-charset-01.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
<!DOCTYPE html> | ||
<head> | ||
<meta charset="utf-8"> | ||
<title>Script @type: unknown parameters</title> | ||
<link rel="author" title="askalski" href="github.com/askalski"> | ||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#scriptingLanguages"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<div id="log"></div> | ||
|
||
<!-- "Step1" tests --> | ||
<!-- charset is set incorrectly via Content Type "text/javascript;charset=utf-8" in response | ||
which has priority before a correct setting in "charset" attribute of script tag. | ||
--> | ||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-windows1250.js&ct=text/javascript%3Bcharset=utf-8" charset="windows-1250"> | ||
</script> | ||
<script> | ||
test(function() { | ||
//these strings should not match, since the file charset is set incorrectly | ||
assert_not_equals(window.getSomeString(), "śćążź"); | ||
}); | ||
</script> | ||
<!-- charset is set correctly via Content Type "text/javascript;charset=utf-8" in response | ||
which has priority before a incorrect setting in "charset" attribute of script tag. | ||
--> | ||
|
||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-windows1250.js&ct=text/javascript%3Bcharset=windows-1250" charset="utf-8"> | ||
</script> | ||
<script> | ||
//the charset is set correctly via Content Type "text/javascript;charset=windows-1250" in respones | ||
test(function() { | ||
assert_equals(window.getSomeString(), "śćążź"); | ||
}); | ||
</script> | ||
|
||
<!-- end of step1 tests, now step2 tests --> | ||
<!-- in this case, the response's Content Type does not bring charset information. | ||
Second step takes block character encoding if available.--> | ||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-windows1250.js&ct=text/javascript" charset="utf-8"> | ||
</script> | ||
<script> | ||
test(function() { | ||
//these strings should not match, since the file charset is set incorrectly in "charset" tag of <script> above | ||
assert_not_equals(window.getSomeString(), "śćążź"); | ||
}); | ||
</script> | ||
<!-- charset is set correctly via Content Type "text/javascript;charset=utf-8" in response | ||
which has priority before a incorrect setting in "charset" attribute of script tag. | ||
--> | ||
|
||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-windows1250.js&ct=text/javascript" charset="windows-1250"> | ||
</script> | ||
<script> | ||
//the charset is set correctly via content attribute in <script> above | ||
test(function() { | ||
assert_equals(window.getSomeString(), "śćążź"); | ||
}); | ||
</script> | ||
|
||
<!-- end of step2 tests, now step3 tests --> | ||
<!-- in this case, neither response's Content Type nor charset attribute bring correct charset information. | ||
Third step takes this document's character encoding (declared correctly as UTF-8).--> | ||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-windows1250.js&ct=text/javascript"> | ||
</script> | ||
<script> | ||
test(function() { | ||
//these strings should not match, since the tested file is in windows-1250, and document is utf-8 | ||
assert_not_equals(window.getSomeString(), "śćążź"); | ||
}); | ||
</script> | ||
|
||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-utf8.js&ct=text/javascript"> | ||
</script> | ||
<script> | ||
//these strings should match, both document and tested file are utf-8 | ||
test(function() { | ||
assert_equals(window.getSomeString(), "śćążź"); | ||
}); | ||
</script> | ||
|
||
<!-- the last portion of tests (step4) are in file script-charset-02.html | ||
|
||
</head> |
40 changes: 40 additions & 0 deletions
40
...t/web-platform-tests/html/semantics/scripting-1/the-script-element/script-charset-02.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<!DOCTYPE html> | ||
<head> | ||
<!-- TODO: | ||
askalski: while this test pass, it does not test anything now. | ||
It should test, whether with no document.charset set in any way, the | ||
external scripts will get decoded using utf-8 as fallback character encoding. | ||
It seems like utf-8 is also a fallback encoding to html (my guess), so | ||
the part of the code I was attempting to test is never reached. | ||
--> | ||
<title>Script @type: unknown parameters</title> | ||
<link rel="author" title="askalski" href="github.com/askalski"> | ||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#scriptingLanguages"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<div id="log"></div> | ||
|
||
<!-- test of step4, which is taking utf-8 as fallback --> | ||
<!-- in this case, neither response's Content Type nor charset attribute bring correct charset information. | ||
Furthermore, document's encoding is not set.--> | ||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-windows1250.js&ct=text/javascript"> | ||
</script> | ||
<script> | ||
test(function() { | ||
//these strings should not match, since the tested file is in windows-1250, and fallback is defined as utf-8 | ||
assert_not_equals(window.getSomeString().length, 5); | ||
}); | ||
</script> | ||
|
||
<script type="text/javascript" | ||
src="serve-with-content-type.py?fn=external-script-utf8.js&ct=text/javascript"> | ||
</script> | ||
<script> | ||
//these strings should match, since fallback utf-8 is the correct setting. | ||
test(function() { | ||
assert_equals(window.getSomeString().length, 5); | ||
}); | ||
</script> | ||
|
||
</head> |
18 changes: 18 additions & 0 deletions
18
...b-platform-tests/html/semantics/scripting-1/the-script-element/serve-with-content-type.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import os | ||
|
||
def main(request, response): | ||
directory = os.path.dirname(__file__) | ||
|
||
try: | ||
file_name = request.GET.first("fn") | ||
content_type = request.GET.first("ct") | ||
content = open(os.path.join(directory, file_name), "rb").read() | ||
|
||
response.headers.set("Content-Type", content_type) | ||
response.content = content | ||
except: | ||
response.set_error(400, "Not enough parameters or file not found") | ||
|
||
#raise Exception("e " + content_type) | ||
|
||
#return [("Content-Type", content_type)], content |