MCPcopy
hub / github.com/pallets/werkzeug / test_new_response_iterator_behavior

Function test_new_response_iterator_behavior

tests/test_wrappers.py:952–1007  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

950
951
952def test_new_response_iterator_behavior():
953 req = wrappers.Request.from_values()
954 resp = wrappers.Response("Hello Wörld!")
955
956 def get_content_length(resp):
957 headers = resp.get_wsgi_headers(req.environ)
958 return headers.get("content-length", type=int)
959
960 def generate_items():
961 yield "Hello "
962 yield "Wörld!"
963
964 # werkzeug encodes when set to `data` now, which happens
965 # if a string is passed to the response object.
966 assert resp.response == ["Hello Wörld!".encode()]
967 assert resp.get_data() == "Hello Wörld!".encode()
968 assert get_content_length(resp) == 13
969 assert not resp.is_streamed
970 assert resp.is_sequence
971
972 # try the same for manual assignment
973 resp.set_data("Wörd")
974 assert resp.response == ["Wörd".encode()]
975 assert resp.get_data() == "Wörd".encode()
976 assert get_content_length(resp) == 5
977 assert not resp.is_streamed
978 assert resp.is_sequence
979
980 # automatic generator sequence conversion
981 resp.response = generate_items()
982 assert resp.is_streamed
983 assert not resp.is_sequence
984 assert resp.get_data() == "Hello Wörld!".encode()
985 assert resp.response == [b"Hello ", "Wörld!".encode()]
986 assert not resp.is_streamed
987 assert resp.is_sequence
988
989 # automatic generator sequence conversion
990 resp.response = generate_items()
991 resp.implicit_sequence_conversion = False
992 assert resp.is_streamed
993 assert not resp.is_sequence
994 pytest.raises(RuntimeError, lambda: resp.get_data())
995 resp.make_sequence()
996 assert resp.get_data() == "Hello Wörld!".encode()
997 assert resp.response == [b"Hello ", "Wörld!".encode()]
998 assert not resp.is_streamed
999 assert resp.is_sequence
1000
1001 # stream makes it a list no matter how the conversion is set
1002 for val in True, False:
1003 resp.implicit_sequence_conversion = val
1004 resp.response = ("foo", "bar")
1005 assert resp.is_sequence
1006 resp.stream.write("baz")
1007 assert resp.response == ["foo", "bar", "baz"]
1008
1009

Callers

nothing calls this directly

Calls 7

get_dataMethod · 0.95
set_dataMethod · 0.95
make_sequenceMethod · 0.95
generate_itemsFunction · 0.85
from_valuesMethod · 0.80
get_content_lengthFunction · 0.70
writeMethod · 0.45

Tested by

no test coverage detected