gradio/test
Yuichiro Tachibana (Tsuchiya) c77f05abb6
Fix the Queue to call API endpoints without internal HTTP routing (#5165)
* [WIP] Replace the HTTP call to /api/predict with a function call

* Extract shared logics into route_utils.*

* Fix Queue.call_prediction() to return the output dict and raise exceptions

* Remove run_predict()

* Create route_utils.call_process_api()

* Check Blocks.api_open and return 404 if it's false

* Refactoring on queueing.py

* Refactoring on queueing.py, renaming data to body

* Fix the if block of availability check in the predict() endpoint handler

* Put the code of clearning pending streams into route_utils.call_process_api

* Format gradio/routes.py

* Fix queueing.Queue.reset_iterators() not to call an HTTP endpoint

* Remove ququeing.Queue.queue_client, which is no longer used

* Fix with static type analysis

* Remove gradio.utils.AsyncRequest, which is no longer used

* add changeset

* Remove PEP604-syntax which is not supported by Python<3.10

* Fix gradio/queueing.py

* Remove AsyncRequest test cases

* Fix queueing and routes test cases

* Fix

* Replace Queue.server_url with .server_app and remove methods related to the old .server_url

* Revert `gradio_api_url` because building the document fails

* Add __future__.annotations to route_utils.py

* Update gradio/queueing.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Format

* Mark the `gradio_api_url` parameter of `mount_gradio_app()` deprecated

* Fix Queue.call_prediction to convert the output to a plain object

* Add a `except asyncio.CancelledError` handler to avoid printing stack trace for task cancellation

* Move the call of `route_utils.restore_session_state` into `route_utils.call_process_api`

* exception class

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
2023-09-05 15:33:15 -07:00
..
golden
test_files Makes it possible to set the initial camera position for the Model3D component as a tuple of (alpha, beta, radius) (#5266) 2023-08-29 17:02:05 -07:00
tmp
__init__.py
conftest.py Use tempdir for all python unit tests tests (#4882) 2023-07-12 11:19:39 -04:00
README.md Refactor component directories (#5074) 2023-08-03 23:01:18 +01:00
requirements.in
requirements.txt Pinning dependencies in requirements.txt (#4885) 2023-07-12 21:03:53 -04:00
test_analytics.py Lite: Fix the analytics module to use asyncio to work in the Wasm env (#5045) 2023-08-04 09:18:14 -04:00
test_blocks.py Move markdown & latex processing to the frontend for the gr.Markdown and gr.DataFrame components (#5268) 2023-08-21 06:54:20 -07:00
test_buttons.py Sign in with Hugging Face (OAuth support) (#4943) 2023-08-10 15:12:40 -04:00
test_chat_interface.py Add support for async functions and async generators to gr.ChatInterface (#5116) 2023-08-08 15:57:55 -04:00
test_components.py Fix dataset demo (#5390) 2023-09-05 11:47:10 -04:00
test_events.py Use tempdir for all python unit tests tests (#4882) 2023-07-12 11:19:39 -04:00
test_external.py Allow gr.Interface.from_pipeline() and gr.load() to work within gr.Blocks() (#5231) 2023-08-15 22:28:19 -07:00
test_flagging.py Fix dataset features and dataset preview for HuggingFaceDatasetSaver (#5135) 2023-08-09 14:14:12 -04:00
test_helpers.py Allow caching examples with streamed output (#5295) 2023-08-23 11:47:07 -07:00
test_interfaces.py Completely hide api page if show_api=False (#5219) 2023-08-15 10:07:53 -04:00
test_interpretation.py
test_mix.py Use tempdir for all python unit tests tests (#4882) 2023-07-12 11:19:39 -04:00
test_networking.py
test_pipelines.py Allow gr.Interface.from_pipeline() and gr.load() to work within gr.Blocks() (#5231) 2023-08-15 22:28:19 -07:00
test_processing_utils.py Use tempdir for all python unit tests tests (#4882) 2023-07-12 11:19:39 -04:00
test_queueing.py Fix the Queue to call API endpoints without internal HTTP routing (#5165) 2023-09-05 15:33:15 -07:00
test_reload.py Faster reload mode (#5267) 2023-08-29 17:29:15 -04:00
test_routes.py Fix the Queue to call API endpoints without internal HTTP routing (#5165) 2023-09-05 15:33:15 -07:00
test_theme_sharing.py
test_tunneling.py
test_utils.py Fix the Queue to call API endpoints without internal HTTP routing (#5165) 2023-09-05 15:33:15 -07:00

Backend Testing Guidelines

  • All the tests should test Backend functionalities. Frontend functionalities and e2e tests are done in Frontend.
  • Make use of pytest fixtures whenever it is possible. With fixtures, objects with high initialize durations are reused within tests, ex. a client session.
  • All testdata resides within _gradio/test_data and all test_files resides within test/test_files.
  • When doing network operations do not forget to make use of async to make tests faster.
  • Have clear class and function naming within the tests.
  • Short descriptions within test functions are great.
  • Library function docstrings is expected to contain an example, please add missing docstrings to the library while you are writing tests the related function.
  • Library docstring examples and descriptions are expected to align with tests, please fix divergent tests and library docstrings.