38 lines
1.3 KiB
Elixir
38 lines
1.3 KiB
Elixir
defmodule ProxmoxAgent.Collectors.SystemInfoTest do
|
|
use ExUnit.Case, async: true
|
|
|
|
alias ProxmoxAgent.Collectors.SystemInfo
|
|
|
|
@fixtures Path.expand("../../fixtures/system", __DIR__)
|
|
|
|
defp fake_runner do
|
|
fn
|
|
"pveversion", [] -> {:ok, File.read!(Path.join(@fixtures, "pveversion.txt"))}
|
|
"zfs", ["--version"] -> {:ok, File.read!(Path.join(@fixtures, "zfs_version.txt"))}
|
|
"apt", ["list", "--upgradable"] -> {:ok, File.read!(Path.join(@fixtures, "apt_upgradable.txt"))}
|
|
end
|
|
end
|
|
|
|
test "collects pveversion, zfs version and pending upgrade count" do
|
|
sample = SystemInfo.collect(runner: fake_runner())
|
|
|
|
assert sample.pve_version =~ "pve-manager/8.3.1"
|
|
assert sample.zfs_version =~ "2.3.0"
|
|
assert sample.pending_updates == 2
|
|
assert sample.errors == []
|
|
end
|
|
|
|
test "partial sample when one command fails" do
|
|
partial = fn
|
|
"pveversion", [] -> {:ok, "pve-manager/8.3.1/abc (running kernel: 6.8.12-1-pve)\n"}
|
|
"zfs", ["--version"] -> {:error, {:enoent, "zfs"}}
|
|
"apt", ["list", "--upgradable"] -> {:ok, "Listing...\n"}
|
|
end
|
|
|
|
sample = SystemInfo.collect(runner: partial)
|
|
assert sample.pve_version =~ "8.3.1"
|
|
assert sample.zfs_version == nil
|
|
assert sample.pending_updates == 0
|
|
assert length(sample.errors) == 1
|
|
end
|
|
end
|