mix vtex.smoke (Vtex v0.1.0)

Copy Markdown View Source

Reads your keystrokes in raw mode and runs them through the real Vtex.Input.Stream -> Vtex.Input pipeline, printing the events Vtex produces.

It uses the same pending?/flush + timer pattern documented in Vtex.Input.Stream, so the Escape key resolves via the timeout exactly as it would in a server.

dev/smoke

Press keys; watch the events. Ctrl-C to quit.

The dev/smoke wrapper runs the task with -noinput, which disables the Erlang shell's own stdin reader. That matters: without it the BEAM and this task's reader both read the terminal and split keystrokes between them, silently dropping some. Running mix vtex.smoke directly (without -noinput) is refused for that reason — use the wrapper, or set the flag yourself (ELIXIR_ERL_OPTIONS="-noinput" mix vtex.smoke).

All terminal I/O goes straight to the controlling tty device (discovered via ps): input is streamed by cat -u <device> as a port, output is written to the device directly. This sidesteps Erlang's standard IO, so it works under -noinput and restores the terminal on exit. If a hard kill ever leaves it raw, run reset.

This task is development-only: it lives under dev/, is compiled only in the :dev environment, and is never included in the published package.