# Dedent Common Whitespace From Multiline String

I'm adding tests to cover some custom logic in the _usage_ messages that are
produced by Click [in a CLI I'm building](https://github.com/jbranchaud/py-vmt).
The usage output is a mutliline string formatted with some indentation. On top
of that, I'm putting it in a Python test file with some additional syntactical
indentation.

If this was Ruby, I would reach for the `<<~` heredoc syntax. The closest
equivalent to that in Python is
[`textwrap.dedent`](https://docs.python.org/3/library/textwrap.html#textwrap.dedent).

> Remove any common leading whitespace from every line in text.
>
> This can be used to make triple-quoted strings line up with the left edge of
> the display, while still presenting them in the source code in indented form.

```python
import textwrap

def test_base_help_message():
    runner = BetterCliRunner()

    help_result = runner.invoke(cli, ["--help"])
    output = textwrap.dedent("""\
        Usage: vmt [OPTIONS] COMMAND [ARGS]...

        Options:
          -v, --verbose  See extra output when running commands
          --help         Show this message and exit.

        Commands:
          cancel
          log
          start
          status
          stop
    """)
    assert output in help_result.output
```

Before adding in `textwrap.dedent`, the test was failing because of bits of
extra whitespace that wasn't matching up with the actual CLI output.

Note: the leading `\` after the opening `"""` is needed to remove the leading
newline that would otherwise be included.
