View Source MixTestInteractive.Command behaviour (mix test.interactive v4.1.2)

Behaviour for interactive mode commands.

All commands must implement this behaviour.

It is recommended to use this module in the command's module:

defmodule MyCommand do
  use MixTestInteractive.Command,
    command: "c",
    desc: "do the thing"

  # ...
end

This will provide overridable implementations of most of the callbacks.

:command is the key sequence the user will use to invoke the command. If a more appropriate command name is required in the help text, you can override the name/0 callback.

:desc is the command's description.

:command and :desc should be written so that the following pattern reads nicely in the usage output: <command> to <description>. For example, a to run all tests.

Summary

Callbacks

Is the command applicable given the current configuration?

The command's key sequence.

The command's description.

The command's name.

Execute the command.

Types

response()

@type response() ::
  {:ok, MixTestInteractive.Settings.t()}
  | {:no_run, MixTestInteractive.Settings.t()}
  | :help
  | :quit
  | :unknown

Callbacks

applies?(t)

@callback applies?(MixTestInteractive.Settings.t()) :: boolean()

Is the command applicable given the current configuration?

Returns true by default if not overridden.

command()

@callback command() :: String.t()

The command's key sequence.

Key sequences should be short (single character preferred) and unique.

Returns the value of the :command argument passed in the use statement.

Not overridable.

description()

@callback description() :: String.t()

The command's description.

Descriptions should be written to fit the pattern <command> to <description>. For example, a to run all tests.

Returns the value of the :desc argument passed in the use statement.

Not overridable.

name()

@callback name() :: String.t()

The command's name.

Readable name for the command.

Defaults to the command/0, but can be overridden to make usage output clearer.

run(list, t)

@callback run([String.t()], MixTestInteractive.Settings.t()) :: response()

Execute the command.

Performs the desired action in response to the command.

Most commands return an :ok tuple with an updated configuration, allowing MixTestInteractive.InteractiveMode to run the tests with the new configuration.

A command can return a :no_run tuple with an updated configuration if the tests should not be run in response to the command.

A command can return :help to show detailed usage information, or :quit to exit mix test.interactive.

No default provided.