ZIm/crates
Rayduck 95e360b170
python: Add runnable unittest tasks (#12451)
Add runnable tasks for Python, starting with `unittest` from the
standard library. Both `TestCase`s (classes meant to be a unit of
testing) and individual test functions in a `TestCase` will have
runnable icons. For completeness, I also included a task that will run
`unittest` on the current file.

The implementation follows the `unittest` CLI. The unittest module can
be used from the command line to run tests from modules, classes or even
individual test methods:

```
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
```

```python
import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()
```

From the snippet provided by `unittest` docs, a user may want to run
test_split independently of the other test functions in the test case.
Hence, I decided to make each test function runnable despite `TestCase`s
being the unit of testing.

## Example of running a `TestCase`
<img width="600" alt="image"
src="https://github.com/zed-industries/zed/assets/16619392/7be38b71-9d51-4b44-9840-f819502d600a">

## Example of running a test function in a `TestCase`
<img width="600" alt="image"
src="https://github.com/zed-industries/zed/assets/16619392/f0b6274c-4fa7-424e-a0f5-1dc723842046">

`unittest` will also run the `setUp` and `tearDown` fixtures.

Eventually, I want to add the more commonly used `pytest` runnables
(perhaps as an extension instead).

Release Notes:

- Added runnable tasks for Python `unittest`.
([#12080](https://github.com/zed-industries/zed/issues/12080)).
2024-06-01 18:46:36 +02:00
..
activity_indicator linux: Store binary path before restart to handle deleted binary file (#11568) 2024-05-08 19:13:28 +02:00
anthropic Improve model selection in the assistant (#12472) 2024-05-30 12:36:07 +02:00
assets Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
assistant assistant: Allow passing module paths to /rustdoc command (#12536) 2024-05-31 11:31:22 -04:00
assistant_slash_command Make slash commands more discoverable (#12480) 2024-05-30 16:45:05 +02:00
assistant_tooling Bring the Tool Calling README up to date (#11683) 2024-05-12 04:47:19 -07:00
audio Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
auto_update Add Flatpak build system and support (#12006) 2024-05-27 19:01:20 -06:00
breadcrumbs Break typography styles out of StyledExt (#11013) 2024-04-25 17:42:53 -04:00
call Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
channel Re-subscribe to channels after signing back out 2024-05-30 13:32:34 -07:00
cli Add Flatpak build system and support (#12006) 2024-05-27 19:01:20 -06:00
client Make prompt library icon in context panel staff-only for now (#12457) 2024-05-29 16:53:45 -06:00
clock Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
collab Reduce DB load upon initial connection due to channel loading (#12500) 2024-05-30 13:02:55 -07:00
collab_ui collab_ui: remove branch menu popover in favor of opening a modal (#12562) 2024-06-01 18:40:25 +02:00
collections gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
color Fix hex_to_hsla inside the color crate (#9412) 2024-03-15 16:58:46 -04:00
command_palette Use UpdateGlobal accessors in more places (#11925) 2024-05-16 13:30:04 -04:00
command_palette_hooks Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
copilot Improve context expansion (#10957) 2024-05-26 16:30:09 -07:00
db Clean up whitespace (#10755) 2024-04-23 13:31:21 -04:00
dev_server_projects Allow ssh connection for setting up zed (#12063) 2024-05-21 22:39:16 -06:00
diagnostics Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
editor Use repository mutex more sparingly. Don't hold it while running git status. (#12489) 2024-05-30 09:37:11 -07:00
extension Make slash commands more discoverable (#12480) 2024-05-30 16:45:05 +02:00
extension_api Rework context insertion UX (#12360) 2024-05-27 17:44:54 -06:00
extension_cli Add git blame (#8889) 2024-03-28 18:32:11 +01:00
extensions_ui Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
feature_flags Make prompt library icon in context panel staff-only for now (#12457) 2024-05-29 16:53:45 -06:00
feedback Fix GitHub Issue-creation commands 2024-05-28 21:51:24 -04:00
file_finder Tidy up the code (#12116) 2024-05-22 14:36:15 +03:00
file_icons Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
fs Use repository mutex more sparingly. Don't hold it while running git status. (#12489) 2024-05-30 09:37:11 -07:00
fsevent Retain run loop (#11241) 2024-04-30 23:31:59 -06:00
fuzzy Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
git Use repository mutex more sparingly. Don't hold it while running git status. (#12489) 2024-05-30 09:37:11 -07:00
git_hosting_providers Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
go_to_line Make autoscroll optional when highlighting editor rows (#11950) 2024-05-16 20:28:17 -07:00
google_ai Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
gpui Fix or promote leftover TODOs and GPUI APIs (#12514) 2024-05-31 18:36:15 -07:00
gpui_macros Adjust names of negated style methods (#11453) 2024-05-06 13:56:25 -04:00
headless Make reconnects smoother for dev servers (#12223) 2024-05-23 21:11:14 -06:00
http zed_extension_api: Add github_release_by_tag_name (#12172) 2024-05-22 20:40:31 -04:00
image_viewer Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
inline_completion_button Supermaven (#10788) 2024-05-03 12:50:42 -07:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal Add the ability for extensions to provide language settings (#10296) 2024-04-08 19:17:12 -04:00
language indent guides: Use primary buffer language to determine tab size (#12506) 2024-05-30 22:55:47 +02:00
language_selector Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
language_tools Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
languages python: Add runnable unittest tasks (#12451) 2024-06-01 18:46:36 +02:00
live_kit_client Hoist nanoid to workspace-level (#11029) 2024-04-25 22:37:40 -04:00
live_kit_server Vendor LiveKit protocol (#11672) 2024-05-10 14:18:40 -04:00
lsp lsp: explicitly drop locks in handle_input (#12276) 2024-05-25 12:25:17 +02:00
markdown Fix some warnings/issues uncovered by the new cfg checking (#12310) 2024-05-26 12:50:20 +02:00
markdown_preview markdown preview: Break up list items into individual blocks (#10852) 2024-04-26 21:34:45 +02:00
media Revert "Revert "Revert dependency updates in #9836 (#10089)"" 2024-04-02 13:12:38 -06:00
menu Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
multi_buffer Improve context expansion (#10957) 2024-05-26 16:30:09 -07:00
node_runtime node_runtime: Restrict the windows dependency to the Windows target (#12284) 2024-05-25 11:04:22 -04:00
notifications Fix mention notifications are not updated after message change and not removed after a message is deleted (#9847) 2024-04-02 20:40:00 -06:00
open_ai Improve model selection in the assistant (#12472) 2024-05-30 12:36:07 +02:00
outline Make autoscroll optional when highlighting editor rows (#11950) 2024-05-16 20:28:17 -07:00
picker add PickerDelegate::selected_index_changed (#12059) 2024-05-20 10:52:04 -04:00
prettier Use language settings' prettier parsers as a fallback for files with no path (#12273) 2024-05-25 10:50:53 +03:00
project Use repository mutex more sparingly. Don't hold it while running git status. (#12489) 2024-05-30 09:37:11 -07:00
project_panel project panel: Copy dragged entry when opt is pressed (#12348) 2024-05-29 12:34:58 +02:00
project_symbols Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
quick_action_bar Do not show tooltip for editor controls if clicked (#10679) 2024-04-17 13:20:47 +02:00
recent_projects collab_ui: remove branch menu popover in favor of opening a modal (#12562) 2024-06-01 18:40:25 +02:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel linux cli (#11585) 2024-05-09 21:08:49 -06:00
rich_text New revision of the Assistant Panel (#10870) 2024-04-23 16:23:26 -07:00
rope Indent guides (#11503) 2024-05-23 15:50:59 +02:00
rpc Reduce DB load upon initial connection due to channel loading (#12500) 2024-05-30 13:02:55 -07:00
rustdoc_to_markdown rustdoc_to_markdown: Don't push blank space after newline (#12504) 2024-05-30 16:38:01 -04:00
search Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
semantic_index Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
settings Use UpdateGlobal accessors in more places (#11925) 2024-05-16 13:30:04 -04:00
snippet html: Add support for autoclosing of tags (#11761) 2024-05-20 17:00:27 +02:00
sqlez Rename RemoteProject -> DevServerProject (#11301) 2024-05-02 11:00:08 -06:00
sqlez_macros Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
story Introduce a new markdown crate (#11556) 2024-05-09 11:03:33 +02:00
storybook Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
sum_tree Introduce Editor::insert_flaps and Editor::remove_flaps (#12096) 2024-05-21 20:23:37 +02:00
supermaven Reduce spamming of inline completion discard events (#11999) 2024-05-17 16:37:17 -04:00
supermaven_api Add xtask for finding crates with missing licenses (#11776) 2024-05-13 18:52:12 -04:00
tab_switcher Introduce recent files ambient context for assistant (#11791) 2024-05-14 13:48:36 +02:00
task task: Add re-run task button to terminal title (#12379) 2024-05-29 11:40:43 +02:00
tasks_ui task: Add re-run task button to terminal title (#12379) 2024-05-29 11:40:43 +02:00
telemetry_events Add telemetry for supermaven (#11821) 2024-05-16 17:18:32 -04:00
terminal Allow UI font weight to be assigned in settings (#12333) 2024-05-26 23:06:58 -06:00
terminal_view Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
text indent guides: Fix tab handling (#12249) 2024-05-24 18:24:03 +02:00
theme Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
theme_importer Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
theme_selector Use UpdateGlobal accessors in more places (#11925) 2024-05-16 13:30:04 -04:00
time_format Inline git blame (#10398) 2024-04-15 14:21:52 +02:00
ui Make slash commands more discoverable (#12480) 2024-05-30 16:45:05 +02:00
ui_text_field Allow UI font weight to be assigned in settings (#12333) 2024-05-26 23:06:58 -06:00
util Add Flatpak build system and support (#12006) 2024-05-27 19:01:20 -06:00
vcs_menu collab_ui: remove branch menu popover in favor of opening a modal (#12562) 2024-06-01 18:40:25 +02:00
vim Fix some edge-cases in vim visual delete (#12131) 2024-05-22 12:54:41 -06:00
welcome Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
workspace Make tests less noisy (#12463) 2024-05-29 18:06:45 -07:00
worktree Simplify and improve concurrency of git status updates (#12513) 2024-05-31 09:10:09 -07:00
zed Fix or promote leftover TODOs and GPUI APIs (#12514) 2024-05-31 18:36:15 -07:00
zed_actions Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00