From 3bed74c089a6df053e758ae7c02f5b29d8454758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 9 Oct 2025 16:53:07 +0100 Subject: [PATCH] nixos-facter: add passthru.tests --- nixos/tests/all-tests.nix | 1 + nixos/tests/facter/default.nix | 29 ++++++++++++++++++++++ nixos/tests/facter/facter.json | 31 ++++++++++++++++++++++++ pkgs/by-name/ni/nixos-facter/package.nix | 5 ++++ 4 files changed, 66 insertions(+) create mode 100644 nixos/tests/facter/default.nix create mode 100644 nixos/tests/facter/facter.json diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index e471baaf7849..b7a3065c5cf1 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -512,6 +512,7 @@ in etebase-server = runTest ./etebase-server.nix; etesync-dav = runTest ./etesync-dav.nix; evcc = runTest ./evcc.nix; + facter = runTest ./facter; fail2ban = runTest ./fail2ban.nix; fakeroute = runTest ./fakeroute.nix; fancontrol = runTest ./fancontrol.nix; diff --git a/nixos/tests/facter/default.nix b/nixos/tests/facter/default.nix new file mode 100644 index 000000000000..7083d5d8bd09 --- /dev/null +++ b/nixos/tests/facter/default.nix @@ -0,0 +1,29 @@ +{ lib, pkgs, ... }: +{ + name = "facter"; + meta = with lib.maintainers; { + maintainers = [ mic92 ]; + }; + + nodes.machine = { + hardware.facter.reportPath = ./facter.json; + environment.systemPackages = [ pkgs.nixos-facter ]; + }; + + testScript = '' + from pprint import pprint + + machine.wait_for_unit("multi-user.target") + + with subtest("Run nixos-facter and verify it produces valid JSON"): + import json + # Run nixos-facter and check it produces valid output + output = machine.succeed("nixos-facter") + # Parse JSON to verify it's valid + report = json.loads(output) + pprint(report) + assert "version" in report, "Expected version field in nixos-facter output" + assert "system" in report, "Expected system field in nixos-facter output" + assert report["version"] == 1, f"Expected version 1, got {report['version']}" + ''; +} diff --git a/nixos/tests/facter/facter.json b/nixos/tests/facter/facter.json new file mode 100644 index 000000000000..37d6ba87c14d --- /dev/null +++ b/nixos/tests/facter/facter.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "system": "x86_64-linux", + "virtualisation": "kvm", + "hardware": { + "bios": { + "smbios_version": 520 + }, + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "AuthenticAMD", + "family": 25, + "model": 33 + } + ], + "system": { + "form_factor": "desktop" + } + }, + "smbios": { + "bios": { + "vendor": "SeaBIOS", + "version": "test" + }, + "system": { + "manufacturer": "QEMU", + "product": "Standard PC" + } + } +} diff --git a/pkgs/by-name/ni/nixos-facter/package.nix b/pkgs/by-name/ni/nixos-facter/package.nix index 8c519a65256f..6b75db216fc4 100644 --- a/pkgs/by-name/ni/nixos-facter/package.nix +++ b/pkgs/by-name/ni/nixos-facter/package.nix @@ -7,6 +7,7 @@ gcc, pkg-config, makeWrapper, + nixosTests, stdenv, systemdMinimal, }: @@ -61,6 +62,10 @@ buildGoModule rec { "-X github.com/numtide/nixos-facter/pkg/build.System=${stdenv.hostPlatform.system}" ]; + passthru.tests = { + inherit (nixosTests) facter; + }; + meta = { description = "Declarative hardware configuration for NixOS"; homepage = "https://github.com/numtide/nixos-facter";