{ config, lib, pkgs, inputs, ... }: let # Create pkgs with list-usb-drives overlay testPkgs = import inputs.nixpkgs { system = pkgs.system; overlays = [ (import ../overlays.nix) ]; }; in testPkgs.testers.runNixOSTest { name = "list-usb-drives test"; nodes.machine = { pkgs, ... }: { environment.systemPackages = [ testPkgs.list-usb-drives ]; }; testScript = '' start_all() machine.wait_for_unit("multi-user.target") # Create mock USB device symlinks machine.succeed("mkdir -p /tmp/mock-by-id") machine.succeed("touch /tmp/mock-by-id/usb-drive1-0:0") machine.succeed("touch /tmp/mock-by-id/usb-drive2-0:1") machine.succeed("touch /tmp/mock-by-id/usb-drive1-0:0-part1") # Should be filtered out # Test with mock data mock_data = "drive1:Model1 Serial1|drive2:Model2 Serial2" output = machine.succeed(f"LIST_USB_DRIVES_DISK_DIR=/tmp/mock-by-id LIST_USB_DRIVES_TEST_MODE=1 LIST_USB_DRIVES_MOCK_DATA='{mock_data}' list-usb-drives") # Expected exact output expected = 'DRIVE BAY\nModel1_Serial1 0"\nModel2_Serial2 1"\n' assert output == expected print("✓ Mock USB device test passed") ''; }