Skip to content

YAML Reference

pepedinho edited this page May 12, 2026 · 1 revision

YAML Test Specification

The configuration file is the core of Walkman. It dictates the environment, the boot expectations, and the shell commands to execute.

Top-Level Fields

Field Type Description Required
name String The display name of the test suite. Yes
command String The command used to launch the emulator (e.g., QEMU). Must include stdio forwarding. Yes
timeout_ms Integer Global timeout in milliseconds for each individual expectation. Yes
boot_sequence Array of Strings Ordered list of logs emitted by the kernel during boot. Yes
shell_interactions Object Defines the shell prompt and the list of commands to test. Yes

The shell_interactions Object

This block defines how Walkman behaves once the boot sequence is complete.

  • prompt (String): The exact string denoting that the shell is ready to receive input (e.g., auri-os). Walkman waits for this prompt before and after every command.
  • tests (Array of Objects): The list of commands to run.

The expect Field (Single vs Multi-line)

The expect field inside a test object is highly flexible. You can verify a single string, or a sequence of strings that must appear in order.

Single Expectation

If you only need to verify one output, provide a simple string. Walkman will implicitly convert it.

tests:
  - command: "uptime"
    expect: "Current Uptime:"

Multiple Expectations

If a command outputs a block of text and you want to verify specific parts in a strict order, provide an array. Walkman will wait for the first string, then wait for the second, etc.

tests:
  - command: "memdump 16"
    expect: 
      - "PMM BITMAP DUMP"
      - "Legend: [#] Used/Reserved"
      - "======================="

Important Considerations

  • Echoes and Returns: When interacting with a real shell, the terminal often echoes the command typed, and returns a carriage return (\r\n). If your expect string is too short (e.g., expect: "s" for uptime -s), Walkman might match the echo of your input instead of the command's result. Always try to match complete words or include newline characters in your expectations.