From fe936981f8c26ad72c880c749675d313703721e1 Mon Sep 17 00:00:00 2001 From: "Xavier G." Date: Fri, 22 Nov 2024 18:00:21 +0100 Subject: [PATCH] Introduce snapshot-based tests. --- examples/moulti-python-checks.bash | 3 + pyproject.toml | 11 + requirements.txt | 5 + tests/__init__.py | 7 + .../test_buttonquestion.svg | 220 +++++++++ .../test_diff/test_diff_no_delta.svg | 212 +++++++++ .../test_diff/test_diff_with_delta.svg | 217 +++++++++ .../test_display_steps_bottom_down.svg | 204 ++++++++ .../test_display_steps_bottom_up.svg | 204 ++++++++ .../test_display_steps_top_down.svg | 204 ++++++++ .../test_display_steps_top_up.svg | 204 ++++++++ .../test_divider/test_divider.1.svg | 205 +++++++++ .../test_divider/test_divider.2.svg | 201 ++++++++ .../test_divider/test_divider.svg | 205 +++++++++ .../test_fill_step/test_fill_step.svg | 204 ++++++++ .../test_first_steps/test_first_steps.1.svg | 204 ++++++++ .../test_first_steps/test_first_steps.10.svg | 219 +++++++++ .../test_first_steps/test_first_steps.11.svg | 218 +++++++++ .../test_first_steps/test_first_steps.2.svg | 210 +++++++++ .../test_first_steps/test_first_steps.3.svg | 210 +++++++++ .../test_first_steps/test_first_steps.4.svg | 210 +++++++++ .../test_first_steps/test_first_steps.5.svg | 215 +++++++++ .../test_first_steps/test_first_steps.6.svg | 216 +++++++++ .../test_first_steps/test_first_steps.7.svg | 217 +++++++++ .../test_first_steps/test_first_steps.8.svg | 218 +++++++++ .../test_first_steps/test_first_steps.9.svg | 219 +++++++++ .../test_first_steps/test_first_steps.svg | 201 ++++++++ .../test_help_dialog/test_help_dialog.svg | 208 +++++++++ .../test_inputquestion/test_inputquestion.svg | 208 +++++++++ tests/__snapshots__/test_load/test_load.svg | 222 +++++++++ .../test_maximize_large_step.svg | 204 ++++++++ .../test_maximize_small_step.svg | 203 ++++++++ .../test_maximize/test_search_maximize.svg | 209 +++++++++ .../test_maximize/test_search_unmaximize.svg | 209 +++++++++ .../test_unmaximize_large_step.svg | 205 +++++++++ .../test_unmaximize_small_step.svg | 209 +++++++++ .../test_progressbar/test_progressbar.1.svg | 203 ++++++++ .../test_progressbar/test_progressbar.2.svg | 202 ++++++++ .../test_progressbar/test_progressbar.3.svg | 203 ++++++++ .../test_progressbar/test_progressbar.svg | 203 ++++++++ .../test_question/test_question.svg | 214 +++++++++ .../test_quit/test_quit_default_ask.svg | 209 +++++++++ .../test_quit/test_quit_default_quit.svg | 201 ++++++++ .../test_quit/test_quit_running_ask.svg | 212 +++++++++ .../test_quit/test_quit_running_leave.svg | 201 ++++++++ .../test_quit/test_quit_running_terminate.svg | 201 ++++++++ .../test_run_output/test_custom_step.svg | 204 ++++++++ .../test_run_output/test_discard_output.svg | 201 ++++++++ .../test_run_output/test_harvest_output.svg | 204 ++++++++ .../test_scrolling/test_auto_scrolling.svg | 208 +++++++++ .../test_scrolling/test_lock_scroll.1.svg | 206 +++++++++ .../test_scrolling/test_lock_scroll.svg | 206 +++++++++ .../test_programmatic_scrolling.1.svg | 206 +++++++++ .../test_programmatic_scrolling.2.svg | 207 +++++++++ .../test_programmatic_scrolling.3.svg | 206 +++++++++ .../test_programmatic_scrolling.4.svg | 206 +++++++++ .../test_programmatic_scrolling.5.svg | 206 +++++++++ .../test_programmatic_scrolling.6.svg | 206 +++++++++ .../test_programmatic_scrolling.svg | 206 +++++++++ .../test_simple_start/test_start.svg | 201 ++++++++ .../test_step_classes/test_step_classes.svg | 208 +++++++++ .../test_plain_pattern_case_insensitive.svg | 208 +++++++++ .../test_plain_pattern_case_sensitive.1.svg | 208 +++++++++ .../test_plain_pattern_case_sensitive.svg | 208 +++++++++ .../test_regex_pattern_case_insensitive.svg | 208 +++++++++ .../test_regex_pattern_case_sensitive.svg | 208 +++++++++ .../test_textsearch/test_search_bar.1.svg | 204 ++++++++ .../test_textsearch/test_search_bar.2.svg | 204 ++++++++ .../test_textsearch/test_search_bar.3.svg | 204 ++++++++ .../test_textsearch/test_search_bar.svg | 204 ++++++++ tests/common.py | 78 ++++ tests/data/linux-kernel-ba89966c1984.patch | 435 ++++++++++++++++++ .../social-preview/0-instance.properties.json | 9 + .../data/social-preview/1-title.contents.log | 7 + .../social-preview/1-title.properties.json | 14 + .../social-preview/2-step_ping.contents.log | 6 + .../2-step_ping.properties.json | 14 + .../social-preview/3-collapsed.contents.log | 1 + .../3-collapsed.properties.json | 14 + .../data/social-preview/4-script.contents.log | 13 + .../social-preview/4-script.properties.json | 14 + tests/scripts/buttonquestion.bash | 13 + tests/scripts/diff.bash | 6 + tests/scripts/display-steps.bash | 3 + tests/scripts/divider.bash | 11 + tests/scripts/fill-step.bash | 17 + tests/scripts/first-steps.bash | 41 ++ tests/scripts/inputquestion.bash | 9 + .../manual-scrolling-through-steps.bash | 70 +++ tests/scripts/maximize.bash | 10 + .../scripts/prog-scrolling-through-steps.bash | 97 ++++ tests/scripts/progressbar.bash | 11 + tests/scripts/question.bash | 12 + tests/scripts/run-output.bash | 18 + tests/scripts/scrolling-inside-steps.bash | 16 + tests/scripts/sleep.bash | 13 + tests/scripts/step-classes.bash | 8 + tests/scripts/text-search.bash | 68 +++ tests/styles/customstate.css | 6 + tests/test_buttonquestion.py | 13 + tests/test_diff.py | 13 + tests/test_display_steps.py | 18 + tests/test_divider.py | 8 + tests/test_fill_step.py | 5 + tests/test_first_steps.py | 8 + tests/test_help_dialog.py | 5 + tests/test_inputquestion.py | 12 + tests/test_load.py | 32 ++ tests/test_maximize.py | 39 ++ tests/test_progressbar.py | 8 + tests/test_question.py | 12 + tests/test_quit.py | 49 ++ tests/test_run_output.py | 18 + tests/test_scrolling.py | 25 + tests/test_simple_start.py | 5 + tests/test_step_classes.py | 9 + tests/test_textsearch.py | 24 + 117 files changed, 15063 insertions(+) create mode 100644 tests/__init__.py create mode 100644 tests/__snapshots__/test_buttonquestion/test_buttonquestion.svg create mode 100644 tests/__snapshots__/test_diff/test_diff_no_delta.svg create mode 100644 tests/__snapshots__/test_diff/test_diff_with_delta.svg create mode 100644 tests/__snapshots__/test_display_steps/test_display_steps_bottom_down.svg create mode 100644 tests/__snapshots__/test_display_steps/test_display_steps_bottom_up.svg create mode 100644 tests/__snapshots__/test_display_steps/test_display_steps_top_down.svg create mode 100644 tests/__snapshots__/test_display_steps/test_display_steps_top_up.svg create mode 100644 tests/__snapshots__/test_divider/test_divider.1.svg create mode 100644 tests/__snapshots__/test_divider/test_divider.2.svg create mode 100644 tests/__snapshots__/test_divider/test_divider.svg create mode 100644 tests/__snapshots__/test_fill_step/test_fill_step.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.1.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.10.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.11.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.2.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.3.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.4.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.5.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.6.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.7.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.8.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.9.svg create mode 100644 tests/__snapshots__/test_first_steps/test_first_steps.svg create mode 100644 tests/__snapshots__/test_help_dialog/test_help_dialog.svg create mode 100644 tests/__snapshots__/test_inputquestion/test_inputquestion.svg create mode 100644 tests/__snapshots__/test_load/test_load.svg create mode 100644 tests/__snapshots__/test_maximize/test_maximize_large_step.svg create mode 100644 tests/__snapshots__/test_maximize/test_maximize_small_step.svg create mode 100644 tests/__snapshots__/test_maximize/test_search_maximize.svg create mode 100644 tests/__snapshots__/test_maximize/test_search_unmaximize.svg create mode 100644 tests/__snapshots__/test_maximize/test_unmaximize_large_step.svg create mode 100644 tests/__snapshots__/test_maximize/test_unmaximize_small_step.svg create mode 100644 tests/__snapshots__/test_progressbar/test_progressbar.1.svg create mode 100644 tests/__snapshots__/test_progressbar/test_progressbar.2.svg create mode 100644 tests/__snapshots__/test_progressbar/test_progressbar.3.svg create mode 100644 tests/__snapshots__/test_progressbar/test_progressbar.svg create mode 100644 tests/__snapshots__/test_question/test_question.svg create mode 100644 tests/__snapshots__/test_quit/test_quit_default_ask.svg create mode 100644 tests/__snapshots__/test_quit/test_quit_default_quit.svg create mode 100644 tests/__snapshots__/test_quit/test_quit_running_ask.svg create mode 100644 tests/__snapshots__/test_quit/test_quit_running_leave.svg create mode 100644 tests/__snapshots__/test_quit/test_quit_running_terminate.svg create mode 100644 tests/__snapshots__/test_run_output/test_custom_step.svg create mode 100644 tests/__snapshots__/test_run_output/test_discard_output.svg create mode 100644 tests/__snapshots__/test_run_output/test_harvest_output.svg create mode 100644 tests/__snapshots__/test_scrolling/test_auto_scrolling.svg create mode 100644 tests/__snapshots__/test_scrolling/test_lock_scroll.1.svg create mode 100644 tests/__snapshots__/test_scrolling/test_lock_scroll.svg create mode 100644 tests/__snapshots__/test_scrolling/test_programmatic_scrolling.1.svg create mode 100644 tests/__snapshots__/test_scrolling/test_programmatic_scrolling.2.svg create mode 100644 tests/__snapshots__/test_scrolling/test_programmatic_scrolling.3.svg create mode 100644 tests/__snapshots__/test_scrolling/test_programmatic_scrolling.4.svg create mode 100644 tests/__snapshots__/test_scrolling/test_programmatic_scrolling.5.svg create mode 100644 tests/__snapshots__/test_scrolling/test_programmatic_scrolling.6.svg create mode 100644 tests/__snapshots__/test_scrolling/test_programmatic_scrolling.svg create mode 100644 tests/__snapshots__/test_simple_start/test_start.svg create mode 100644 tests/__snapshots__/test_step_classes/test_step_classes.svg create mode 100644 tests/__snapshots__/test_textsearch/test_plain_pattern_case_insensitive.svg create mode 100644 tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.1.svg create mode 100644 tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.svg create mode 100644 tests/__snapshots__/test_textsearch/test_regex_pattern_case_insensitive.svg create mode 100644 tests/__snapshots__/test_textsearch/test_regex_pattern_case_sensitive.svg create mode 100644 tests/__snapshots__/test_textsearch/test_search_bar.1.svg create mode 100644 tests/__snapshots__/test_textsearch/test_search_bar.2.svg create mode 100644 tests/__snapshots__/test_textsearch/test_search_bar.3.svg create mode 100644 tests/__snapshots__/test_textsearch/test_search_bar.svg create mode 100644 tests/common.py create mode 100644 tests/data/linux-kernel-ba89966c1984.patch create mode 100644 tests/data/social-preview/0-instance.properties.json create mode 100644 tests/data/social-preview/1-title.contents.log create mode 100644 tests/data/social-preview/1-title.properties.json create mode 100644 tests/data/social-preview/2-step_ping.contents.log create mode 100644 tests/data/social-preview/2-step_ping.properties.json create mode 100644 tests/data/social-preview/3-collapsed.contents.log create mode 100644 tests/data/social-preview/3-collapsed.properties.json create mode 100644 tests/data/social-preview/4-script.contents.log create mode 100644 tests/data/social-preview/4-script.properties.json create mode 100755 tests/scripts/buttonquestion.bash create mode 100755 tests/scripts/diff.bash create mode 100755 tests/scripts/display-steps.bash create mode 100755 tests/scripts/divider.bash create mode 100755 tests/scripts/fill-step.bash create mode 100755 tests/scripts/first-steps.bash create mode 100755 tests/scripts/inputquestion.bash create mode 100755 tests/scripts/manual-scrolling-through-steps.bash create mode 100755 tests/scripts/maximize.bash create mode 100755 tests/scripts/prog-scrolling-through-steps.bash create mode 100755 tests/scripts/progressbar.bash create mode 100755 tests/scripts/question.bash create mode 100755 tests/scripts/run-output.bash create mode 100755 tests/scripts/scrolling-inside-steps.bash create mode 100755 tests/scripts/sleep.bash create mode 100755 tests/scripts/step-classes.bash create mode 100755 tests/scripts/text-search.bash create mode 100644 tests/styles/customstate.css create mode 100644 tests/test_buttonquestion.py create mode 100644 tests/test_diff.py create mode 100644 tests/test_display_steps.py create mode 100644 tests/test_divider.py create mode 100644 tests/test_fill_step.py create mode 100644 tests/test_first_steps.py create mode 100644 tests/test_help_dialog.py create mode 100644 tests/test_inputquestion.py create mode 100644 tests/test_load.py create mode 100644 tests/test_maximize.py create mode 100644 tests/test_progressbar.py create mode 100644 tests/test_question.py create mode 100644 tests/test_quit.py create mode 100644 tests/test_run_output.py create mode 100644 tests/test_scrolling.py create mode 100644 tests/test_simple_start.py create mode 100644 tests/test_step_classes.py create mode 100644 tests/test_textsearch.py diff --git a/examples/moulti-python-checks.bash b/examples/moulti-python-checks.bash index 0b1bd7f..af65bb8 100755 --- a/examples/moulti-python-checks.bash +++ b/examples/moulti-python-checks.bash @@ -12,8 +12,11 @@ moulti step add versions --title='Versions' --bottom-text=' ' mypy --version echo -- pylint --version + echo -- + pytest --version } 2>&1 | moulti pass versions moulti_exec ruff check setup.py src moulti_exec mypy src moulti_exec pylint src +moulti_exec pytest diff --git a/pyproject.toml b/pyproject.toml index dbf6368..3d835cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,3 +30,14 @@ disable = [ "too-many-public-methods", "too-many-statements", ] + +[tool.pytest.ini_options] +# Recommended in https://textual.textualize.io/guide/testing/#testing-frameworks-for-textual +asyncio_mode = "auto" +# Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. +asyncio_default_fixture_loop_scope = "function" +addopts = ["-n", "auto", "--forked"] +testpaths = ["tests"] +filterwarnings = [ + "ignore:.*may lead to deadlocks in the child.*:DeprecationWarning" +] diff --git a/requirements.txt b/requirements.txt index 99914de..017370b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,11 @@ build mypy pylint pyperclip +pytest +pytest-asyncio +pytest-forked +pytest-textual-snapshot +pytest-xdist ruff textual-dev textual==0.83.0 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..6653550 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,7 @@ +from os import environ as environment_variables + +# Remove MOULTI_* environment variables so as not to disrupt tests. +# For instance, MOULTI_CUSTOM_CSS can dramatically alter the resulting snapshots. +for variable_name in environment_variables: + if variable_name.startswith('MOULTI_'): + environment_variables.pop(variable_name) diff --git a/tests/__snapshots__/test_buttonquestion/test_buttonquestion.svg b/tests/__snapshots__/test_buttonquestion/test_buttonquestion.svg new file mode 100644 index 0000000..ab2c294 --- /dev/null +++ b/tests/__snapshots__/test_buttonquestion/test_buttonquestion.svg @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ My second question with Moulti +What is your name? + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Alice  Bob  Craig  Mallory  Oscar  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + +What a mess: https://en.wikipedia.org/wiki/Alice_and_Bob +▼ Got this answer +craig                                                                                                                     + + + + + + + + + + + + + + + + + + + + + + + + + c  Copy  w  With question  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_diff/test_diff_no_delta.svg b/tests/__snapshots__/test_diff/test_diff_no_delta.svg new file mode 100644 index 0000000..fa5b9c3 --- /dev/null +++ b/tests/__snapshots__/test_diff/test_diff_no_delta.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                      git show ba89966c1984                                                       +▼ Header +commit ba89966c1984513f4f2cc0a6c182266be44ddd03                                                                        +Author:     Eric Dumazet <dada1@cosmosbay.com>                                                                        ▂▂ +AuthorDate: 2005-08-26 12:05:31 -0700                                                                                 ▃▃ +Commit:     David S. Miller <davem@sunset.davemloft.net>                                                               +CommitDate: 2005-08-29 16:11:18 -0700                                                                                  + +    [NET]: use __read_mostly on kmem_cache_t , DEFINE_SNMP_STAT pointers                                               + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +                                                    net/bridge/br_fdb.c                                                      +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +▼  @@ 23,7 23,7 @@+1-1 + #include <asm/atomic.h>                                                                                               + #include "br_private.h"                                                                                               + +-static kmem_cache_t *br_fdb_cache; ++static kmem_cache_t *br_fdb_cache __read_mostly; + static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,                                          +                       const unsigned char *addr);                                                                     + + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +                                                      net/core/flow.c                                                        +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +▼  @@ 42,7 42,7 @@+1-1 static DEFINE_PER_CPU(struct flow_cache_entry **, flow_tables) = { NULL }; + + #define flow_table(cpu) (per_cpu(flow_tables, cpu))                                                                   + +-static kmem_cache_t *flow_cachep; ++static kmem_cache_t *flow_cachep __read_mostly; + + static int flow_lwm, flow_hwm;                                                                                        + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_diff/test_diff_with_delta.svg b/tests/__snapshots__/test_diff/test_diff_with_delta.svg new file mode 100644 index 0000000..eb86190 --- /dev/null +++ b/tests/__snapshots__/test_diff/test_diff_with_delta.svg @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                      git show ba89966c1984                                                       +▼ Header +commit ba89966c1984513f4f2cc0a6c182266be44ddd03                                                                        +Author:     Eric Dumazet <dada1@cosmosbay.com>                                                                        ▂▂ +AuthorDate: 2005-08-26 12:05:31 -0700                                                                                 ▃▃ +Commit:     David S. Miller <davem@sunset.davemloft.net>                                                               +CommitDate: 2005-08-29 16:11:18 -0700                                                                                  + +    [NET]: use __read_mostly on kmem_cache_t , DEFINE_SNMP_STAT pointers                                               + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +                                                    net/bridge/br_fdb.c                                                      +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +▼  @@ 23,7 23,7 @@+1-1 +#include<asm/atomic.h> +#include"br_private.h" + +-static kmem_cache_t *br_fdb_cache; ++static kmem_cache_t *br_fdb_cache __read_mostly; +staticintfdb_insert(struct net_bridge *brstruct net_bridge_port *source, +constunsignedchar*addr); + + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +                                                      net/core/flow.c                                                        +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +▼  @@ 42,7 42,7 @@+1-1 static DEFINE_PER_CPU(struct flow_cache_entry **, flow_tables) = { NULL }; + +#defineflow_table(cpu) (per_cpu(flow_tables, cpu)) + +-static kmem_cache_t *flow_cachep; ++static kmem_cache_t *flow_cachep __read_mostly; + +staticint flow_lwm, flow_hwm; + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_display_steps/test_display_steps_bottom_down.svg b/tests/__snapshots__/test_display_steps/test_display_steps_bottom_down.svg new file mode 100644 index 0000000..78f2c21 --- /dev/null +++ b/tests/__snapshots__/test_display_steps/test_display_steps_bottom_down.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + +▼ 1 + +▼ 2 + +▼ 3 + +▼ 4 + +▼ 5 + +▼ 6 + +▼ 7 + +▼ 8 + +▼ 9 + +▼ 10 + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_display_steps/test_display_steps_bottom_up.svg b/tests/__snapshots__/test_display_steps/test_display_steps_bottom_up.svg new file mode 100644 index 0000000..93af48d --- /dev/null +++ b/tests/__snapshots__/test_display_steps/test_display_steps_bottom_up.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + +▼ 10 + +▼ 9 + +▼ 8 + +▼ 7 + +▼ 6 + +▼ 5 + +▼ 4 + +▼ 3 + +▼ 2 + +▼ 1 + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_display_steps/test_display_steps_top_down.svg b/tests/__snapshots__/test_display_steps/test_display_steps_top_down.svg new file mode 100644 index 0000000..27793c6 --- /dev/null +++ b/tests/__snapshots__/test_display_steps/test_display_steps_top_down.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 + +▼ 2 + +▼ 3 + +▼ 4 + +▼ 5 + +▼ 6 + +▼ 7 + +▼ 8 + +▼ 9 + +▼ 10 + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_display_steps/test_display_steps_top_up.svg b/tests/__snapshots__/test_display_steps/test_display_steps_top_up.svg new file mode 100644 index 0000000..caf68ce --- /dev/null +++ b/tests/__snapshots__/test_display_steps/test_display_steps_top_up.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 10 + +▼ 9 + +▼ 8 + +▼ 7 + +▼ 6 + +▼ 5 + +▼ 4 + +▼ 3 + +▼ 2 + +▼ 1 + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_divider/test_divider.1.svg b/tests/__snapshots__/test_divider/test_divider.1.svg new file mode 100644 index 0000000..9e4208e --- /dev/null +++ b/tests/__snapshots__/test_divider/test_divider.1.svg @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +                                                This text is simply displayed.                                                  +                                         Multi-line is possible. So is rich formatting +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_divider/test_divider.2.svg b/tests/__snapshots__/test_divider/test_divider.2.svg new file mode 100644 index 0000000..dc94d66 --- /dev/null +++ b/tests/__snapshots__/test_divider/test_divider.2.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_divider/test_divider.svg b/tests/__snapshots__/test_divider/test_divider.svg new file mode 100644 index 0000000..7fc11d1 --- /dev/null +++ b/tests/__snapshots__/test_divider/test_divider.svg @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +                                                This text is simply displayed.                                                  +                                         Multi-line is possible. So is rich formatting +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_fill_step/test_fill_step.svg b/tests/__snapshots__/test_fill_step/test_fill_step.svg new file mode 100644 index 0000000..38adfa0 --- /dev/null +++ b/tests/__snapshots__/test_fill_step/test_fill_step.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +line1                                                                                                                     +line2                                                                                                                     +line3                                                                                                                     +▼ 2 +line1                                                                                                                     +line2                                                                                                                     +line3                                                                                                                     +▼ 3 +line1                                                                                                                     +line2                                                                                                                     +line3                                                                                                                     +▼ 4 +line1                                                                                                                     +line2                                                                                                                     +line3                                                                                                                     + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.1.svg b/tests/__snapshots__/test_first_steps/test_first_steps.1.svg new file mode 100644 index 0000000..d6d849f --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.1.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.10.svg b/tests/__snapshots__/test_first_steps/test_first_steps.10.svg new file mode 100644 index 0000000..4deb2d9 --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.10.svg @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               +blinkboldconcealitalicoverlinereversestrikeunderlineunderline2blueon yellow1blue on yellow1 +▼ Warning step + + +▼ Error step +This is a step with class 'error'.                                                                                        + +▼ Inactive step +This is a step with class 'inactive'.                                                                                     + +▼ Standard step +This is a step with class 'standard'.                                                                                     + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.11.svg b/tests/__snapshots__/test_first_steps/test_first_steps.11.svg new file mode 100644 index 0000000..472df6c --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.11.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               +blinkboldconcealitalicoverlinereversestrikeunderlineunderline2blueon yellow1blue on yellow1 +▼ Warning step + + +▼ Inactive step +This is a step with class 'inactive'.                                                                                     + +▼ Standard step +This is a step with class 'standard'.                                                                                     + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.2.svg b/tests/__snapshots__/test_first_steps/test_first_steps.2.svg new file mode 100644 index 0000000..d59860f --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.2.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.3.svg b/tests/__snapshots__/test_first_steps/test_first_steps.3.svg new file mode 100644 index 0000000..5dadbda --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.3.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.4.svg b/tests/__snapshots__/test_first_steps/test_first_steps.4.svg new file mode 100644 index 0000000..1dbba64 --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.4.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.5.svg b/tests/__snapshots__/test_first_steps/test_first_steps.5.svg new file mode 100644 index 0000000..d85a30e --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.5.svg @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               +blinkboldconcealitalicoverlinereversestrikeunderlineunderline2blueon yellow1blue on yellow1 + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.6.svg b/tests/__snapshots__/test_first_steps/test_first_steps.6.svg new file mode 100644 index 0000000..a8f845e --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.6.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               +blinkboldconcealitalicoverlinereversestrikeunderlineunderline2blueon yellow1blue on yellow1 +▼ Warning step +This is a step with class 'warning'.                                                                                      + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.7.svg b/tests/__snapshots__/test_first_steps/test_first_steps.7.svg new file mode 100644 index 0000000..f38a494 --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.7.svg @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               +blinkboldconcealitalicoverlinereversestrikeunderlineunderline2blueon yellow1blue on yellow1 +▼ Warning step +This is a step with class 'warning'.                                                                                      + +▼ Error step +This is a step with class 'error'.                                                                                        + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.8.svg b/tests/__snapshots__/test_first_steps/test_first_steps.8.svg new file mode 100644 index 0000000..37948e4 --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.8.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               +blinkboldconcealitalicoverlinereversestrikeunderlineunderline2blueon yellow1blue on yellow1 +▼ Warning step +This is a step with class 'warning'.                                                                                      + +▼ Error step +This is a step with class 'error'.                                                                                        + +▼ Inactive step +This is a step with class 'inactive'.                                                                                     + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.9.svg b/tests/__snapshots__/test_first_steps/test_first_steps.9.svg new file mode 100644 index 0000000..2760952 --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.9.svg @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                +▼ My first step +Here is the output of ip -color address: +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000                               +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +    inet 127.0.0.1/8 scope host lo                                                                                        +       valid_lft forever preferred_lft forever                                                                            +    inet6 ::1/128 scope host noprefixroute                                                                                +       valid_lft forever preferred_lft forever                                                                            +2: enxabcdef012345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000            +    link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff +    inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5                                      +       valid_lft 78769sec preferred_lft 78769sec                                                                          +    inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute                                    +       valid_lft 86400sec preferred_lft 14400sec                                                                          +    inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute                                                            +       valid_lft forever preferred_lft forever                                                                            +3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                  +    link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 +    altname wlxfedcba654321                                                                                               +blinkboldconcealitalicoverlinereversestrikeunderlineunderline2blueon yellow1blue on yellow1 +▼ Warning step +This is a step with class 'warning'.                                                                                      + +▼ Error step +This is a step with class 'error'.                                                                                        + +▼ Inactive step +This is a step with class 'inactive'.                                                                                     + +▼ Standard step +This is a step with class 'standard'.                                                                                     + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_first_steps/test_first_steps.svg b/tests/__snapshots__/test_first_steps/test_first_steps.svg new file mode 100644 index 0000000..54c71e9 --- /dev/null +++ b/tests/__snapshots__/test_first_steps/test_first_steps.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                This is MY (first) Moulti instance                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_help_dialog/test_help_dialog.svg b/tests/__snapshots__/test_help_dialog/test_help_dialog.svg new file mode 100644 index 0000000..9001f30 --- /dev/null +++ b/tests/__snapshots__/test_help_dialog/test_help_dialog.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + +██████████████████████████ Moulti: help ███████████████████████████▎ + +Documentation: +  https://github.com/xavierog/moulti/blob/master/Documentation.md + +Keybindings: +tabshift+tab: next/previous step/component +ctrl+yctrl+t: next/previous unanswered question +enter: collapse/expand the current step +         submit the current input field +homepgupupdownpgdnend: vertical scroll +ctrl+pgupleftrightctrl+pgdn: horizontal scroll +l: lock scroll: ignore programmatic scrolling +s: save the current state to the filesystem +f: maximize the focused log / exit maximized mode +z: show/hide the console +ox: collapse/expand existing steps +OX: collapse/expand new steps +ctrl+octrl+x: collapse/expand both existing and new steps +d: switch between dark and light modes +c: copy the contents of the current step +w: same + preserve colors/include metadata (e.g. the question) +/?: forward/backward text search +nN: next/previous text search +qctrl+c: quit + +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ Press any key to dismiss this dialog ▁▎ + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_inputquestion/test_inputquestion.svg b/tests/__snapshots__/test_inputquestion/test_inputquestion.svg new file mode 100644 index 0000000..1666ca4 --- /dev/null +++ b/tests/__snapshots__/test_inputquestion/test_inputquestion.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ My first question with Moulti +What is your name? +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +Alice                                                                                                                  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +We want information... information... information! +▼ Got this answer +Alice                                                                                                                     + + + + + + + + + + + + + + + + + + + + + + + + + + + c  Copy  w  With question  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_load/test_load.svg b/tests/__snapshots__/test_load/test_load.svg new file mode 100644 index 0000000..8602112 --- /dev/null +++ b/tests/__snapshots__/test_load/test_load.svg @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ This is a Moulti step +It was made using moulti step add and shall display MOULTI: +▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ +███████▀▀████████▀▀▀██▀▀▀▀▀██▀▀ +████████████████████ +██████████████████ +██▀▀██████████████ +████▄▄██▀██▄▄██▀██▄▄▄▄▄▄██▄▄██▄▄ +▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +Neat, eh? I made it with toilet -f mono12 --metal +▼ PING example.org (2606:2800:21f:cb07:6820:80da:af6b:8b2c) 56 data bytes +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=1 ttl=52 time=99.3 ms                                     ▂▂ +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=2 ttl=52 time=99.9 ms                                      +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=3 ttl=52 time=99.4 ms                                      +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=4 ttl=52 time=99.3 ms                                      +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=5 ttl=52 time=100 ms                                       +This is a second step, made via ping example.org | moulti pass step_ping +▶ This step probably shows things of the utmost importance, but right now it is collapsed. +▼ Anyway, here is the script that generated all of this: +   1#!/usr/bin/env bash +   2export MOULTI_INSTANCE='social-preview' +   3[ "${MOULTI_RUN}]||exec moulti run -- "$0" "$@" +   4source moulti-functions.bash +   5moulti_check_requirements toilet dig ping 'bat|batcat' head tail +   6moulti_tool_is_available batcat &&functionbat { batcat "$@"; } +   7moulti step add title --title='This is a Moulti [italic]step[/]' --top-text='It was made using [yellow1 bold]moulti  +   8toilet -w 130 -f mono12 --metal '    MOULTI| head -8| tail -n +2 | moulti pass title +   9moulti step add step_ping --classes='success' --title="PING example.org ($(dig +short AAAA example.org)) 56 data byt +  10ping example.org | moulti pass step_ping & +  11moulti step add collapsed --classes='warning' --title='This step probably shows things of the utmost importance, but +  12moulti step add script    --classes='error'   --title='Anyway, here is the script that generated all of this:' +  13bat -f -n -l bash "$0" | moulti pass script + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_maximize/test_maximize_large_step.svg b/tests/__snapshots__/test_maximize/test_maximize_large_step.svg new file mode 100644 index 0000000..f556a10 --- /dev/null +++ b/tests/__snapshots__/test_maximize/test_maximize_large_step.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     1        content                                                                                                         +     2        content                                                                                                         +     3        content                                                                                                         +     4        content                                                                                                         +     5        content                                                                                                         +     6        content                                                                                                         +     7        content                                                                                                         +     8        content                                                                                                         +     9        content                                                                                                         +    10        content                                                                                                         +    11        content                                                                                                         +    12        content                                                                                                         +    13        content                                                                                                         +    14        content                                                                                                         +    15        content                                                                                                         +    16        content                                                                                                         +    17        content                                                                                                         +    18        content                                                                                                         +    19        content                                                                                                         +    20        content                                                                                                         +    21        content                                                                                                         +    22        content                                                                                                         +    23        content                                                                                                         +    24        content                                                                                                         +    25        content                                                                                                         +    26        content                                                                                                         +    27        content                                                                                                         +    28        content                                                                                                         +    29        content                                                                                                         +    30        content                                                                                                         +    31        content                                                                                                         +    32        content                                                                                                         +    33        content                                                                                                         +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ + f  Exit maximized mode  c  Copy  w  With colors  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_maximize/test_maximize_small_step.svg b/tests/__snapshots__/test_maximize/test_maximize_small_step.svg new file mode 100644 index 0000000..3743e81 --- /dev/null +++ b/tests/__snapshots__/test_maximize/test_maximize_small_step.svg @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +     1        content                                                                                                         +     2        content                                                                                                         +     3        content                                                                                                         +     4        content                                                                                                         +     5        content                                                                                                         +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ +╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ + f  Exit maximized mode  c  Copy  w  With colors  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_maximize/test_search_maximize.svg b/tests/__snapshots__/test_maximize/test_search_maximize.svg new file mode 100644 index 0000000..2f932cf --- /dev/null +++ b/tests/__snapshots__/test_maximize/test_search_maximize.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ one +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                  +     4        content                                                                                                  +     5        content                                                                                                  +▼ two +     4        content                                                                                                  +5        content                                                                                                 ▄▄ +     6        content                                                                                                 ▆▆ +     7        content                                                                                                  +     8        content                                                                                                  +▼ three +    11        content                                                                                                  +    12        content                                                                                                  +    13        content                                                                                                  +    14        content                                                                                                 ▆▆ +    15        content                                                                                                  +▼ four +    16        content                                                                                                  +    17        content                                                                                                  +    18        content                                                                                                  +    19        content                                                                                                 ▂▂ +    20        content                                                                                                  +▼ five +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                  +     4        content                                                                                                  +     5        content                                                                                                  +     6        content                                                                                                  +     7        content                                                                                                  +     8        content                                                                                                  +     9        content                                                                                                  + f  Maximize  c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q + + + diff --git a/tests/__snapshots__/test_maximize/test_search_unmaximize.svg b/tests/__snapshots__/test_maximize/test_search_unmaximize.svg new file mode 100644 index 0000000..67f8eb6 --- /dev/null +++ b/tests/__snapshots__/test_maximize/test_search_unmaximize.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ one +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                  +     4        content                                                                                                  +     5        content                                                                                                  +▼ two +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                 ▄▄▆▆ +     4        content                                                                                                  +     5        content                                                                                                  +▼ three +     4        content                                                                                                 ▁▁ +5        content                                                                                                  +     6        content                                                                                                 ▃▃ +     7        content                                                                                                  +     8        content                                                                                                  +▼ four +    16        content                                                                                                  +    17        content                                                                                                  +    18        content                                                                                                  +    19        content                                                                                                 ▂▂ +    20        content                                                                                                  +▼ five +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                  +     4        content                                                                                                  +     5        content                                                                                                  +     6        content                                                                                                  +     7        content                                                                                                  +     8        content                                                                                                  +     9        content                                                                                                  + f  Maximize  c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q + + + diff --git a/tests/__snapshots__/test_maximize/test_unmaximize_large_step.svg b/tests/__snapshots__/test_maximize/test_unmaximize_large_step.svg new file mode 100644 index 0000000..f817739 --- /dev/null +++ b/tests/__snapshots__/test_maximize/test_unmaximize_large_step.svg @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                  +     4        content                                                                                                  +     5        content                                                                                                  +     6        content                                                                                                  +     7        content                                                                                                 ▂▂ +     8        content                                                                                                  +     9        content                                                                                                  +    10        content                                                                                                  +    11        content                                                                                                  +    12        content                                                                                                  +    13        content                                                                                                  +    14        content                                                                                                  +    15        content                                                                                                  +    16        content                                                                                                  +    17        content                                                                                                  +    18        content                                                                                                  +    19        content                                                                                                  +    20        content                                                                                                  +    21        content                                                                                                  +    22        content                                                                                                  +    23        content                                                                                                  +    24        content                                                                                                  +    25        content                                                                                                  +    26        content                                                                                                  +    27        content                                                                                                  +    28        content                                                                                                  +    29        content                                                                                                  +    30        content                                                                                                  +    31        content                                                                                                  +    32        content                                                                                                  +    33        content                                                                                                  +    34        content                                                                                                  + f  Maximize  c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q + + + diff --git a/tests/__snapshots__/test_maximize/test_unmaximize_small_step.svg b/tests/__snapshots__/test_maximize/test_unmaximize_small_step.svg new file mode 100644 index 0000000..afcd479 --- /dev/null +++ b/tests/__snapshots__/test_maximize/test_unmaximize_small_step.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ one +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                  +     4        content                                                                                                  +     5        content                                                                                                  +▼ two +     6        content                                                                                                  +     7        content                                                                                                  +     8        content                                                                                                 ▄▄▆▆ +     9        content                                                                                                  +    10        content                                                                                                  +▼ three +    11        content                                                                                                  +    12        content                                                                                                  +    13        content                                                                                                  +    14        content                                                                                                 ▆▆ +    15        content                                                                                                  +▼ four +    16        content                                                                                                  +    17        content                                                                                                  +    18        content                                                                                                  +    19        content                                                                                                 ▂▂ +    20        content                                                                                                  +▼ five +     1        content                                                                                                  +     2        content                                                                                                  +     3        content                                                                                                  +     4        content                                                                                                  +     5        content                                                                                                  +     6        content                                                                                                  +     7        content                                                                                                  +     8        content                                                                                                  +     9        content                                                                                                  + f  Maximize  c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q + + + diff --git a/tests/__snapshots__/test_progressbar/test_progressbar.1.svg b/tests/__snapshots__/test_progressbar/test_progressbar.1.svg new file mode 100644 index 0000000..5c114d7 --- /dev/null +++ b/tests/__snapshots__/test_progressbar/test_progressbar.1.svg @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━80% + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_progressbar/test_progressbar.2.svg b/tests/__snapshots__/test_progressbar/test_progressbar.2.svg new file mode 100644 index 0000000..13ef493 --- /dev/null +++ b/tests/__snapshots__/test_progressbar/test_progressbar.2.svg @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100% + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_progressbar/test_progressbar.3.svg b/tests/__snapshots__/test_progressbar/test_progressbar.3.svg new file mode 100644 index 0000000..f914cec --- /dev/null +++ b/tests/__snapshots__/test_progressbar/test_progressbar.3.svg @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━95% + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_progressbar/test_progressbar.svg b/tests/__snapshots__/test_progressbar/test_progressbar.svg new file mode 100644 index 0000000..b983467 --- /dev/null +++ b/tests/__snapshots__/test_progressbar/test_progressbar.svg @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +━━━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━20% + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_question/test_question.svg b/tests/__snapshots__/test_question/test_question.svg new file mode 100644 index 0000000..b45f2fa --- /dev/null +++ b/tests/__snapshots__/test_question/test_question.svg @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ My third question with Moulti +What is your name? +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +Luka                                                                                                                   +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Alice  Bob  Neither, use input  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + +I live on the second floor +▼ Got this answer +My name is Luka                                                                                                           + + + + + + + + + + + + + + + + + + + + + + c  Copy  w  With question  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_quit/test_quit_default_ask.svg b/tests/__snapshots__/test_quit/test_quit_default_ask.svg new file mode 100644 index 0000000..7902f47 --- /dev/null +++ b/tests/__snapshots__/test_quit/test_quit_default_ask.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + +█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ + +Are you sure you want to quit Moulti? + + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Do not quit (esc)  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Quit (l)  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + +█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_quit/test_quit_default_quit.svg b/tests/__snapshots__/test_quit/test_quit_default_quit.svg new file mode 100644 index 0000000..dc94d66 --- /dev/null +++ b/tests/__snapshots__/test_quit/test_quit_default_quit.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_quit/test_quit_running_ask.svg b/tests/__snapshots__/test_quit/test_quit_running_ask.svg new file mode 100644 index 0000000..f455f6d --- /dev/null +++ b/tests/__snapshots__/test_quit/test_quit_running_ask.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + +█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ +Are you sure you want to quit Moulti? +The command passed to "moulti run" is still running. + + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Do not quit (esc)  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Quit and leave the process running in the background (l)  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + +▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + Terminate the process and quit (t)  +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ + + +█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_quit/test_quit_running_leave.svg b/tests/__snapshots__/test_quit/test_quit_running_leave.svg new file mode 100644 index 0000000..dc94d66 --- /dev/null +++ b/tests/__snapshots__/test_quit/test_quit_running_leave.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_quit/test_quit_running_terminate.svg b/tests/__snapshots__/test_quit/test_quit_running_terminate.svg new file mode 100644 index 0000000..dc94d66 --- /dev/null +++ b/tests/__snapshots__/test_quit/test_quit_running_terminate.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_run_output/test_custom_step.svg b/tests/__snapshots__/test_run_output/test_custom_step.svg new file mode 100644 index 0000000..84cc923 --- /dev/null +++ b/tests/__snapshots__/test_run_output/test_custom_step.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ Moulti unexpected output +[stdout] Unexpected output                                                                                                +[stderr] Unexpected output                                                                                                +Error: cannot proceed with deletion as 1 ongoing operations prevent it                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_run_output/test_discard_output.svg b/tests/__snapshots__/test_run_output/test_discard_output.svg new file mode 100644 index 0000000..dc94d66 --- /dev/null +++ b/tests/__snapshots__/test_run_output/test_discard_output.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_run_output/test_harvest_output.svg b/tests/__snapshots__/test_run_output/test_harvest_output.svg new file mode 100644 index 0000000..2b67d4a --- /dev/null +++ b/tests/__snapshots__/test_run_output/test_harvest_output.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ moulti_run_output +[stdout] Unexpected output                                                                                                +[stderr] Unexpected output                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_auto_scrolling.svg b/tests/__snapshots__/test_scrolling/test_auto_scrolling.svg new file mode 100644 index 0000000..b8b8d8d --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_auto_scrolling.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ Step with auto-scroll enabled by default +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                               ▄▄ +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                                +interrupted auto-scrolling                                                                                                +▼ Step with auto-scroll disabled +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                        ▄▄ +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                         +no auto-scrolling                                                                                                         +▼ Step with auto-scroll enabled by default +auto-scrolling                                                                                                            +auto-scrolling                                                                                                            +auto-scrolling                                                                                                            +auto-scrolling                                                                                                            +auto-scrolling                                                                                                            +auto-scrolling                                                                                                            +auto-scrolling                                                                                                            +auto-scrolling                                                                                                           ▄▄ +auto-scrolling                                                                                                            +auto-scrolling                                                                                                            + + f  Maximize  c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q + + + diff --git a/tests/__snapshots__/test_scrolling/test_lock_scroll.1.svg b/tests/__snapshots__/test_scrolling/test_lock_scroll.1.svg new file mode 100644 index 0000000..b5fecc8 --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_lock_scroll.1.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +     1        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut odio                               +     2        nisl. Sed sit amet tempus ipsum. Pellentesque tincidunt, massa et finibus                                +     3        condimentum, nulla justo eleifend purus, vel dapibus leo arcu eu sem. Nulla                              +     4        sagittis augue lobortis lorem lacinia facilisis. Morbi volutpat venenatis ante.                          +     5        Vivamus erat leo, molestie at vehicula vel, varius tincidunt tortor. Vivamus ac                          +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                              +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                              +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                 ▇▇ +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                + l  Unlock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_lock_scroll.svg b/tests/__snapshots__/test_scrolling/test_lock_scroll.svg new file mode 100644 index 0000000..bea0ddc --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_lock_scroll.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                             ▁▁ +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                +    -2        porttitor nulla vel bibendum. Nullam porta lectus in dui rutrum, sed mollis dui                          +    -1        mollis. Nullam quam sapien, faucibus nec lacus et, efficitur pharetra odio.                              +▼ 5 +     1        Fusce a nibh ac massa ullamcorper condimentum. Nam euismod pulvinar tellus id                            +     2        euismod. Mauris condimentum, odio sit amet faucibus ornare, magna turpis cursus                          +     3        mi, laoreet pulvinar ex purus a nunc. Aenean non lectus id urna euismod                                  +     4        efficitur. Etiam at faucibus arcu. Phasellus lorem eros, ullamcorper sed                                 +     5        dignissim id, pellentesque ac felis. Mauris sit amet risus in quam finibus                               +     6        egestas. Phasellus blandit eros ut tempor aliquam. Nulla aliquet odio laoreet                            +     7        lorem sollicitudin tincidunt. Aliquam aliquet dignissim libero quis sodales.                             +     8        Sed eleifend nulla vitae diam gravida, aliquet tempus ante rhoncus. In at                                +     9        facilisis diam. In sollicitudin libero dolor, fringilla sagittis ex dignissim                            +    10        vel. Nullam ex libero, posuere nec massa vel, mollis facilisis dolor. Phasellus                          +    11        congue nibh arcu. Donec vestibulum pellentesque eros.                                                    + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.1.svg b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.1.svg new file mode 100644 index 0000000..5292b06 --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.1.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +     1        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut odio                               +     2        nisl. Sed sit amet tempus ipsum. Pellentesque tincidunt, massa et finibus                                +     3        condimentum, nulla justo eleifend purus, vel dapibus leo arcu eu sem. Nulla                              +     4        sagittis augue lobortis lorem lacinia facilisis. Morbi volutpat venenatis ante.                          +     5        Vivamus erat leo, molestie at vehicula vel, varius tincidunt tortor. Vivamus ac                          +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                              +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                             ▃▃ +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.2.svg b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.2.svg new file mode 100644 index 0000000..ac852da --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.2.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                             ▇▇ +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                              +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                               ▂▂ +    -2        porttitor nulla vel bibendum. Nullam porta lectus in dui rutrum, sed mollis dui                          +    -1        mollis. Nullam quam sapien, faucibus nec lacus et, efficitur pharetra odio.                              +▼ 5 +     1        Fusce a nibh ac massa ullamcorper condimentum. Nam euismod pulvinar tellus id                            +     2        euismod. Mauris condimentum, odio sit amet faucibus ornare, magna turpis cursus                          +     3        mi, laoreet pulvinar ex purus a nunc. Aenean non lectus id urna euismod                                  + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.3.svg b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.3.svg new file mode 100644 index 0000000..22d3f8c --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.3.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +     1        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut odio                               +     2        nisl. Sed sit amet tempus ipsum. Pellentesque tincidunt, massa et finibus                                +     3        condimentum, nulla justo eleifend purus, vel dapibus leo arcu eu sem. Nulla                              +     4        sagittis augue lobortis lorem lacinia facilisis. Morbi volutpat venenatis ante.                          +     5        Vivamus erat leo, molestie at vehicula vel, varius tincidunt tortor. Vivamus ac                          +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                              +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                             ▇▇ +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.4.svg b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.4.svg new file mode 100644 index 0000000..4afb3b3 --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.4.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                              +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                             ▁▁ +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                +    -2        porttitor nulla vel bibendum. Nullam porta lectus in dui rutrum, sed mollis dui                          +    -1        mollis. Nullam quam sapien, faucibus nec lacus et, efficitur pharetra odio.                              +▼ 5 +     1        Fusce a nibh ac massa ullamcorper condimentum. Nam euismod pulvinar tellus id                            +     2        euismod. Mauris condimentum, odio sit amet faucibus ornare, magna turpis cursus                          +     3        mi, laoreet pulvinar ex purus a nunc. Aenean non lectus id urna euismod                                  +     4        efficitur. Etiam at faucibus arcu. Phasellus lorem eros, ullamcorper sed                                 +     5        dignissim id, pellentesque ac felis. Mauris sit amet risus in quam finibus                               +     6        egestas. Phasellus blandit eros ut tempor aliquam. Nulla aliquet odio laoreet                            +     7        lorem sollicitudin tincidunt. Aliquam aliquet dignissim libero quis sodales.                             +     8        Sed eleifend nulla vitae diam gravida, aliquet tempus ante rhoncus. In at                                +     9        facilisis diam. In sollicitudin libero dolor, fringilla sagittis ex dignissim                            +    10        vel. Nullam ex libero, posuere nec massa vel, mollis facilisis dolor. Phasellus                          +    11        congue nibh arcu. Donec vestibulum pellentesque eros.                                                    +scroll!                                                                                                                +This is the very last line of step 5 + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.5.svg b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.5.svg new file mode 100644 index 0000000..94b4d18 --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.5.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +   467        scroll to the last line!                                                                                 +   468        scroll to the last line!                                                                                 +   469        scroll to the last line!                                                                                 +   470        scroll to the last line!                                                                                 +   471        scroll to the last line!                                                                                 +   472        scroll to the last line!                                                                                 +   473        scroll to the last line!                                                                                 +   474        scroll to the last line!                                                                                 +   475        scroll to the last line!                                                                                 +   476        scroll to the last line!                                                                                 +   477        scroll to the last line!                                                                                 +   478        scroll to the last line!                                                                                 +   479        scroll to the last line!                                                                                 +   480        scroll to the last line!                                                                                 +   481        scroll to the last line!                                                                                 +   482        scroll to the last line!                                                                                 +   483        scroll to the last line!                                                                                 +   484        scroll to the last line!                                                                                 +   485        scroll to the last line!                                                                                 +   486        scroll to the last line!                                                                                 +   487        scroll to the last line!                                                                                 +   488        scroll to the last line!                                                                                 +   489        scroll to the last line!                                                                                 +   490        scroll to the last line!                                                                                 +   491        scroll to the last line!                                                                                 +   492        scroll to the last line!                                                                                 +   493        scroll to the last line!                                                                                 +   494        scroll to the last line!                                                                                 +   495        scroll to the last line!                                                                                 +   496        scroll to the last line!                                                                                 +   497        scroll to the last line!                                                                                 +   498        scroll to the last line!                                                                                ▂▂ +   499        scroll to the last line!                                                                                 +   500        scroll to the last line!                                                                                ▁▁ + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.6.svg b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.6.svg new file mode 100644 index 0000000..22d3f8c --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.6.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +     1        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut odio                               +     2        nisl. Sed sit amet tempus ipsum. Pellentesque tincidunt, massa et finibus                                +     3        condimentum, nulla justo eleifend purus, vel dapibus leo arcu eu sem. Nulla                              +     4        sagittis augue lobortis lorem lacinia facilisis. Morbi volutpat venenatis ante.                          +     5        Vivamus erat leo, molestie at vehicula vel, varius tincidunt tortor. Vivamus ac                          +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                              +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                             ▇▇ +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.svg b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.svg new file mode 100644 index 0000000..79e4ac3 --- /dev/null +++ b/tests/__snapshots__/test_scrolling/test_programmatic_scrolling.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                              +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                ▅▅ +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                +    -2        porttitor nulla vel bibendum. Nullam porta lectus in dui rutrum, sed mollis dui                          +    -1        mollis. Nullam quam sapien, faucibus nec lacus et, efficitur pharetra odio.                              +▼ 5 +     1        Fusce a nibh ac massa ullamcorper condimentum. Nam euismod pulvinar tellus id                            +     2        euismod. Mauris condimentum, odio sit amet faucibus ornare, magna turpis cursus                          +     3        mi, laoreet pulvinar ex purus a nunc. Aenean non lectus id urna euismod                                  +     4        efficitur. Etiam at faucibus arcu. Phasellus lorem eros, ullamcorper sed                                 +     5        dignissim id, pellentesque ac felis. Mauris sit amet risus in quam finibus                               +     6        egestas. Phasellus blandit eros ut tempor aliquam. Nulla aliquet odio laoreet                            +     7        lorem sollicitudin tincidunt. Aliquam aliquet dignissim libero quis sodales.                             +     8        Sed eleifend nulla vitae diam gravida, aliquet tempus ante rhoncus. In at                                +     9        facilisis diam. In sollicitudin libero dolor, fringilla sagittis ex dignissim                            +    10        vel. Nullam ex libero, posuere nec massa vel, mollis facilisis dolor. Phasellus                          +    11        congue nibh arcu. Donec vestibulum pellentesque eros.                                                    +This is the very last line of step 5 + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_simple_start/test_start.svg b/tests/__snapshots__/test_simple_start/test_start.svg new file mode 100644 index 0000000..dc94d66 --- /dev/null +++ b/tests/__snapshots__/test_simple_start/test_start.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_step_classes/test_step_classes.svg b/tests/__snapshots__/test_step_classes/test_step_classes.svg new file mode 100644 index 0000000..d1673de --- /dev/null +++ b/tests/__snapshots__/test_step_classes/test_step_classes.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ Warning step +This is a step with class 'warning'.                                                                                      + +▼ Error step +This is a step with class 'error'.                                                                                        + +▼ Inactive step +This is a step with class 'inactive'.                                                                                     + +▼ Standard step +This is a step with class 'standard'.                                                                                     + +▼ Customstate step +This is a step with class 'customstate'.                                                                                  + + + + + + + + + + + + + + + + + + + + + l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_textsearch/test_plain_pattern_case_insensitive.svg b/tests/__snapshots__/test_textsearch/test_plain_pattern_case_insensitive.svg new file mode 100644 index 0000000..0442078 --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_plain_pattern_case_insensitive.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +     1        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut odio                               +     2        nisl. Sed sit amet tempus ipsum. Pellentesque tincidunt, massa et finibus                                +     3        condimentum, nulla justo eleifend purus, vel dapibus leo arcu eu sem. Nulla                              +     4        sagittis augue lobortis lorem lacinia facilisis. Morbi volutpat venenatis ante.                          +     5        Vivamus erat leo, molestie at vehicula vel, varius tincidunt tortor. Vivamus ac                          +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                              +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                              +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                 ▇▇ +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                + c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.1.svg b/tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.1.svg new file mode 100644 index 0000000..4ef6abf --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.1.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                             ▁▁ +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                +    -2        porttitor nulla vel bibendum. Nullam porta lectus in dui rutrum, sed mollis dui                          +    -1        mollis. Nullam quam sapien, faucibus nec lacus et, efficitur pharetra odio.                              +▼ 5 +     1        Fusce a nibh ac massa ullamcorper condimentum. Nam euismod pulvinar tellus id                            +     2        euismod. Mauris condimentum, odio sit amet faucibus ornare, magna turpis cursus                          +     3        mi, laoreet pulvinar ex purus a nunc. Aenean non lectus id urna euismod                                  +     4        efficitur. Etiam at faucibus arcu. Phasellus lorem eros, ullamcorper sed                                 +     5        dignissim id, pellentesque ac felis. Mauris sit amet risus in quam finibus                               +     6        egestas. Phasellus blandit eros ut tempor aliquam. Nulla aliquet odio laoreet                            +     7        lorem sollicitudin tincidunt. Aliquam aliquet dignissim libero quis sodales.                             +     8        Sed eleifend nulla vitae diam gravida, aliquet tempus ante rhoncus. In at                                +     9        facilisis diam. In sollicitudin libero dolor, fringilla sagittis ex dignissim                            +    10        vel. Nullam ex libero, posuere nec massa vel, mollis facilisis dolor. Phasellus                          +    11        congue nibh arcu. Donec vestibulum pellentesque eros.                                                    + c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.svg b/tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.svg new file mode 100644 index 0000000..113d124 --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_plain_pattern_case_sensitive.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                             ▁▁ +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                  +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                +    -2        porttitor nulla vel bibendum. Nullam porta lectus in dui rutrum, sed mollis dui                          +    -1        mollis. Nullam quam sapien, faucibus nec lacus et, efficitur pharetra odio.                              +▼ 5 +     1        Fusce a nibh ac massa ullamcorper condimentum. Nam euismod pulvinar tellus id                            +     2        euismod. Mauris condimentum, odio sit amet faucibus ornare, magna turpis cursus                          +     3        mi, laoreet pulvinar ex purus a nunc. Aenean non lectus id urna euismod                                  +     4        efficitur. Etiam at faucibus arcu. Phasellus lorem eros, ullamcorper sed +     5        dignissim id, pellentesque ac felis. Mauris sit amet risus in quam finibus                               +     6        egestas. Phasellus blandit eros ut tempor aliquam. Nulla aliquet odio laoreet                            +     7        lorem sollicitudin tincidunt. Aliquam aliquet dignissim libero quis sodales.                             +     8        Sed eleifend nulla vitae diam gravida, aliquet tempus ante rhoncus. In at                                +     9        facilisis diam. In sollicitudin libero dolor, fringilla sagittis ex dignissim                            +    10        vel. Nullam ex libero, posuere nec massa vel, mollis facilisis dolor. Phasellus                          +    11        congue nibh arcu. Donec vestibulum pellentesque eros.                                                    + c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_textsearch/test_regex_pattern_case_insensitive.svg b/tests/__snapshots__/test_textsearch/test_regex_pattern_case_insensitive.svg new file mode 100644 index 0000000..63d43ed --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_regex_pattern_case_insensitive.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +     1        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut odio                               +     2        nisl. Sed sit amet tempus ipsum. Pellentesque tincidunt, massa et finibus                                +     3        condimentum, nulla justo eleifend purus, vel dapibus leo arcu eu sem. Nulla                              +     4        sagittis augue lobortis lorem lacinia facilisis. Morbi volutpat venenatis ante.                          +     5        Vivamus erat leo, molestie at vehicula vel, varius tincidunt tortor. Vivamus ac                          +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                              +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                              +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                 ▇▇ +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                + c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_textsearch/test_regex_pattern_case_sensitive.svg b/tests/__snapshots__/test_textsearch/test_regex_pattern_case_sensitive.svg new file mode 100644 index 0000000..7297ba7 --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_regex_pattern_case_sensitive.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              +▼ 1 +     1        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut odio                               +     2        nisl. Sed sit amet tempus ipsum. Pellentesque tincidunt, massa et finibus                                +     3        condimentum, nulla justo eleifend purus, vel dapibus leo arcu eu sem. Nulla                              +     4        sagittis augue lobortis lorem lacinia facilisis. Morbi volutpat venenatis ante.                          +     5        Vivamus erat leo, molestie at vehicula vel, varius tincidunt tortor. Vivamus ac                          +     6        enim nulla. Sed nunc enim, malesuada id felis vel, consectetur semper arcu.                              +▼ 2 +     1        Donec vel neque fringilla, tincidunt magna et, volutpat tellus. Curabitur sit                            +     2        amet arcu eget enim sagittis malesuada. Fusce fermentum, diam vitae                                      +     3        pellentesque pretium, urna enim tempus neque, a vehicula est nisi ut lorem.                              +     4        Cras aliquet tortor eget massa ultricies, nec maximus tellus interdum. In eget                           +     5        erat non dolor pulvinar lacinia. Proin maximus posuere tortor at cursus. Etiam                           +     6        volutpat diam libero, non convallis elit gravida eu. Maecenas fringilla nisi eu                          +     7        mi iaculis, ultrices posuere erat pulvinar. Pellentesque feugiat viverra ex nec                          +     8        placerat. Curabitur id dolor congue, malesuada justo dictum, tincidunt augue.                            +     9        Vivamus dapibus lacus ac fringilla tempor. Suspendisse potenti. Quisque orci                             +    10        nisi, interdum eu felis sit amet, ultricies vulputate nulla. Duis at justo                               +    11        hendrerit ipsum vulputate posuere ac a est. Donec iaculis nisi id rhoncus                                +    12        convallis.                                                                                               +▼ 3 +     1        Phasellus venenatis id augue auctor bibendum. Suspendisse vitae libero sit amet                          +     2        justo commodo gravida vel vitae arcu. Mauris nisl purus, dapibus aliquam                                 +     3        fringilla mollis, mollis vel dolor. Donec lorem justo, dignissim ac egestas                              +     4        non, fringilla ac massa. Sed nec rhoncus tellus, sit amet semper purus.                                 ▇▇ +     5        Phasellus venenatis egestas justo vel dapibus. Donec bibendum, tellus ac                                 +     6        aliquam mattis, tortor elit blandit lorem, at ultricies diam diam at velit.                              +     7        Phasellus congue purus erat, ut scelerisque felis dignissim at.                                          +▼ 4 +    -7        Integer dictum urna magna, quis tempor elit varius eget. Pellentesque mattis                             +    -6        pharetra maximus. Aliquam mollis ipsum in eros tempor, a feugiat lorem                                   +    -5        porttitor. Donec vel pretium ante. Nam eu lorem suscipit, tristique leo non,                             +    -4        pulvinar elit. Aliquam metus erat, euismod vel nisl nec, mollis fringilla nisl.                          +    -3        Maecenas sit amet varius mauris, in accumsan risus. Pellentesque interdum                                + c  Copy  w  With colors  l  Lock scroll  s  Save  z  Console  x  Expand all  o  Collapse all  d  Light  h  Help  q  Quit  + + + diff --git a/tests/__snapshots__/test_textsearch/test_search_bar.1.svg b/tests/__snapshots__/test_textsearch/test_search_bar.1.svg new file mode 100644 index 0000000..7e8ab52 --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_search_bar.1.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Plain/[aeiou + esc  Cancel  ↑  Previous  ↓  Next  ^r  Regex pattern  ^t  Case-insensitive  + + + diff --git a/tests/__snapshots__/test_textsearch/test_search_bar.2.svg b/tests/__snapshots__/test_textsearch/test_search_bar.2.svg new file mode 100644 index 0000000..03302ea --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_search_bar.2.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PLAIN/[aeiou] + esc  Cancel  ↑  Previous  ↓  Next  ^r  Regex pattern  ^t  Case-sensitive  + + + diff --git a/tests/__snapshots__/test_textsearch/test_search_bar.3.svg b/tests/__snapshots__/test_textsearch/test_search_bar.3.svg new file mode 100644 index 0000000..77c62a5 --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_search_bar.3.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +REGEX/[aeiou] + esc  Cancel  ↑  Previous  ↓  Next  ^r  Plain pattern  ^t  Case-sensitive  + + + diff --git a/tests/__snapshots__/test_textsearch/test_search_bar.svg b/tests/__snapshots__/test_textsearch/test_search_bar.svg new file mode 100644 index 0000000..16fd747 --- /dev/null +++ b/tests/__snapshots__/test_textsearch/test_search_bar.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moulti + + + + + + + + + +                                                              Moulti                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Regex/[aeiou + esc  Cancel  ↑  Previous  ↓  Next  ^r  Plain pattern  ^t  Case-insensitive  + + + diff --git a/tests/common.py b/tests/common.py new file mode 100644 index 0000000..3d48877 --- /dev/null +++ b/tests/common.py @@ -0,0 +1,78 @@ +import os +from typing import Awaitable, Callable, Iterable +import pytest +from _pytest.fixtures import FixtureRequest +from textual.pilot import Pilot +from moulti.app import Moulti + +TERMINAL_SIZE = (128, 36) +COMMAND_PREFIX = 'tests/scripts/' + +async def wait_script_start(pilot): + """Wait until the script starts.""" + while pilot.app.init_command_running is None: + await pilot.pause(0.1) + +async def wait_script_end(pilot): + """Wait until the script finishes, assuming it has started already.""" + while pilot.app.init_command_running: + await pilot.pause(0.1) + +async def wait_script(pilot): + """Wait until the script finishes.""" + await wait_script_start(pilot) + await wait_script_end(pilot) + +@pytest.fixture +def moulti_test(request: FixtureRequest, snap_compare): + """ + Helper fixture that wraps around Textual's snap_compare. It takes care of: + - setting THE terminal size; + - picking a non-conflicting Moulti instance name, with optional suffix; + - creating a Moulti instance; + - passing an optional command; + - taking a snapshot through snap_compare; + - exiting the Moulti instance so it stops listening; + - returning snap_compare's result. + press, run_before and terminal_size are the same as snap_compare's. + If a command is passed, run_before defaults to wait_script, so that the snapshot is not taken prematurely. + """ + def compare( + command: list[str]|None = None, + press: Iterable[str] = (), + run_before: Callable[[Pilot], Awaitable[None]|None]|None = None, + run_after: Callable|None = None, + terminal_size: tuple[int, int] = TERMINAL_SIZE, + suffix: str|None = None, + ): + name = request.node.reportinfo()[2].replace('_', '-') + if suffix is not None: + name += suffix + if command: + if command[0] != 'moulti' and not command[0].startswith(COMMAND_PREFIX): + command[0] = COMMAND_PREFIX + command[0] + if not run_before: + run_before = wait_script + moulti_app = Moulti(command=command, instance_name=f'{os.getpid()}-{name}') + result = snap_compare(moulti_app, press, terminal_size, run_before) + if run_after: + run_after(moulti_app) + else: + moulti_app.exit() + return result + return compare + +def steps(max_step): + """ + Helper that iterates from 1 to max_step (inclusive) and yields + integer-string-suffix tuples, e.g. (2, '2', '-02'). + """ + for index in range(1, max_step+1): + yield (index, str(index), f'-{index:02d}') + +def moulti_test_steps(moulti_test, script_path, max_step): + """ + Helper that runs a script through moulti_test max_step times in a row. + """ + for _, i, suffix in steps(max_step): + assert moulti_test(command=[script_path, i], suffix=suffix) diff --git a/tests/data/linux-kernel-ba89966c1984.patch b/tests/data/linux-kernel-ba89966c1984.patch new file mode 100644 index 0000000..4239d98 --- /dev/null +++ b/tests/data/linux-kernel-ba89966c1984.patch @@ -0,0 +1,435 @@ +commit ba89966c1984513f4f2cc0a6c182266be44ddd03 +Author: Eric Dumazet +AuthorDate: 2005-08-26 12:05:31 -0700 +Commit: David S. Miller +CommitDate: 2005-08-29 16:11:18 -0700 + + [NET]: use __read_mostly on kmem_cache_t , DEFINE_SNMP_STAT pointers + + This patch puts mostly read only data in the right section + (read_mostly), to help sharing of these data between CPUS without + memory ping pongs. + + On one of my production machine, tcp_statistics was sitting in a + heavily modified cache line, so *every* SNMP update had to force a + reload. + + Signed-off-by: Eric Dumazet + Signed-off-by: David S. Miller + +diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c +index e6c2200b7ca3..24396b914d11 100644 +--- a/net/bridge/br_fdb.c ++++ b/net/bridge/br_fdb.c +@@ -23,7 +23,7 @@ + #include + #include "br_private.h" + +-static kmem_cache_t *br_fdb_cache; ++static kmem_cache_t *br_fdb_cache __read_mostly; + static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source, + const unsigned char *addr); + +diff --git a/net/core/flow.c b/net/core/flow.c +index f289570b15a3..7e95b39de9fd 100644 +--- a/net/core/flow.c ++++ b/net/core/flow.c +@@ -42,7 +42,7 @@ static DEFINE_PER_CPU(struct flow_cache_entry **, flow_tables) = { NULL }; + + #define flow_table(cpu) (per_cpu(flow_tables, cpu)) + +-static kmem_cache_t *flow_cachep; ++static kmem_cache_t *flow_cachep __read_mostly; + + static int flow_lwm, flow_hwm; + +diff --git a/net/core/skbuff.c b/net/core/skbuff.c +index b853a9b29eb6..f80a28785610 100644 +--- a/net/core/skbuff.c ++++ b/net/core/skbuff.c +@@ -68,8 +68,8 @@ + #include + #include + +-static kmem_cache_t *skbuff_head_cache; +-static kmem_cache_t *skbuff_fclone_cache; ++static kmem_cache_t *skbuff_head_cache __read_mostly; ++static kmem_cache_t *skbuff_fclone_cache __read_mostly; + + struct timeval __read_mostly skb_tv_base; + +diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c +index fe4cc85f5bcc..cf93b019ecbe 100644 +--- a/net/dccp/ccids/ccid3.c ++++ b/net/dccp/ccids/ccid3.c +@@ -85,7 +85,7 @@ static int ccid3_debug; + static struct dccp_tx_hist *ccid3_tx_hist; + static struct dccp_rx_hist *ccid3_rx_hist; + +-static kmem_cache_t *ccid3_loss_interval_hist_slab; ++static kmem_cache_t *ccid3_loss_interval_hist_slab __read_mostly; + + static inline struct ccid3_loss_interval_hist_entry * + ccid3_loss_interval_hist_entry_new(const unsigned int __nocast prio) +diff --git a/net/dccp/proto.c b/net/dccp/proto.c +index 600dda51d995..f97e92ea34f3 100644 +--- a/net/dccp/proto.c ++++ b/net/dccp/proto.c +@@ -39,7 +39,7 @@ + #include "ccid.h" + #include "dccp.h" + +-DEFINE_SNMP_STAT(struct dccp_mib, dccp_statistics); ++DEFINE_SNMP_STAT(struct dccp_mib, dccp_statistics) __read_mostly; + + atomic_t dccp_orphan_count = ATOMIC_INIT(0); + +diff --git a/net/decnet/dn_table.c b/net/decnet/dn_table.c +index 73a88489ff3e..eeba56f99323 100644 +--- a/net/decnet/dn_table.c ++++ b/net/decnet/dn_table.c +@@ -79,7 +79,7 @@ for( ; ((f) = *(fp)) != NULL && dn_key_eq((f)->fn_key, (key)); (fp) = &(f)->fn_n + static DEFINE_RWLOCK(dn_fib_tables_lock); + struct dn_fib_table *dn_fib_tables[RT_TABLE_MAX + 1]; + +-static kmem_cache_t *dn_hash_kmem; ++static kmem_cache_t *dn_hash_kmem __read_mostly; + static int dn_fib_hash_zombies; + + static inline dn_fib_idx_t dn_hash(dn_fib_key_t key, struct dn_zone *dz) +diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c +index 5810f9d14914..bf147f8db399 100644 +--- a/net/ipv4/af_inet.c ++++ b/net/ipv4/af_inet.c +@@ -113,7 +113,7 @@ + #include + #endif + +-DEFINE_SNMP_STAT(struct linux_mib, net_statistics); ++DEFINE_SNMP_STAT(struct linux_mib, net_statistics) __read_mostly; + + extern void ip_mc_drop_socket(struct sock *sk); + +diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c +index b10d6bb5ef3d..2a8c9afc3695 100644 +--- a/net/ipv4/fib_hash.c ++++ b/net/ipv4/fib_hash.c +@@ -45,8 +45,8 @@ + + #include "fib_lookup.h" + +-static kmem_cache_t *fn_hash_kmem; +-static kmem_cache_t *fn_alias_kmem; ++static kmem_cache_t *fn_hash_kmem __read_mostly; ++static kmem_cache_t *fn_alias_kmem __read_mostly; + + struct fib_node { + struct hlist_node fn_hash; +diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c +index ff21748248e4..b2dea4e5da77 100644 +--- a/net/ipv4/fib_trie.c ++++ b/net/ipv4/fib_trie.c +@@ -166,7 +166,7 @@ static struct tnode *halve(struct trie *t, struct tnode *tn); + static void tnode_free(struct tnode *tn); + static void trie_dump_seq(struct seq_file *seq, struct trie *t); + +-static kmem_cache_t *fn_alias_kmem; ++static kmem_cache_t *fn_alias_kmem __read_mostly; + static struct trie *trie_local = NULL, *trie_main = NULL; + + +diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c +index 25f66b750fd8..24eb56ae1b5a 100644 +--- a/net/ipv4/icmp.c ++++ b/net/ipv4/icmp.c +@@ -114,7 +114,7 @@ struct icmp_bxm { + /* + * Statistics + */ +-DEFINE_SNMP_STAT(struct icmp_mib, icmp_statistics); ++DEFINE_SNMP_STAT(struct icmp_mib, icmp_statistics) __read_mostly; + + /* An array of errno for error messages from dest unreach. */ + /* RFC 1122: 3.2.2.1 States that NET_UNREACH, HOST_UNREACH and SR_FAILED MUST be considered 'transient errs'. */ +diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c +index 4410b9dc03e9..f84ba9c96551 100644 +--- a/net/ipv4/inetpeer.c ++++ b/net/ipv4/inetpeer.c +@@ -73,7 +73,7 @@ + /* Exported for inet_getid inline function. */ + DEFINE_SPINLOCK(inet_peer_idlock); + +-static kmem_cache_t *peer_cachep; ++static kmem_cache_t *peer_cachep __read_mostly; + + #define node_height(x) x->avl_height + static struct inet_peer peer_fake_node = { +diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c +index 220a8b5920ea..473d0f2b2e0d 100644 +--- a/net/ipv4/ip_input.c ++++ b/net/ipv4/ip_input.c +@@ -150,7 +150,7 @@ + * SNMP management statistics + */ + +-DEFINE_SNMP_STAT(struct ipstats_mib, ip_statistics); ++DEFINE_SNMP_STAT(struct ipstats_mib, ip_statistics) __read_mostly; + + /* + * Process Router Attention IP option +diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c +index dc806b578427..9dbf5909f3a6 100644 +--- a/net/ipv4/ipmr.c ++++ b/net/ipv4/ipmr.c +@@ -103,7 +103,7 @@ static DEFINE_SPINLOCK(mfc_unres_lock); + In this case data path is free of exclusive locks at all. + */ + +-static kmem_cache_t *mrt_cachep; ++static kmem_cache_t *mrt_cachep __read_mostly; + + static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local); + static int ipmr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert); +diff --git a/net/ipv4/ipvs/ip_vs_conn.c b/net/ipv4/ipvs/ip_vs_conn.c +index d0145a8b1551..e11952ea17af 100644 +--- a/net/ipv4/ipvs/ip_vs_conn.c ++++ b/net/ipv4/ipvs/ip_vs_conn.c +@@ -40,7 +40,7 @@ + static struct list_head *ip_vs_conn_tab; + + /* SLAB cache for IPVS connections */ +-static kmem_cache_t *ip_vs_conn_cachep; ++static kmem_cache_t *ip_vs_conn_cachep __read_mostly; + + /* counter for current IPVS connections */ + static atomic_t ip_vs_conn_count = ATOMIC_INIT(0); +diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c +index 285743bfbed3..a0648600190e 100644 +--- a/net/ipv4/netfilter/ip_conntrack_core.c ++++ b/net/ipv4/netfilter/ip_conntrack_core.c +@@ -70,8 +70,8 @@ static LIST_HEAD(helpers); + unsigned int ip_conntrack_htable_size = 0; + int ip_conntrack_max; + struct list_head *ip_conntrack_hash; +-static kmem_cache_t *ip_conntrack_cachep; +-static kmem_cache_t *ip_conntrack_expect_cachep; ++static kmem_cache_t *ip_conntrack_cachep __read_mostly; ++static kmem_cache_t *ip_conntrack_expect_cachep __read_mostly; + struct ip_conntrack ip_conntrack_untracked; + unsigned int ip_ct_log_invalid; + static LIST_HEAD(unconfirmed); +diff --git a/net/ipv4/netfilter/ipt_hashlimit.c b/net/ipv4/netfilter/ipt_hashlimit.c +index 564b49bfebcf..2dd1cccbdab9 100644 +--- a/net/ipv4/netfilter/ipt_hashlimit.c ++++ b/net/ipv4/netfilter/ipt_hashlimit.c +@@ -94,7 +94,7 @@ struct ipt_hashlimit_htable { + static DEFINE_SPINLOCK(hashlimit_lock); /* protects htables list */ + static DECLARE_MUTEX(hlimit_mutex); /* additional checkentry protection */ + static HLIST_HEAD(hashlimit_htables); +-static kmem_cache_t *hashlimit_cachep; ++static kmem_cache_t *hashlimit_cachep __read_mostly; + + static inline int dst_cmp(const struct dsthash_ent *ent, struct dsthash_dst *b) + { +diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c +index 68626de6d69c..02fdda68718d 100644 +--- a/net/ipv4/tcp.c ++++ b/net/ipv4/tcp.c +@@ -269,7 +269,7 @@ + + int sysctl_tcp_fin_timeout = TCP_FIN_TIMEOUT; + +-DEFINE_SNMP_STAT(struct tcp_mib, tcp_statistics); ++DEFINE_SNMP_STAT(struct tcp_mib, tcp_statistics) __read_mostly; + + atomic_t tcp_orphan_count = ATOMIC_INIT(0); + +diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c +index 3a5bbbe7dd85..e5beca7de86c 100644 +--- a/net/ipv4/udp.c ++++ b/net/ipv4/udp.c +@@ -113,7 +113,7 @@ + * Snmp MIB for the UDP layer + */ + +-DEFINE_SNMP_STAT(struct udp_mib, udp_statistics); ++DEFINE_SNMP_STAT(struct udp_mib, udp_statistics) __read_mostly; + + struct hlist_head udp_hash[UDP_HTABLE_SIZE]; + DEFINE_RWLOCK(udp_hash_lock); +diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c +index ff685f229b69..5176fc655ea9 100644 +--- a/net/ipv6/icmp.c ++++ b/net/ipv6/icmp.c +@@ -67,7 +67,7 @@ + #include + #include + +-DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics); ++DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics) __read_mostly; + + /* + * The ICMP socket(s). This is the most convenient way to flow control +diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c +index 1b354aa97934..16af874c9e8f 100644 +--- a/net/ipv6/ip6_fib.c ++++ b/net/ipv6/ip6_fib.c +@@ -49,7 +49,7 @@ + + struct rt6_statistics rt6_stats; + +-static kmem_cache_t * fib6_node_kmem; ++static kmem_cache_t * fib6_node_kmem __read_mostly; + + enum fib_walk_state_t + { +diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c +index 7516b8829a9d..76466af8331e 100644 +--- a/net/ipv6/ipv6_sockglue.c ++++ b/net/ipv6/ipv6_sockglue.c +@@ -55,7 +55,7 @@ + + #include + +-DEFINE_SNMP_STAT(struct ipstats_mib, ipv6_statistics); ++DEFINE_SNMP_STAT(struct ipstats_mib, ipv6_statistics) __read_mostly; + + static struct packet_type ipv6_packet_type = { + .type = __constant_htons(ETH_P_IPV6), +diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c +index 67d9a04b6902..390d750449ce 100644 +--- a/net/ipv6/udp.c ++++ b/net/ipv6/udp.c +@@ -59,7 +59,7 @@ + #include + #include + +-DEFINE_SNMP_STAT(struct udp_mib, udp_stats_in6); ++DEFINE_SNMP_STAT(struct udp_mib, udp_stats_in6) __read_mostly; + + /* Grrr, addr_type already calculated by caller, but I don't want + * to add some silly "cookie" argument to this method just for that. +diff --git a/net/ipv6/xfrm6_tunnel.c b/net/ipv6/xfrm6_tunnel.c +index 60c26c87277e..fbef7826a74f 100644 +--- a/net/ipv6/xfrm6_tunnel.c ++++ b/net/ipv6/xfrm6_tunnel.c +@@ -79,7 +79,7 @@ static u32 xfrm6_tunnel_spi; + #define XFRM6_TUNNEL_SPI_MIN 1 + #define XFRM6_TUNNEL_SPI_MAX 0xffffffff + +-static kmem_cache_t *xfrm6_tunnel_spi_kmem; ++static kmem_cache_t *xfrm6_tunnel_spi_kmem __read_mostly; + + #define XFRM6_TUNNEL_SPI_BYADDR_HSIZE 256 + #define XFRM6_TUNNEL_SPI_BYSPI_HSIZE 256 +diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c +index 7d8ec6526347..e7025be77691 100644 +--- a/net/sctp/protocol.c ++++ b/net/sctp/protocol.c +@@ -62,7 +62,7 @@ + /* Global data structures. */ + struct sctp_globals sctp_globals; + struct proc_dir_entry *proc_net_sctp; +-DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics); ++DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics) __read_mostly; + + struct idr sctp_assocs_id; + DEFINE_SPINLOCK(sctp_assocs_id_lock); +@@ -78,8 +78,8 @@ static struct sctp_pf *sctp_pf_inet_specific; + static struct sctp_af *sctp_af_v4_specific; + static struct sctp_af *sctp_af_v6_specific; + +-kmem_cache_t *sctp_chunk_cachep; +-kmem_cache_t *sctp_bucket_cachep; ++kmem_cache_t *sctp_chunk_cachep __read_mostly; ++kmem_cache_t *sctp_bucket_cachep __read_mostly; + + extern int sctp_snmp_proc_init(void); + extern int sctp_snmp_proc_exit(void); +diff --git a/net/socket.c b/net/socket.c +index ce69b7862f59..94fe638b4d72 100644 +--- a/net/socket.c ++++ b/net/socket.c +@@ -274,7 +274,7 @@ int move_addr_to_user(void *kaddr, int klen, void __user *uaddr, int __user *ule + + #define SOCKFS_MAGIC 0x534F434B + +-static kmem_cache_t * sock_inode_cachep; ++static kmem_cache_t * sock_inode_cachep __read_mostly; + + static struct inode *sock_alloc_inode(struct super_block *sb) + { +@@ -333,7 +333,7 @@ static struct super_block *sockfs_get_sb(struct file_system_type *fs_type, + return get_sb_pseudo(fs_type, "socket:", &sockfs_ops, SOCKFS_MAGIC); + } + +-static struct vfsmount *sock_mnt; ++static struct vfsmount *sock_mnt __read_mostly; + + static struct file_system_type sock_fs_type = { + .name = "sockfs", +diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c +index 554f224c0445..fe1a73ce6cff 100644 +--- a/net/sunrpc/rpc_pipe.c ++++ b/net/sunrpc/rpc_pipe.c +@@ -28,13 +28,13 @@ + #include + #include + +-static struct vfsmount *rpc_mount; ++static struct vfsmount *rpc_mount __read_mostly; + static int rpc_mount_count; + + static struct file_system_type rpc_pipe_fs_type; + + +-static kmem_cache_t *rpc_inode_cachep; ++static kmem_cache_t *rpc_inode_cachep __read_mostly; + + #define RPC_UPCALL_TIMEOUT (30*HZ) + +diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c +index 2d9eb7fbd521..f3104035e35d 100644 +--- a/net/sunrpc/sched.c ++++ b/net/sunrpc/sched.c +@@ -34,10 +34,10 @@ static int rpc_task_id; + #define RPC_BUFFER_MAXSIZE (2048) + #define RPC_BUFFER_POOLSIZE (8) + #define RPC_TASK_POOLSIZE (8) +-static kmem_cache_t *rpc_task_slabp; +-static kmem_cache_t *rpc_buffer_slabp; +-static mempool_t *rpc_task_mempool; +-static mempool_t *rpc_buffer_mempool; ++static kmem_cache_t *rpc_task_slabp __read_mostly; ++static kmem_cache_t *rpc_buffer_slabp __read_mostly; ++static mempool_t *rpc_task_mempool __read_mostly; ++static mempool_t *rpc_buffer_mempool __read_mostly; + + static void __rpc_default_timer(struct rpc_task *task); + static void rpciod_killall(void); +diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c +index c58a6f05a0b6..2407a7072327 100644 +--- a/net/xfrm/xfrm_input.c ++++ b/net/xfrm/xfrm_input.c +@@ -12,7 +12,7 @@ + #include + #include + +-static kmem_cache_t *secpath_cachep; ++static kmem_cache_t *secpath_cachep __read_mostly; + + void __secpath_destroy(struct sec_path *sp) + { +diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c +index d65ed8684fc1..83c8135e1764 100644 +--- a/net/xfrm/xfrm_policy.c ++++ b/net/xfrm/xfrm_policy.c +@@ -37,7 +37,7 @@ EXPORT_SYMBOL(xfrm_policy_list); + static DEFINE_RWLOCK(xfrm_policy_afinfo_lock); + static struct xfrm_policy_afinfo *xfrm_policy_afinfo[NPROTO]; + +-static kmem_cache_t *xfrm_dst_cache; ++static kmem_cache_t *xfrm_dst_cache __read_mostly; + + static struct work_struct xfrm_policy_gc_work; + static struct list_head xfrm_policy_gc_list = diff --git a/tests/data/social-preview/0-instance.properties.json b/tests/data/social-preview/0-instance.properties.json new file mode 100644 index 0000000..38588e6 --- /dev/null +++ b/tests/data/social-preview/0-instance.properties.json @@ -0,0 +1,9 @@ +{ + "command": "set", + "title": "Moulti", + "progress_bar": false, + "progress_target": null, + "progress": 0.0, + "step_position": "top", + "step_direction": "down" +} diff --git a/tests/data/social-preview/1-title.contents.log b/tests/data/social-preview/1-title.contents.log new file mode 100644 index 0000000..5a5eda9 --- /dev/null +++ b/tests/data/social-preview/1-title.contents.log @@ -0,0 +1,7 @@ + ▄▄▄ ▄▄▄ ▄▄▄▄ ▄▄ ▄▄ ▄▄ ▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄ + ███ ███ ██▀▀██ ██ ██ ██ ▀▀▀██▀▀▀ ▀▀██▀▀ + ████████ ██ ██ ██ ██ ██ ██ ██ + ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ██ ▀▀ ██ ██ ██ ██ ██ ██ ██ ██ + ██ ██ ██▄▄██ ▀██▄▄██▀ ██▄▄▄▄▄▄ ██ ▄▄██▄▄ + ▀▀ ▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀ ▀▀▀▀▀▀ diff --git a/tests/data/social-preview/1-title.properties.json b/tests/data/social-preview/1-title.properties.json new file mode 100644 index 0000000..c6f8e55 --- /dev/null +++ b/tests/data/social-preview/1-title.properties.json @@ -0,0 +1,14 @@ +{ + "command": "step", + "action": "add", + "id": "title", + "classes": "standard", + "title": "This is a Moulti [italic]step[/]", + "scroll_on_activity": false, + "collapsed": false, + "top_text": "It was made using [yellow1 bold]moulti step add[/] and shall display MOULTI:", + "bottom_text": "Neat, eh? I made it with [yellow1 bold]toilet -f mono12 --metal[/]", + "auto_scroll": true, + "min_height": 1, + "max_height": 25 +} diff --git a/tests/data/social-preview/2-step_ping.contents.log b/tests/data/social-preview/2-step_ping.contents.log new file mode 100644 index 0000000..1a8523c --- /dev/null +++ b/tests/data/social-preview/2-step_ping.contents.log @@ -0,0 +1,6 @@ +PING example.org (2606:2800:21f:cb07:6820:80da:af6b:8b2c) 56 data bytes +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=1 ttl=52 time=99.3 ms +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=2 ttl=52 time=99.9 ms +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=3 ttl=52 time=99.4 ms +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=4 ttl=52 time=99.3 ms +64 bytes from 2606:2800:21f:cb07:6820:80da:af6b:8b2c: icmp_seq=5 ttl=52 time=100 ms diff --git a/tests/data/social-preview/2-step_ping.properties.json b/tests/data/social-preview/2-step_ping.properties.json new file mode 100644 index 0000000..f3ee7c2 --- /dev/null +++ b/tests/data/social-preview/2-step_ping.properties.json @@ -0,0 +1,14 @@ +{ + "command": "step", + "action": "add", + "id": "step_ping", + "classes": "success", + "title": "PING example.org (2606:2800:21f:cb07:6820:80da:af6b:8b2c) 56 data bytes", + "scroll_on_activity": false, + "collapsed": false, + "top_text": "", + "bottom_text": "This is a second step, made via [blue1 bold]ping example.org | moulti pass step_ping[/]", + "auto_scroll": true, + "min_height": 5, + "max_height": 5 +} diff --git a/tests/data/social-preview/3-collapsed.contents.log b/tests/data/social-preview/3-collapsed.contents.log new file mode 100644 index 0000000..bf011c9 --- /dev/null +++ b/tests/data/social-preview/3-collapsed.contents.log @@ -0,0 +1 @@ +Gotcha! There is nothing in here! diff --git a/tests/data/social-preview/3-collapsed.properties.json b/tests/data/social-preview/3-collapsed.properties.json new file mode 100644 index 0000000..43d235b --- /dev/null +++ b/tests/data/social-preview/3-collapsed.properties.json @@ -0,0 +1,14 @@ +{ + "command": "step", + "action": "add", + "id": "collapsed", + "classes": "warning", + "title": "This step probably shows things of the utmost importance, but right now it is collapsed.", + "scroll_on_activity": false, + "collapsed": true, + "top_text": "", + "bottom_text": "", + "auto_scroll": true, + "min_height": 1, + "max_height": 25 +} diff --git a/tests/data/social-preview/4-script.contents.log b/tests/data/social-preview/4-script.contents.log new file mode 100644 index 0000000..287a933 --- /dev/null +++ b/tests/data/social-preview/4-script.contents.log @@ -0,0 +1,13 @@ + 1 #!/usr/bin/env bash + 2 export MOULTI_INSTANCE='social-preview' + 3 [ "${MOULTI_RUN}" ] || exec moulti run -- "$0" "$@" + 4 source moulti-functions.bash + 5 moulti_check_requirements toilet dig ping 'bat|batcat' head tail + 6 moulti_tool_is_available batcat && function bat { batcat "$@"; } + 7 moulti step add title --title='This is a Moulti [italic]step[/]' --top-text='It was made using [yellow1 bold]moulti step add[/] and shall display MOULTI:' --bottom-text='Neat, eh? I made it with [yellow1 bold]toilet -f mono12 --metal[/]' + 8 toilet -w 130 -f mono12 --metal ' MOULTI' | head -8 | tail -n +2 | moulti pass title + 9 moulti step add step_ping --classes='success' --title="PING example.org ($(dig +short AAAA example.org)) 56 data bytes" --max-height=5 --min-height=5 --bottom-text='This is a second step, made via [blue1 bold]ping example.org | moulti pass step_ping[/]' + 10 ping example.org | moulti pass step_ping & + 11 moulti step add collapsed --classes='warning' --title='This step probably shows things of the utmost importance, but right now it is collapsed.' --collapse --text='Gotcha! There is nothing in here!' + 12 moulti step add script --classes='error' --title='Anyway, here is the script that generated all of this:' + 13 bat -f -n -l bash "$0" | moulti pass script diff --git a/tests/data/social-preview/4-script.properties.json b/tests/data/social-preview/4-script.properties.json new file mode 100644 index 0000000..89a3c6e --- /dev/null +++ b/tests/data/social-preview/4-script.properties.json @@ -0,0 +1,14 @@ +{ + "command": "step", + "action": "add", + "id": "script", + "classes": "error", + "title": "Anyway, here is the script that generated all of this:", + "scroll_on_activity": false, + "collapsed": false, + "top_text": "", + "bottom_text": "", + "auto_scroll": true, + "min_height": 1, + "max_height": 25 +} diff --git a/tests/scripts/buttonquestion.bash b/tests/scripts/buttonquestion.bash new file mode 100755 index 0000000..adafadc --- /dev/null +++ b/tests/scripts/buttonquestion.bash @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +moulti buttonquestion add my_second_question \ + --title='My second question with Moulti' \ + --text='What is your name?' \ + --bottom-text='What a mess: https://en.wikipedia.org/wiki/Alice_and_Bob' \ + --button alice success Alice \ + --button bob primary Bob \ + --button craig default Craig \ + --button mallory error Mallory \ + --button oscar warning Oscar +answer=$(moulti buttonquestion get-answer my_second_question --wait) +[ "${answer}" ] && moulti step add answer --title='Got this answer' --text="${answer}" diff --git a/tests/scripts/diff.bash b/tests/scripts/diff.bash new file mode 100755 index 0000000..005a812 --- /dev/null +++ b/tests/scripts/diff.bash @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +moulti set --title='git show ba89966c1984' +export MOULTI_DIFF_NO_TITLE=yes +export MOULTI_DIFF_VERBOSE=yes +first_step=$(moulti diff parse tests/data/linux-kernel-ba89966c1984.patch | head -1 | sed 's/\w* //') +moulti step update "${first_step}" --max-height=7 diff --git a/tests/scripts/display-steps.bash b/tests/scripts/display-steps.bash new file mode 100755 index 0000000..bb90938 --- /dev/null +++ b/tests/scripts/display-steps.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +moulti set "$@" +echo {1..10} | xargs -n 1 moulti step add diff --git a/tests/scripts/divider.bash b/tests/scripts/divider.bash new file mode 100755 index 0000000..eddf02c --- /dev/null +++ b/tests/scripts/divider.bash @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +MAX="$1" +function run { + ((STEP >= MAX)) && exit 0 + "$@" + ((++STEP)) +} +title=$'This text is simply displayed.\nMulti-line is possible. So is [i]rich formatting[/]' +run moulti divider add my_first_divider --title="${title}" +run moulti divider update my_first_divider --classes=warning +run moulti divider delete my_first_divider diff --git a/tests/scripts/fill-step.bash b/tests/scripts/fill-step.bash new file mode 100755 index 0000000..6f5a55f --- /dev/null +++ b/tests/scripts/fill-step.bash @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +moulti step add 1 +moulti pass 1 <= MAX)) && exit 0 + "$@" + ((++STEP)) +} +run moulti set --title='This is MY (first) Moulti instance' +run moulti step add my_step --title='My first step' +# The documentation pipes the output of `ip -c a` but this is clearly not reproducible: +run moulti pass my_step < mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host noprefixroute + valid_lft forever preferred_lft forever +2: enxabcdef012345:  mtu 1500 qdisc fq_codel state UP group default qlen 1000 + link/ether ab:cd:ef:01:23:45 brd ff:ff:ff:ff:ff:ff + inet 1.2.3.4/24 brd 1.2.3.255 scope global dynamic noprefixroute enxf44dad02f4c5 + valid_lft 78769sec preferred_lft 78769sec + inet6 2001:abc:def0:1234:5678:9abc:def0:1234/64 scope global dynamic noprefixroute + valid_lft 86400sec preferred_lft 14400sec + inet6 fe80::abc:def0:1234:4678/64 scope link noprefixroute + valid_lft forever preferred_lft forever +3: wlp2s0:  mtu 1500 qdisc noqueue state DOWN group default qlen 1000 + link/ether 12:34:56:ab:cd:ef brd ff:ff:ff:ff:ff:ff permaddr fe:dc:ba:65:43:21 + altname wlxfedcba654321 +EOF +run moulti step update my_step --classes='success' +run moulti step update my_step --top-text='Here is the output of [red bold]ip -color address[/]:' +run moulti step update my_step --bottom-text='[blink]blink[/] [bold]bold[/] [conceal]conceal[/] [italic]italic[/] [overline]overline[/] [reverse]reverse[/] [strike]strike[/] [underline]underline[/] [underline2]underline2[/] [blue]blue[/] [on yellow1]on yellow1[/] [blue on yellow1]blue on yellow1[/]' +for class in warning error inactive standard; do + run moulti step add "${class}_example" \ + --classes="${class}" \ + --title="${class^} step" \ + --text="This is a step with class '${class}'." \ + --bottom-text=' ' +done +run moulti step clear warning_example +run moulti step delete error_example diff --git a/tests/scripts/inputquestion.bash b/tests/scripts/inputquestion.bash new file mode 100755 index 0000000..39c30c2 --- /dev/null +++ b/tests/scripts/inputquestion.bash @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +moulti inputquestion add my_first_question \ + --title='My first question with Moulti' \ + --text='What is your name?' \ + --bottom-text='We want information... information... information!' \ + --placeholder='Please enter your name in this input field' +answer=$(moulti inputquestion get-answer my_first_question --wait) +moulti step add answer --title='Got this answer' --text="${answer}" diff --git a/tests/scripts/manual-scrolling-through-steps.bash b/tests/scripts/manual-scrolling-through-steps.bash new file mode 100755 index 0000000..d0cb401 --- /dev/null +++ b/tests/scripts/manual-scrolling-through-steps.bash @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +sleep "${1:-1}" + +# Create 5 steps: +echo {1..5} | xargs -n 1 moulti step add --scroll-on-activity=true + +# Fill them with lorem ipsum text: +((++i)) +nl -ba <= MAX)) && exit 0 + "$@" + ((++STEP)) +} +run moulti set --progress-bar --progress=20 --progress-target=100 # used to be 1138/5555 but liable to bring floating point subtleties and rounding issues +run moulti set --progress 80 --progress-target 100 +run moulti set --progress +20 +run moulti set --progress -5 diff --git a/tests/scripts/question.bash b/tests/scripts/question.bash new file mode 100755 index 0000000..58c051b --- /dev/null +++ b/tests/scripts/question.bash @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +moulti question add my_third_question \ + --title='My third question with Moulti' \ + --text='What is your name?' \ + --bottom-text='I live on the second floor' \ + --placeholder='Enter your name in this input field, or click a button' \ + --button 'My name is Alice' default Alice \ + --button 'My name is Bob' default Bob \ + --button 'My name is {input}' success 'Neither, use input' +answer=$(moulti question get-answer my_third_question --wait) +moulti step add answer --title='Got this answer' --text="${answer}" diff --git a/tests/scripts/run-output.bash b/tests/scripts/run-output.bash new file mode 100755 index 0000000..557b8f9 --- /dev/null +++ b/tests/scripts/run-output.bash @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +if [ "$1" == '--create-step' ]; then + moulti step add moulti_run_output --class='warning' --title='Moulti unexpected output' --bottom-text=' ' +fi + +echo '[stdout] Unexpected output' +echo '[stderr] Unexpected output' > /dev/stderr + + +if [ "$1" == '--create-step' ]; then + # The "moulti_run_output" step is locked upon reception of the first bytes + # written on stdout or stderr, which is not instantaneous. + sleep .5 + # This step cannot be deleted while the script is running, therefore this + # should emit an error message... which should end up in that very step. + moulti step delete moulti_run_output 2>&1 +fi diff --git a/tests/scripts/scrolling-inside-steps.bash b/tests/scripts/scrolling-inside-steps.bash new file mode 100755 index 0000000..7fb9741 --- /dev/null +++ b/tests/scripts/scrolling-inside-steps.bash @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +function output { + local max="${1}"; shift + while sleep 0.1; do + echo "$@" + done | stdbuf --output=0 head "-${max}" +} + +moulti step add 1 --min-height=10 --max-height=10 --title='Step with auto-scroll enabled by default' +moulti step add 2 --min-height=10 --max-height=10 --title='Step with auto-scroll disabled' --no-auto-scroll +moulti step add 3 --min-height=10 --max-height=10 --title='Step with auto-scroll enabled by default' +output 40 'interrupted auto-scrolling' | moulti pass 1 & +output 40 'no auto-scrolling' | moulti pass 2 & +output 40 'auto-scrolling' | moulti pass 3 & +wait diff --git a/tests/scripts/sleep.bash b/tests/scripts/sleep.bash new file mode 100755 index 0000000..3c3fef5 --- /dev/null +++ b/tests/scripts/sleep.bash @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# Optionally create/destroy a beacon file that reflects whether this process is +# still running: +BEACON_PATH="${2}" +if [ "${BEACON_PATH}" ]; then + touch "${BEACON_PATH}" + function cleanup { + unlink "${BEACON_PATH}" + } + trap cleanup EXIT +fi +sleep "$1" diff --git a/tests/scripts/step-classes.bash b/tests/scripts/step-classes.bash new file mode 100755 index 0000000..8087110 --- /dev/null +++ b/tests/scripts/step-classes.bash @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +for class in warning error inactive standard customstate; do + moulti step add "${class}_example" \ + --classes="${class}" \ + --title="${class^} step" \ + --text="This is a step with class '${class}'." \ + --bottom-text=' ' +done diff --git a/tests/scripts/text-search.bash b/tests/scripts/text-search.bash new file mode 100755 index 0000000..23fd9ca --- /dev/null +++ b/tests/scripts/text-search.bash @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +# Create 5 steps: +echo {1..5} | xargs -n 1 moulti step add + +# Fill them with lorem ipsum text: +((++i)) +nl -ba <