#!/usr/bin/env bats # tests/test_logs.bats — Tests for 'fs5 logs' command (US5) bats_require_minimum_version 1.5.0 SCRIPT="${BATS_TEST_DIRNAME}/../fs5" setup() { export DEVICE_SERIAL="RD51QE202392" export LOG_FILE="/tmp/fs5-test-$$.log" LOG_OUTPUT="/tmp/fs5-logcap-$$.txt" } teardown() { rm -f "${LOG_FILE}" "${LOG_OUTPUT}" } @test "logs --lines: outputs exactly N lines" { run "${SCRIPT}" logs --lines 5 [ "${status}" -eq 0 ] local line_count line_count=$(echo "${output}" | wc -l) [ "${line_count}" -ge 1 ] [ "${line_count}" -le 10 ] } @test "logs --lines: exits after printing lines (non-streaming)" { # Should complete within 15 seconds (not hang) run timeout 15 "${SCRIPT}" logs --lines 3 [ "${status}" -eq 0 ] } @test "logs --output: writes to file" { run "${SCRIPT}" logs --lines 5 --output "${LOG_OUTPUT}" [ "${status}" -eq 0 ] [ -f "${LOG_OUTPUT}" ] [ -s "${LOG_OUTPUT}" ] } @test "logs --filter: filters by tag" { run "${SCRIPT}" logs --lines 20 --filter "System" [ "${status}" -eq 0 ] # Output may be empty if tag not present, but must not error } @test "logs: --help shows usage" { run "${SCRIPT}" logs --help [ "${status}" -eq 0 ] [[ "${output}" == *"logs"* ]] } @test "logs: exits with code 2 when device not connected" { DEVICE_SERIAL="INVALID_SERIAL_000" run "${SCRIPT}" logs --lines 1 [ "${status}" -eq 2 ] }