This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v2-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit c059dd7e60ce66359a78005373dcbcbd3bc9b05b
Author: Joppe Vos <[email protected]>
AuthorDate: Fri May 6 11:03:05 2022 +0200

    Move tests command in new breeze (#23445)
    
    (cherry picked from commit 7ba4e35a9d1b65b4c1a318ba4abdf521f98421a2)
---
 BREEZE.rst                                         |   9 +-
 TESTING.rst                                        |   6 +-
 dev/breeze/src/airflow_breeze/commands/testing.py  |  76 ++++++++++-
 dev/breeze/src/airflow_breeze/shell/enter_shell.py |  11 +-
 .../airflow_breeze/utils/docker_command_utils.py   |  11 +-
 images/breeze/output-commands.svg                  |  55 ++++----
 images/breeze/output-tests.svg                     | 142 +++++++++++++++++++++
 7 files changed, 264 insertions(+), 46 deletions(-)

diff --git a/BREEZE.rst b/BREEZE.rst
index c9f44c90c5..862bfeceea 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -471,11 +471,9 @@ Those are commands mostly used by contributors:
 * Build documentation with ``breeze build-docs`` command
 * Initialize local virtualenv with 
``./scripts/tools/initialize_virtualenv.py`` command
 * Run static checks with autocomplete support ``breeze static-checks`` command
-* Run test specified with ``./breeze-legacy tests`` command
+* Run test specified with ``breeze tests`` command
 * Build CI docker image with ``breeze build-image`` command
 * Cleanup breeze with ``breeze cleanup`` command
-* Run static checks with autocomplete support ``breeze static-checks`` command
-* Run test specified with ``./breeze-legacy tests`` command
 
 Additional management tasks:
 
@@ -487,6 +485,11 @@ Tests
 -----
 
 * Run docker-compose tests with ``breeze docker-compose-tests`` command.
+* Run test specified with ``breeze tests`` command.
+
+.. image:: ./images/breeze/output-tests.svg
+  :width: 100%
+  :alt: Breeze tests
 
 Kubernetes tests
 ----------------
diff --git a/TESTING.rst b/TESTING.rst
index 002c31c0ad..12983726e1 100644
--- a/TESTING.rst
+++ b/TESTING.rst
@@ -168,19 +168,19 @@ to breeze.
 
 .. code-block:: bash
 
-     ./breeze-legacy tests tests/providers/http/hooks/test_http.py 
tests/core/test_core.py --db-reset -- --log-cli-level=DEBUG
+     breeze tests tests/providers/http/hooks/test_http.py 
tests/core/test_core.py --db-reset --log-cli-level=DEBUG
 
 You can run the whole test suite without adding the test target:
 
 .. code-block:: bash
 
-    ./breeze-legacy tests --db-reset
+    breeze tests --db-reset
 
 You can also specify individual tests or a group of tests:
 
 .. code-block:: bash
 
-    ./breeze-legacy tests --db-reset tests/core/test_core.py::TestCore
+    breeze tests --db-reset tests/core/test_core.py::TestCore
 
 
 Running Tests of a specified type from the Host
diff --git a/dev/breeze/src/airflow_breeze/commands/testing.py 
b/dev/breeze/src/airflow_breeze/commands/testing.py
index 456544b57f..e4a1ec1eb5 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing.py
@@ -15,6 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
+import os
 import sys
 from typing import Tuple
 
@@ -22,22 +23,28 @@ import click
 
 from airflow_breeze.build_image.prod.build_prod_params import BuildProdParams
 from airflow_breeze.commands.common_options import (
+    option_db_reset,
     option_dry_run,
     option_github_repository,
     option_image_name,
     option_image_tag,
+    option_integration,
     option_python,
     option_verbose,
 )
+from airflow_breeze.commands.custom_param_types import BetterChoice
 from airflow_breeze.commands.main import main
+from airflow_breeze.global_constants import ALLOWED_TEST_TYPES
+from airflow_breeze.shell.enter_shell import check_docker_is_running, 
check_docker_resources
+from airflow_breeze.shell.shell_params import ShellParams
 from airflow_breeze.utils.console import get_console
+from airflow_breeze.utils.docker_command_utils import 
construct_env_variables_docker_compose_command
 from airflow_breeze.utils.run_tests import run_docker_compose_tests
+from airflow_breeze.utils.run_utils import run_command
 
 TESTING_COMMANDS = {
     "name": "Testing",
-    "commands": [
-        "docker-compose-tests",
-    ],
+    "commands": ["docker-compose-tests", "tests"],
 }
 
 TESTING_PARAMETERS = {
@@ -51,6 +58,16 @@ TESTING_PARAMETERS = {
             ],
         }
     ],
+    "breeze tests": [
+        {
+            "name": "Basic flag for tests command",
+            "options": [
+                "--integration",
+                "--test-type",
+                "--db-reset",
+            ],
+        }
+    ],
 }
 
 
@@ -91,3 +108,56 @@ def docker_compose_tests(
         extra_pytest_args=extra_pytest_args,
     )
     sys.exit(return_code)
+
+
[email protected](
+    name='tests',
+    help="Run the specified unit test targets. Multiple targets may be 
specified separated by spaces.",
+    context_settings=dict(
+        ignore_unknown_options=True,
+        allow_extra_args=True,
+    ),
+)
+@option_dry_run
+@option_verbose
+@option_integration
[email protected]('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
[email protected](
+    "-tt",
+    "--test-type",
+    help="Type of test to run.",
+    default="All",
+    type=BetterChoice(ALLOWED_TEST_TYPES),
+)
+@option_db_reset
+def tests(
+    dry_run: bool,
+    verbose: bool,
+    integration: Tuple,
+    extra_pytest_args: Tuple,
+    test_type: str,
+    db_reset: bool,
+):
+    os.environ["RUN_TESTS"] = "true"
+    if test_type:
+        os.environ["TEST_TYPE"] = test_type
+    if integration:
+        if "trino" in integration:
+            integration = integration + ("kerberos",)
+        os.environ["LIST_OF_INTEGRATION_TESTS_TO_RUN"] = ' 
'.join(list(integration))
+    if db_reset:
+        os.environ["DB_RESET"] = "true"
+
+    exec_shell_params = ShellParams(verbose=verbose, dry_run=dry_run)
+    env_variables = 
construct_env_variables_docker_compose_command(exec_shell_params)
+    check_docker_is_running(verbose)
+    check_docker_resources(exec_shell_params.airflow_image_name, 
verbose=verbose, dry_run=dry_run)
+
+    cmd = ['docker-compose', 'run', '--service-ports', '--rm', 'airflow']
+    cmd.extend(list(extra_pytest_args))
+    run_command(
+        cmd,
+        verbose=verbose,
+        dry_run=dry_run,
+        env=env_variables,
+    )
diff --git a/dev/breeze/src/airflow_breeze/shell/enter_shell.py 
b/dev/breeze/src/airflow_breeze/shell/enter_shell.py
index 951d36220a..e73153b60e 100644
--- a/dev/breeze/src/airflow_breeze/shell/enter_shell.py
+++ b/dev/breeze/src/airflow_breeze/shell/enter_shell.py
@@ -23,8 +23,10 @@ from airflow_breeze.shell.shell_params import ShellParams
 from airflow_breeze.utils.cache import read_from_cache_file
 from airflow_breeze.utils.console import get_console
 from airflow_breeze.utils.docker_command_utils import (
+    check_docker_compose_version,
     check_docker_is_running,
     check_docker_resources,
+    check_docker_version,
     construct_env_variables_docker_compose_command,
 )
 from airflow_breeze.utils.rebuild_image_if_needed import 
rebuild_ci_image_if_needed
@@ -46,12 +48,9 @@ def enter_shell(**kwargs) -> 
Union[subprocess.CompletedProcess, subprocess.Calle
     """
     verbose = kwargs['verbose']
     dry_run = kwargs['dry_run']
-    if not check_docker_is_running(verbose):
-        get_console().print(
-            '[error]Docker is not running.[/]\n'
-            '[warning]Please make sure Docker is installed and running.[/]'
-        )
-        sys.exit(1)
+    check_docker_is_running(verbose)
+    check_docker_version(verbose)
+    check_docker_compose_version(verbose)
     if read_from_cache_file('suppress_asciiart') is None:
         get_console().print(ASCIIART, style=ASCIIART_STYLE)
     if read_from_cache_file('suppress_cheatsheet') is None:
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py 
b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index c7c54630fa..9d30a86345 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -18,6 +18,7 @@
 import os
 import re
 import subprocess
+import sys
 from random import randint
 from typing import Dict, List, Tuple, Union
 
@@ -174,11 +175,10 @@ def compare_version(current_version: str, min_version: 
str) -> bool:
     return version.parse(current_version) >= version.parse(min_version)
 
 
-def check_docker_is_running(verbose: bool) -> bool:
+def check_docker_is_running(verbose: bool):
     """
     Checks if docker is running. Suppressed Dockers stdout and stderr output.
     :param verbose: print commands when running
-    :return: False if docker is not running.
     """
     response = run_command(
         ["docker", "info"],
@@ -190,8 +190,11 @@ def check_docker_is_running(verbose: bool) -> bool:
         check=False,
     )
     if response.returncode != 0:
-        return False
-    return True
+        get_console().print(
+            '[error]Docker is not running.[/]\n'
+            '[warning]Please make sure Docker is installed and running.[/]'
+        )
+        sys.exit(1)
 
 
 def check_docker_version(verbose: bool):
diff --git a/images/breeze/output-commands.svg 
b/images/breeze/output-commands.svg
index 66b560b308..59d7de7f66 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -1,4 +1,4 @@
-<svg width="1720.0" height="1858" viewBox="0 0 1720.0 1858"
+<svg width="1720.0" height="1880" viewBox="0 0 1720.0 1880"
      xmlns="http://www.w3.org/2000/svg";>
     <style>
         @font-face {
@@ -17,30 +17,30 @@
             font-style: bold;
             font-weight: 700;
         }
-        .rich-svg-3448604350-terminal-wrapper span {
+        .rich-svg-1735457778-terminal-wrapper span {
             display: inline-block;
             white-space: pre;
             vertical-align: top;
             font-size: 18px;
             font-family:'Rich Fira Code','Cascadia Code',Monaco,Menlo,'DejaVu 
Sans Mono',consolas,'Courier New',monospace;
         }
-        .rich-svg-3448604350-terminal-wrapper a {
+        .rich-svg-1735457778-terminal-wrapper a {
             text-decoration: none;
             color: inherit;
         }
-        .rich-svg-3448604350-terminal-body .blink {
-           animation: rich-svg-3448604350-blinker 1s infinite;
+        .rich-svg-1735457778-terminal-body .blink {
+           animation: rich-svg-1735457778-blinker 1s infinite;
         }
-        @keyframes rich-svg-3448604350-blinker {
+        @keyframes rich-svg-1735457778-blinker {
             from { opacity: 1.0; }
             50% { opacity: 0.3; }
             to { opacity: 1.0; }
         }
-        .rich-svg-3448604350-terminal-wrapper {
+        .rich-svg-1735457778-terminal-wrapper {
             padding: 140px;
             padding-top: 100px;
         }
-        .rich-svg-3448604350-terminal {
+        .rich-svg-1735457778-terminal {
             position: relative;
             display: flex;
             flex-direction: column;
@@ -49,7 +49,7 @@
             border-radius: 14px;
             box-shadow: 0 0 0 1px #484848;
         }
-        .rich-svg-3448604350-terminal:after {
+        .rich-svg-1735457778-terminal:after {
             position: absolute;
             width: 100%;
             height: 100%;
@@ -60,7 +60,7 @@
             transform: rotate(-4.5deg);
             z-index: -1;
         }
-        .rich-svg-3448604350-terminal-header {
+        .rich-svg-1735457778-terminal-header {
             position: relative;
             width: 100%;
             background-color: #2e2e2e;
@@ -72,7 +72,7 @@
             box-shadow: inset 0px -1px 0px 0px #4e4e4e,
                         inset 0px -4px 8px 0px #1a1a1a;
         }
-        .rich-svg-3448604350-terminal-title-tab {
+        .rich-svg-1735457778-terminal-title-tab {
             display: inline-block;
             margin-top: 14px;
             margin-left: 124px;
@@ -85,36 +85,36 @@
                         inset 1px 0px 0px 0px #4e4e4e,
                         inset -1px 0px 0px 0px #4e4e4e;
         }
-        .rich-svg-3448604350-terminal-traffic-lights {
+        .rich-svg-1735457778-terminal-traffic-lights {
             position: absolute;
             top: 24px;
             left: 20px;
         }
-        .rich-svg-3448604350-terminal-body {
+        .rich-svg-1735457778-terminal-body {
             line-height: 22px;
             padding: 14px;
         }
-        .rich-svg-3448604350-terminal-body .r1 {color: #f2f2f2; 
text-decoration-color: #f2f2f2;background-color: #0c0c0c;}
-.rich-svg-3448604350-terminal-body .r2 {font-weight: bold;color: #f2f2f2; 
text-decoration-color: #f2f2f2;;background-color: #0c0c0c;}
-.rich-svg-3448604350-terminal-body .r3 {color: #e5e510; text-decoration-color: 
#e5e510; font-weight: bold;background-color: #0c0c0c;}
-.rich-svg-3448604350-terminal-body .r4 {color: #7f7f7f; text-decoration-color: 
#7f7f7f;color: #f2f2f2; text-decoration-color: #f2f2f2;;background-color: 
#0c0c0c;}
-.rich-svg-3448604350-terminal-body .r5 {color: #11a8cd; text-decoration-color: 
#11a8cd; font-weight: bold;background-color: #0c0c0c;}
-.rich-svg-3448604350-terminal-body .r6 {color: #0dbc79; text-decoration-color: 
#0dbc79; font-weight: bold;background-color: #0c0c0c;}
-.rich-svg-3448604350-terminal-body .r7 {color: #78780e; text-decoration-color: 
#78780e;background-color: #0c0c0c;}
+        .rich-svg-1735457778-terminal-body .r1 {color: #f2f2f2; 
text-decoration-color: #f2f2f2;background-color: #0c0c0c;}
+.rich-svg-1735457778-terminal-body .r2 {font-weight: bold;color: #f2f2f2; 
text-decoration-color: #f2f2f2;;background-color: #0c0c0c;}
+.rich-svg-1735457778-terminal-body .r3 {color: #e5e510; text-decoration-color: 
#e5e510; font-weight: bold;background-color: #0c0c0c;}
+.rich-svg-1735457778-terminal-body .r4 {color: #7f7f7f; text-decoration-color: 
#7f7f7f;color: #f2f2f2; text-decoration-color: #f2f2f2;;background-color: 
#0c0c0c;}
+.rich-svg-1735457778-terminal-body .r5 {color: #11a8cd; text-decoration-color: 
#11a8cd; font-weight: bold;background-color: #0c0c0c;}
+.rich-svg-1735457778-terminal-body .r6 {color: #0dbc79; text-decoration-color: 
#0dbc79; font-weight: bold;background-color: #0c0c0c;}
+.rich-svg-1735457778-terminal-body .r7 {color: #78780e; text-decoration-color: 
#78780e;background-color: #0c0c0c;}
     </style>
     <foreignObject x="0" y="0" width="100%" height="100%">
         <body xmlns="http://www.w3.org/1999/xhtml";>
-            <div class="rich-svg-3448604350-terminal-wrapper">
-                <div class="rich-svg-3448604350-terminal">
-                    <div class="rich-svg-3448604350-terminal-header">
-                        <svg 
class="rich-svg-3448604350-terminal-traffic-lights" width="90" height="21" 
viewBox="0 0 90 21" xmlns="http://www.w3.org/2000/svg";>
+            <div class="rich-svg-1735457778-terminal-wrapper">
+                <div class="rich-svg-1735457778-terminal">
+                    <div class="rich-svg-1735457778-terminal-header">
+                        <svg 
class="rich-svg-1735457778-terminal-traffic-lights" width="90" height="21" 
viewBox="0 0 90 21" xmlns="http://www.w3.org/2000/svg";>
                             <circle cx="14" cy="8" r="8" fill="#ff6159"/>
                             <circle cx="38" cy="8" r="8" fill="#ffbd2e"/>
                             <circle cx="62" cy="8" r="8" fill="#28c941"/>
                         </svg>
-                        <div 
class="rich-svg-3448604350-terminal-title-tab">Breeze commands</div>
+                        <div 
class="rich-svg-1735457778-terminal-title-tab">Breeze commands</div>
                     </div>
-                    <div class="rich-svg-3448604350-terminal-body">
+                    <div class="rich-svg-1735457778-terminal-body">
                         <div><span class="r2">                                 
                                                                                
       </span></div>
 <div><span class="r2"> </span><span class="r3">Usage: </span><span 
class="r2">breeze [OPTIONS] COMMAND [ARGS]...                                   
                                           </span></div>
 <div><span class="r2">                                                         
                                                               </span></div>
@@ -153,7 +153,8 @@
 <div><span class="r4">│</span><span class="r1"> </span><span class="r5"> 
static-checks </span><span class="r1"> </span><span class="r1">Run static 
checks.                                                                     
</span><span class="r1"> </span><span class="r1">            </span><span 
class="r1"> </span><span class="r4">│</span></div>
 <div><span 
class="r4">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span></div>
 <div><span class="r4">╭─ Testing 
────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</span></div>
-<div><span class="r4">│</span><span class="r1"> </span><span class="r5"> 
docker-compose-tests </span><span class="r1"> </span><span class="r1">Run 
docker-compose tests.</span><span class="r1"> </span><span class="r1">          
                                                         </span><span 
class="r1"> </span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1"> </span><span class="r5"> 
docker-compose-tests </span><span class="r1"> </span><span class="r1">Run 
docker-compose tests.                                                           
       </span><span class="r1"> </span><span class="r1"> </span><span 
class="r1"> </span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1"> </span><span class="r5"> tests 
               </span><span class="r1"> </span><span class="r1">Run the 
specified unit test targets. Multiple targets may be specified separated by 
spaces.</span><span class="r1"> </span><span class="r1"> </span><span 
class="r1"> </span><span class="r4">│</span></div>
 <div><span 
class="r4">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span></div>
 <div><span class="r4">╭─ Configuration &amp; maintenance 
────────────────────────────────────────────────────────────────────────────────────────╮</span></div>
 <div><span class="r4">│</span><span class="r1"> </span><span class="r5"> 
cleanup            </span><span class="r1"> </span><span class="r1">Cleans the 
cache of parameters, docker cache and optionally - currently downloaded 
images.</span><span class="r1"> </span><span class="r1">    </span><span 
class="r1"> </span><span class="r4">│</span></div>
diff --git a/images/breeze/output-tests.svg b/images/breeze/output-tests.svg
new file mode 100644
index 0000000000..ca27be92e1
--- /dev/null
+++ b/images/breeze/output-tests.svg
@@ -0,0 +1,142 @@
+<svg width="1720.0" height="758" viewBox="0 0 1720.0 758"
+     xmlns="http://www.w3.org/2000/svg";>
+    <style>
+        @font-face {
+            font-family: "Rich Fira Code";
+            src: local("FiraCode-Regular"),
+                 
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2";)
 format("woff2"),
+                 
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff";)
 format("woff");
+            font-style: normal;
+            font-weight: 400;
+        }
+        @font-face {
+            font-family: "Rich Fira Code";
+            src: local("FiraCode-Bold"),
+                 
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2";)
 format("woff2"),
+                 
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff";)
 format("woff");
+            font-style: bold;
+            font-weight: 700;
+        }
+        .rich-svg-356577593-terminal-wrapper span {
+            display: inline-block;
+            white-space: pre;
+            vertical-align: top;
+            font-size: 18px;
+            font-family:'Rich Fira Code','Cascadia Code',Monaco,Menlo,'DejaVu 
Sans Mono',consolas,'Courier New',monospace;
+        }
+        .rich-svg-356577593-terminal-wrapper a {
+            text-decoration: none;
+            color: inherit;
+        }
+        .rich-svg-356577593-terminal-body .blink {
+           animation: rich-svg-356577593-blinker 1s infinite;
+        }
+        @keyframes rich-svg-356577593-blinker {
+            from { opacity: 1.0; }
+            50% { opacity: 0.3; }
+            to { opacity: 1.0; }
+        }
+        .rich-svg-356577593-terminal-wrapper {
+            padding: 140px;
+            padding-top: 100px;
+        }
+        .rich-svg-356577593-terminal {
+            position: relative;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            background-color: #0c0c0c;
+            border-radius: 14px;
+            box-shadow: 0 0 0 1px #484848;
+        }
+        .rich-svg-356577593-terminal:after {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+            content: '';
+            border-radius: 14px;
+            background: rgb(71,77,102);
+            background: linear-gradient(90deg, #804D69 0%, #4E4B89 100%);
+            transform: rotate(-4.5deg);
+            z-index: -1;
+        }
+        .rich-svg-356577593-terminal-header {
+            position: relative;
+            width: 100%;
+            background-color: #2e2e2e;
+            margin-bottom: 12px;
+            font-weight: bold;
+            border-radius: 14px 14px 0 0;
+            color: #f2f2f2;
+            font-size: 18px;
+            box-shadow: inset 0px -1px 0px 0px #4e4e4e,
+                        inset 0px -4px 8px 0px #1a1a1a;
+        }
+        .rich-svg-356577593-terminal-title-tab {
+            display: inline-block;
+            margin-top: 14px;
+            margin-left: 124px;
+            font-family: sans-serif;
+            padding: 14px 28px;
+            border-radius: 6px 6px 0 0;
+            background-color: #0c0c0c;
+            box-shadow: inset 0px 1px 0px 0px #4e4e4e,
+                        0px -4px 4px 0px #1e1e1e,
+                        inset 1px 0px 0px 0px #4e4e4e,
+                        inset -1px 0px 0px 0px #4e4e4e;
+        }
+        .rich-svg-356577593-terminal-traffic-lights {
+            position: absolute;
+            top: 24px;
+            left: 20px;
+        }
+        .rich-svg-356577593-terminal-body {
+            line-height: 22px;
+            padding: 14px;
+        }
+        .rich-svg-356577593-terminal-body .r1 {color: #f2f2f2; 
text-decoration-color: #f2f2f2;background-color: #0c0c0c;}
+.rich-svg-356577593-terminal-body .r2 {font-weight: bold;color: #f2f2f2; 
text-decoration-color: #f2f2f2;;background-color: #0c0c0c;}
+.rich-svg-356577593-terminal-body .r3 {color: #e5e510; text-decoration-color: 
#e5e510; font-weight: bold;background-color: #0c0c0c;}
+.rich-svg-356577593-terminal-body .r4 {color: #7f7f7f; text-decoration-color: 
#7f7f7f;color: #f2f2f2; text-decoration-color: #f2f2f2;;background-color: 
#0c0c0c;}
+.rich-svg-356577593-terminal-body .r5 {color: #11a8cd; text-decoration-color: 
#11a8cd; font-weight: bold;background-color: #0c0c0c;}
+.rich-svg-356577593-terminal-body .r6 {color: #78780e; text-decoration-color: 
#78780e;background-color: #0c0c0c;}
+.rich-svg-356577593-terminal-body .r7 {color: #0dbc79; text-decoration-color: 
#0dbc79; font-weight: bold;background-color: #0c0c0c;}
+    </style>
+    <foreignObject x="0" y="0" width="100%" height="100%">
+        <body xmlns="http://www.w3.org/1999/xhtml";>
+            <div class="rich-svg-356577593-terminal-wrapper">
+                <div class="rich-svg-356577593-terminal">
+                    <div class="rich-svg-356577593-terminal-header">
+                        <svg 
class="rich-svg-356577593-terminal-traffic-lights" width="90" height="21" 
viewBox="0 0 90 21" xmlns="http://www.w3.org/2000/svg";>
+                            <circle cx="14" cy="8" r="8" fill="#ff6159"/>
+                            <circle cx="38" cy="8" r="8" fill="#ffbd2e"/>
+                            <circle cx="62" cy="8" r="8" fill="#28c941"/>
+                        </svg>
+                        <div 
class="rich-svg-356577593-terminal-title-tab">Command: tests</div>
+                    </div>
+                    <div class="rich-svg-356577593-terminal-body">
+                        <div><span class="r2">                                 
                                                                                
       </span></div>
+<div><span class="r2"> </span><span class="r3">Usage: </span><span 
class="r2">breeze tests [OPTIONS] [EXTRA_PYTEST_ARGS]...                        
                                           </span></div>
+<div><span class="r2">                                                         
                                                               </span></div>
+<div><span class="r1"> </span><span class="r1">Run the specified unit test 
targets. Multiple targets may be specified separated by spaces.                 
          </span><span class="r1"> </span></div>
+<div><span class="r1">                                                         
                                                               </span></div>
+<div><span class="r4">╭─ Basic flag for tests command 
───────────────────────────────────────────────────────────────────────────────────────╮</span></div>
+<div><span class="r4">│</span><span class="r1">  </span><span 
class="r5">--integration</span><span class="r1">  </span><span class="r1">   
</span><span class="r1">  </span><span class="r1">Integration(s) to enable when 
running (can be more than one).                                 </span><span 
class="r1">  </span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1">                      
</span><span class="r6">(cassandra | kerberos | mongo | openldap | pinot | 
rabbitmq | redis | statsd | trino | all)</span><span class="r1">   </span><span 
class="r1">  </span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1">  </span><span 
class="r5">--test-type</span><span class="r1">    </span><span 
class="r7">-tt</span><span class="r1">  </span><span class="r1">Type of test to 
run.                                                                          
</span><span class="r1">  </span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1">                      
</span><span class="r6">(All | Always | Core | Providers | API | CLI | 
Integration | Other | WWW | Postgres | MySQL | </span><span class="r1">  
</span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1">                      
</span><span class="r6">Helm | Quarantined)                                     
                                      </span><span class="r1">  </span><span 
class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1">  </span><span 
class="r5">--db-reset</span><span class="r1">     </span><span 
class="r7">-d</span><span class="r1">   </span><span class="r1">Reset DB when 
entering the container.                                                         
</span><span class="r1">  </span><span class="r4">│</span></div>
+<div><span 
class="r4">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span></div>
+<div><span class="r4">╭─ Options 
────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</span></div>
+<div><span class="r4">│</span><span class="r1">  </span><span 
class="r5">--dry-run</span><span class="r1">  </span><span 
class="r7">-D</span><span class="r1">  </span><span class="r1">If dry-run is 
set, commands are only printed, not executed.                                   
     </span><span class="r1">  </span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1">  </span><span 
class="r5">--verbose</span><span class="r1">  </span><span 
class="r7">-v</span><span class="r1">  </span><span class="r1">Print verbose 
information about performed steps.                                              
     </span><span class="r1">  </span><span class="r4">│</span></div>
+<div><span class="r4">│</span><span class="r1">  </span><span 
class="r5">--help</span><span class="r1">     </span><span 
class="r7">-h</span><span class="r1">  </span><span class="r1">Show this 
message and exit.                                                               
         </span><span class="r1">  </span><span class="r4">│</span></div>
+<div><span 
class="r4">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</span></div>
+<div><span class="r1"></span><span class="r1">                                 
                                                                                
       </span></div>
+                    </div>
+                </div>
+            </div>
+        </body>
+    </foreignObject>
+</svg>

Reply via email to