Merge pull request #3174 from icreatedanaccount/master
Allow mode='rt' on open_resource() helper
This commit is contained in:
commit
8ef56c8c6d
5 changed files with 24 additions and 2 deletions
|
|
@ -20,6 +20,8 @@ Unreleased
|
||||||
(`#3059`_)
|
(`#3059`_)
|
||||||
- :func:`send_file` supports :class:`~io.BytesIO` partial content.
|
- :func:`send_file` supports :class:`~io.BytesIO` partial content.
|
||||||
(`#2957`_)
|
(`#2957`_)
|
||||||
|
- :func:`open_resource` accepts the "rt" file mode. This still does
|
||||||
|
the same thing as "r". (:issue:`3163`)
|
||||||
|
|
||||||
.. _#2935: https://github.com/pallets/flask/issues/2935
|
.. _#2935: https://github.com/pallets/flask/issues/2935
|
||||||
.. _#2957: https://github.com/pallets/flask/issues/2957
|
.. _#2957: https://github.com/pallets/flask/issues/2957
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ extensions = [
|
||||||
"sphinx.ext.intersphinx",
|
"sphinx.ext.intersphinx",
|
||||||
"sphinxcontrib.log_cabinet",
|
"sphinxcontrib.log_cabinet",
|
||||||
"pallets_sphinx_themes",
|
"pallets_sphinx_themes",
|
||||||
|
"sphinx_issues",
|
||||||
]
|
]
|
||||||
intersphinx_mapping = {
|
intersphinx_mapping = {
|
||||||
"python": ("https://docs.python.org/3/", None),
|
"python": ("https://docs.python.org/3/", None),
|
||||||
|
|
@ -29,6 +30,7 @@ intersphinx_mapping = {
|
||||||
"wtforms": ("https://wtforms.readthedocs.io/en/stable/", None),
|
"wtforms": ("https://wtforms.readthedocs.io/en/stable/", None),
|
||||||
"blinker": ("https://pythonhosted.org/blinker/", None),
|
"blinker": ("https://pythonhosted.org/blinker/", None),
|
||||||
}
|
}
|
||||||
|
issues_github_path = "pallets/flask"
|
||||||
|
|
||||||
# HTML -----------------------------------------------------------------
|
# HTML -----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
Sphinx~=1.8.0
|
Sphinx~=1.8.0
|
||||||
Pallets-Sphinx-Themes~=1.1.0
|
Pallets-Sphinx-Themes~=1.1.0
|
||||||
sphinxcontrib-log-cabinet~=1.0.0
|
sphinxcontrib-log-cabinet~=1.0.0
|
||||||
|
sphinx-issues~=1.2.0
|
||||||
|
|
|
||||||
|
|
@ -1053,10 +1053,12 @@ class _PackageBoundObject(object):
|
||||||
|
|
||||||
:param resource: the name of the resource. To access resources within
|
:param resource: the name of the resource. To access resources within
|
||||||
subfolders use forward slashes as separator.
|
subfolders use forward slashes as separator.
|
||||||
:param mode: resource file opening mode, default is 'rb'.
|
:param mode: Open file in this mode. Only reading is supported,
|
||||||
|
valid values are "r" (or "rt") and "rb".
|
||||||
"""
|
"""
|
||||||
if mode not in ("r", "rb"):
|
if mode not in {"r", "rt", "rb"}:
|
||||||
raise ValueError("Resources can only be opened for reading")
|
raise ValueError("Resources can only be opened for reading")
|
||||||
|
|
||||||
return open(os.path.join(self.root_path, resource), mode)
|
return open(os.path.join(self.root_path, resource), mode)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1014,6 +1014,7 @@ class TestSafeJoin(object):
|
||||||
print(flask.safe_join(*args))
|
print(flask.safe_join(*args))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TestHelpers(object):
|
class TestHelpers(object):
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"debug, expected_flag, expected_default_flag",
|
"debug, expected_flag, expected_default_flag",
|
||||||
|
|
@ -1060,3 +1061,17 @@ class TestHelpers(object):
|
||||||
assert rv.status_code == 200
|
assert rv.status_code == 200
|
||||||
assert rv.data == b"Hello"
|
assert rv.data == b"Hello"
|
||||||
assert rv.mimetype == "text/html"
|
assert rv.mimetype == "text/html"
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("mode", ("r", "rb", "rt"))
|
||||||
|
def test_open_resource(self, mode):
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
|
||||||
|
with app.open_resource("static/index.html", mode) as f:
|
||||||
|
assert "<h1>Hello World!</h1>" in str(f.read())
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("mode", ("w", "x", "a", "r+"))
|
||||||
|
def test_open_resource_exceptions(self, mode):
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
app.open_resource("static/index.html", mode)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue