From b724832872ae4b4cd4b5f61c153eae39f1c3b213 Mon Sep 17 00:00:00 2001 From: Joshua Bronson Date: Mon, 20 Apr 2020 13:26:33 -0400 Subject: [PATCH] Cherry-pick 7ba35c4 from master (support pathlib.Path for static_folder) --- CHANGES.rst | 11 +++++++++++ src/flask/helpers.py | 2 +- tests/test_basic.py | 10 ++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index a85313eb..7fa83f76 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,5 +1,16 @@ .. currentmodule:: flask + + +Version 1.1.x +------------- + +Not yet released. + +- Officially support passing a :class:`pathlib.Path` for + ``static_folder`` which stopped working in 1.1.2. :pr:`3579` + + Version 1.1.2 ------------- diff --git a/src/flask/helpers.py b/src/flask/helpers.py index df06db86..3e64e3fa 100644 --- a/src/flask/helpers.py +++ b/src/flask/helpers.py @@ -1001,7 +1001,7 @@ class _PackageBoundObject(object): @static_folder.setter def static_folder(self, value): if value is not None: - value = value.rstrip("/\\") + value = os.fspath(value).rstrip(r"\/") self._static_folder = value @property diff --git a/tests/test_basic.py b/tests/test_basic.py index 4d3b7b08..58cbe3b7 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -1425,6 +1425,16 @@ def test_static_url_empty_path_default(app): rv.close() +@pytest.mark.skipif(sys.version_info < (3, 6), reason="requires Python >= 3.6") +def test_static_folder_with_pathlib_path(app): + from pathlib import Path + + app = flask.Flask(__name__, static_folder=Path("static")) + rv = app.test_client().open("/static/index.html", method="GET") + assert rv.status_code == 200 + rv.close() + + def test_static_folder_with_ending_slash(): app = flask.Flask(__name__, static_folder="static/")