Add qute:javascript to serve JS files.
This commit is contained in:
parent
783769d302
commit
3b3846c9dc
@ -248,6 +248,19 @@ def qute_history(url):
|
|||||||
return 'text/html', jinja.render('history.html', title='History')
|
return 'text/html', jinja.render('history.html', title='History')
|
||||||
|
|
||||||
|
|
||||||
|
@add_handler('javascript')
|
||||||
|
def qute_javascript(url):
|
||||||
|
"""Handler for qute:javascript.
|
||||||
|
|
||||||
|
Return content of file given as query parameter.
|
||||||
|
"""
|
||||||
|
path = url.path()
|
||||||
|
if path:
|
||||||
|
return 'text/html', utils.read_file("javascript" + path, binary=False)
|
||||||
|
else:
|
||||||
|
raise QuteSchemeError("No file specified", ValueError())
|
||||||
|
|
||||||
|
|
||||||
@add_handler('pyeval')
|
@add_handler('pyeval')
|
||||||
def qute_pyeval(_url):
|
def qute_pyeval(_url):
|
||||||
"""Handler for qute:pyeval."""
|
"""Handler for qute:pyeval."""
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
|
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from PyQt5.QtCore import QUrl
|
from PyQt5.QtCore import QUrl
|
||||||
@ -27,6 +28,49 @@ from qutebrowser.browser import history, qutescheme
|
|||||||
from qutebrowser.utils import objreg
|
from qutebrowser.utils import objreg
|
||||||
|
|
||||||
|
|
||||||
|
class TestJavascriptHandler:
|
||||||
|
|
||||||
|
"""Test the qute://javascript endpoint."""
|
||||||
|
|
||||||
|
# Tuples of fake JS files and their content.
|
||||||
|
js_files = [
|
||||||
|
('foo.js', "var a = 'foo';"),
|
||||||
|
('bar.js', "var a = 'bar';"),
|
||||||
|
]
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True)
|
||||||
|
def patch_read_file(self, monkeypatch):
|
||||||
|
"""Patch utils.read_file to return few fake JS files."""
|
||||||
|
def _read_file(path, binary=False):
|
||||||
|
"""Faked utils.read_file"""
|
||||||
|
assert not binary
|
||||||
|
for filename, content in self.js_files:
|
||||||
|
if path == os.path.join('javascript', filename):
|
||||||
|
return content
|
||||||
|
raise IOError("File not found {}!".format(path))
|
||||||
|
|
||||||
|
monkeypatch.setattr('qutebrowser.utils.utils.read_file', _read_file)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("filename, content", js_files)
|
||||||
|
def test_qutejavascript(self, filename, content):
|
||||||
|
url = QUrl("qute://javascript/{}".format(filename))
|
||||||
|
_mimetype, data = qutescheme.qute_javascript(url)
|
||||||
|
|
||||||
|
assert data == content
|
||||||
|
|
||||||
|
def test_qutejavascript_error(self):
|
||||||
|
url = QUrl("qute://javascript/404.js")
|
||||||
|
|
||||||
|
with pytest.raises(IOError):
|
||||||
|
qutescheme.qute_javascript(url)
|
||||||
|
|
||||||
|
def test_qutejavascript_empty_query(self):
|
||||||
|
url = QUrl("qute://javascript")
|
||||||
|
|
||||||
|
with pytest.raises(qutescheme.QuteSchemeError):
|
||||||
|
qutescheme.qute_javascript(url)
|
||||||
|
|
||||||
|
|
||||||
class TestHistoryHandler:
|
class TestHistoryHandler:
|
||||||
|
|
||||||
"""Test the qute://history endpoint."""
|
"""Test the qute://history endpoint."""
|
||||||
|
Loading…
Reference in New Issue
Block a user