diff --git a/.golangci.yml b/.golangci.yml index 328b670..da2f6bb 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -102,23 +102,6 @@ linters-settings: disabled: true testifylint: enable-all: true - thelper: - test: - # Check t.Helper() begins helper function. - # Default: true - begin: false - benchmark: - # Check b.Helper() begins helper function. - # Default: true - begin: false - tb: - # Check tb.Helper() begins helper function. - # Default: true - begin: false - fuzz: - # Check f.Helper() begins helper function. - # Default: true - begin: false usetesting: os-create-temp: false os-mkdir-temp: false diff --git a/cpu/cpu_linux_test.go b/cpu/cpu_linux_test.go index 9690848..04cd4b0 100644 --- a/cpu/cpu_linux_test.go +++ b/cpu/cpu_linux_test.go @@ -10,6 +10,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/shirou/gopsutil/v4/internal/common" ) func TestTimesEmpty(t *testing.T) { @@ -76,10 +78,10 @@ func TestCountsAgainstLscpu(t *testing.T) { expectedPhysical := coresPerSocket * sockets * books * drawers expectedLogical := expectedPhysical * threadsPerCore physical, err := Counts(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) logical, err := Counts(true) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.Equalf(t, expectedPhysical, physical, "expected %v, got %v", expectedPhysical, physical) assert.Equalf(t, expectedLogical, logical, "expected %v, got %v", expectedLogical, logical) diff --git a/cpu/cpu_plan9_test.go b/cpu/cpu_plan9_test.go index b11f5d8..ebbf948 100644 --- a/cpu/cpu_plan9_test.go +++ b/cpu/cpu_plan9_test.go @@ -11,6 +11,8 @@ import ( "github.com/google/go-cmp/cmp/cmpopts" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/shirou/gopsutil/v4/internal/common" ) var timesTests = []struct { @@ -35,7 +37,7 @@ func TestTimesPlan9(t *testing.T) { t.Run(tt.mockedRootFS, func(t *testing.T) { t.Setenv("HOST_ROOT", filepath.Join("testdata/plan9", tt.mockedRootFS)) stats, err := Times(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) eps := cmpopts.EquateApprox(0, 0.00000001) assert.Truef(t, cmp.Equal(stats, tt.stats, eps), "got: %+v\nwant: %+v", stats, tt.stats) diff --git a/cpu/cpu_test.go b/cpu/cpu_test.go index cf087db..4d9794b 100644 --- a/cpu/cpu_test.go +++ b/cpu/cpu_test.go @@ -2,7 +2,6 @@ package cpu import ( - "errors" "fmt" "os" "runtime" @@ -15,15 +14,9 @@ import ( "github.com/shirou/gopsutil/v4/internal/common" ) -func skipIfNotImplementedErr(t *testing.T, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - t.Skip("not implemented") - } -} - func TestTimes(t *testing.T) { v, err := Times(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, v, "could not get CPUs: %s", err) empty := TimesStat{} @@ -33,11 +26,11 @@ func TestTimes(t *testing.T) { // test sum of per cpu stats is within margin of error for cpu total stats cpuTotal, err := Times(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, cpuTotal, "could not get CPUs: %s", err) perCPU, err := Times(true) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, perCPU, "could not get CPUs: %s", err) var perCPUUserTimeSum float64 @@ -67,12 +60,12 @@ func TestTimes(t *testing.T) { func TestCounts(t *testing.T) { v, err := Counts(true) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotZerof(t, v, "could not get logical CPU counts: %v", v) t.Logf("logical cores: %d", v) v, err = Counts(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotZerof(t, v, "could not get physical CPU counts: %v", v) t.Logf("physical cores: %d", v) @@ -91,7 +84,7 @@ func TestTimeStat_String(t *testing.T) { func TestInfo(t *testing.T) { v, err := Info() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, v, "could not get CPU Info") for _, vv := range v { @@ -100,13 +93,14 @@ func TestInfo(t *testing.T) { } func testPercent(t *testing.T, percpu bool) { + t.Helper() numcpu := runtime.NumCPU() testCount := 3 if runtime.GOOS != "windows" { testCount = 100 v, err := Percent(time.Millisecond, percpu) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) // Skip CI which CPU num is different if os.Getenv("CI") != "true" { @@ -118,7 +112,7 @@ func testPercent(t *testing.T, percpu bool) { for i := 0; i < testCount; i++ { duration := time.Duration(10) * time.Microsecond v, err := Percent(duration, percpu) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) for _, percent := range v { // Check for slightly greater then 100% to account for any rounding issues. @@ -130,13 +124,14 @@ func testPercent(t *testing.T, percpu bool) { } func testPercentLastUsed(t *testing.T, percpu bool) { + t.Helper() numcpu := runtime.NumCPU() testCount := 10 if runtime.GOOS != "windows" { testCount = 2 v, err := Percent(time.Millisecond, percpu) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) // Skip CI which CPU num is different if os.Getenv("CI") != "true" { @@ -147,7 +142,7 @@ func testPercentLastUsed(t *testing.T, percpu bool) { } for i := 0; i < testCount; i++ { v, err := Percent(0, percpu) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) time.Sleep(1 * time.Millisecond) for _, percent := range v { diff --git a/disk/disk_test.go b/disk/disk_test.go index c55517d..1e665d7 100644 --- a/disk/disk_test.go +++ b/disk/disk_test.go @@ -2,7 +2,6 @@ package disk import ( - "errors" "fmt" "runtime" "sync" @@ -14,26 +13,20 @@ import ( "github.com/shirou/gopsutil/v4/internal/common" ) -func skipIfNotImplementedErr(t *testing.T, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - t.Skip("not implemented") - } -} - func TestUsage(t *testing.T) { path := "/" if runtime.GOOS == "windows" { path = "C:" } v, err := Usage(path) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.Equalf(t, v.Path, path, "error %v", err) } func TestPartitions(t *testing.T) { ret, err := Partitions(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) if err != nil || len(ret) == 0 { t.Errorf("error %v", err) } @@ -47,7 +40,7 @@ func TestPartitions(t *testing.T) { func TestIOCounters(t *testing.T) { ret, err := IOCounters() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, ret, "ret is empty") empty := IOCountersStat{} diff --git a/host/host_test.go b/host/host_test.go index 5a5ab09..2e9e55b 100644 --- a/host/host_test.go +++ b/host/host_test.go @@ -2,7 +2,6 @@ package host import ( - "errors" "fmt" "os" "sync" @@ -14,15 +13,9 @@ import ( "github.com/shirou/gopsutil/v4/internal/common" ) -func skipIfNotImplementedErr(t *testing.T, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - t.Skip("not implemented") - } -} - func TestHostID(t *testing.T) { v, err := HostID() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, v, "Could not get host id %v", v) t.Log(v) @@ -30,7 +23,7 @@ func TestHostID(t *testing.T) { func TestInfo(t *testing.T) { v, err := Info() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) empty := &InfoStat{} assert.NotSamef(t, v, empty, "Could not get hostinfo %v", v) @@ -44,7 +37,7 @@ func TestUptime(t *testing.T) { } v, err := Uptime() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotZerof(t, v, "Could not get up time %v", v) } @@ -54,14 +47,14 @@ func TestBootTime(t *testing.T) { t.Skip("Skip CI") } v, err := BootTime() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotZerof(t, v, "Could not get boot time %v", v) assert.GreaterOrEqualf(t, v, 946652400, "Invalid Boottime, older than 2000-01-01") t.Logf("first boot time: %d", v) v2, err := BootTime() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.Equalf(t, v, v2, "cached boot time is different") t.Logf("second boot time: %d", v2) @@ -69,7 +62,7 @@ func TestBootTime(t *testing.T) { func TestUsers(t *testing.T) { v, err := Users() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) empty := UserStat{} if len(v) == 0 { @@ -109,7 +102,7 @@ func TestUserStat_String(t *testing.T) { func TestGuid(t *testing.T) { id, err := HostID() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, id, "Host id is empty") t.Logf("Host id value: %v", id) @@ -123,7 +116,7 @@ func TestVirtualization(t *testing.T) { go func(j int) { system, role, err := Virtualization() wg.Done() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) assert.NoErrorf(t, err, "Virtualization() failed, %v", err) if j == 9 { @@ -136,7 +129,7 @@ func TestVirtualization(t *testing.T) { func TestKernelVersion(t *testing.T) { version, err := KernelVersion() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "KernelVersion() failed, %v", err) assert.NotEmptyf(t, version, "KernelVersion() returns empty: %s", version) @@ -145,7 +138,7 @@ func TestKernelVersion(t *testing.T) { func TestPlatformInformation(t *testing.T) { platform, family, version, err := PlatformInformation() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "PlatformInformation() failed, %v", err) assert.NotEmptyf(t, platform, "PlatformInformation() returns empty: %v", platform) diff --git a/internal/common/common.go b/internal/common/common.go index 3981603..25ed2c1 100644 --- a/internal/common/common.go +++ b/internal/common/common.go @@ -31,8 +31,9 @@ import ( ) var ( - Timeout = 3 * time.Second - ErrTimeout = errors.New("command timed out") + Timeout = 3 * time.Second + ErrNotImplementedError = errors.New("not implemented yet") + ErrTimeout = errors.New("command timed out") ) type Invoker interface { @@ -97,8 +98,6 @@ func (i FakeInvoke) CommandWithContext(ctx context.Context, name string, arg ... return i.Command(name, arg...) } -var ErrNotImplementedError = errors.New("not implemented yet") - // ReadFile reads contents from a file func ReadFile(filename string) (string, error) { content, err := os.ReadFile(filename) diff --git a/internal/common/common_testing.go b/internal/common/common_testing.go new file mode 100644 index 0000000..55f36f1 --- /dev/null +++ b/internal/common/common_testing.go @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: BSD-3-Clause +package common + +import ( + "errors" + "testing" +) + +func SkipIfNotImplementedErr(tb testing.TB, err error) { + tb.Helper() + if errors.Is(err, ErrNotImplementedError) { + tb.Skip("not implemented") + } +} diff --git a/load/load_test.go b/load/load_test.go index 0bcd9f3..c69094c 100644 --- a/load/load_test.go +++ b/load/load_test.go @@ -2,7 +2,6 @@ package load import ( - "errors" "fmt" "testing" @@ -12,15 +11,9 @@ import ( "github.com/shirou/gopsutil/v4/internal/common" ) -func skipIfNotImplementedErr(tb testing.TB, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - tb.Skip("not implemented") - } -} - func TestAvg(t *testing.T) { v, err := Avg() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) empty := &AvgStat{} @@ -41,7 +34,7 @@ func TestAvgStat_String(t *testing.T) { func TestMisc(t *testing.T) { v, err := Misc() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) empty := &MiscStat{} @@ -64,8 +57,9 @@ func TestMiscStatString(t *testing.T) { func BenchmarkLoad(b *testing.B) { loadAvg := func(tb testing.TB) { + tb.Helper() v, err := Avg() - skipIfNotImplementedErr(tb, err) + common.SkipIfNotImplementedErr(tb, err) require.NoErrorf(tb, err, "error %v", err) empty := &AvgStat{} assert.NotSamef(tb, v, empty, "error load: %v", v) diff --git a/mem/mem_linux_test.go b/mem/mem_linux_test.go index e2ae9ec..f0b12a0 100644 --- a/mem/mem_linux_test.go +++ b/mem/mem_linux_test.go @@ -12,6 +12,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/shirou/gopsutil/v4/internal/common" ) func TestExVirtualMemory(t *testing.T) { @@ -127,7 +129,7 @@ func TestVirtualMemoryLinux(t *testing.T) { t.Setenv("HOST_PROC", filepath.Join("testdata/linux/virtualmemory/", tt.mockedRootFS, "proc")) stat, err := VirtualMemory() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.Truef(t, reflect.DeepEqual(stat, tt.stat), "got: %+v\nwant: %+v", stat, tt.stat) }) diff --git a/mem/mem_plan9_test.go b/mem/mem_plan9_test.go index 587e00c..c345fd2 100644 --- a/mem/mem_plan9_test.go +++ b/mem/mem_plan9_test.go @@ -9,6 +9,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/shirou/gopsutil/v4/internal/common" ) var virtualMemoryTests = []struct { @@ -34,7 +36,7 @@ func TestVirtualMemoryPlan9(t *testing.T) { t.Setenv("HOST_ROOT", "testdata/plan9/virtualmemory/") stat, err := VirtualMemory() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.Truef(t, reflect.DeepEqual(stat, tt.stat), "got: %+v\nwant: %+v", stat, tt.stat) }) @@ -60,7 +62,7 @@ func TestSwapMemoryPlan9(t *testing.T) { t.Setenv("HOST_ROOT", "testdata/plan9/virtualmemory/") swap, err := SwapMemory() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.Truef(t, reflect.DeepEqual(swap, tt.swap), "got: %+v\nwant: %+v", swap, tt.swap) }) diff --git a/mem/mem_test.go b/mem/mem_test.go index 48e1c0f..cf0c268 100644 --- a/mem/mem_test.go +++ b/mem/mem_test.go @@ -2,7 +2,6 @@ package mem import ( - "errors" "fmt" "runtime" "testing" @@ -13,19 +12,13 @@ import ( "github.com/shirou/gopsutil/v4/internal/common" ) -func skipIfNotImplementedErr(t *testing.T, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - t.Skip("not implemented") - } -} - func TestVirtualMemory(t *testing.T) { if runtime.GOOS == "solaris" || runtime.GOOS == "illumos" { t.Skip("Only .Total .Available are supported on Solaris/illumos") } v, err := VirtualMemory() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) empty := &VirtualMemoryStat{} assert.NotSamef(t, v, empty, "error %v", v) @@ -66,7 +59,7 @@ func TestVirtualMemory(t *testing.T) { func TestSwapMemory(t *testing.T) { v, err := SwapMemory() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) empty := &SwapMemoryStat{} assert.NotSamef(t, v, empty, "error %v", v) @@ -106,7 +99,7 @@ func TestSwapMemoryStat_String(t *testing.T) { func TestSwapDevices(t *testing.T) { v, err := SwapDevices() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "error calling SwapDevices: %v", err) t.Logf("SwapDevices() -> %+v", v) diff --git a/net/net_darwin_test.go b/net/net_darwin_test.go index 0cbed10..855cb12 100644 --- a/net/net_darwin_test.go +++ b/net/net_darwin_test.go @@ -40,6 +40,7 @@ func TestParseNetstatLineHeader(t *testing.T) { } func assertLoopbackStat(t *testing.T, err error, stat *IOCountersStat) { + t.Helper() assert.NoError(t, err) assert.Equal(t, uint64(869107), stat.PacketsRecv) assert.Equal(t, uint64(0), stat.Errin) diff --git a/net/net_linux_test.go b/net/net_linux_test.go index bc47e45..629440e 100644 --- a/net/net_linux_test.go +++ b/net/net_linux_test.go @@ -82,6 +82,7 @@ func TestIOCountersByFileParsing(t *testing.T) { func TestGetProcInodesAll(t *testing.T) { waitForServer := make(chan bool) go func(t *testing.T) { // TCP listening goroutine to have some opened inodes even in CI + t.Helper() addr, err := net.ResolveTCPAddr("tcp", "localhost:0") // dynamically get a random open port from OS if err != nil { t.Skipf("unable to resolve localhost: %v", err) diff --git a/net/net_test.go b/net/net_test.go index bbe1b26..a369446 100644 --- a/net/net_test.go +++ b/net/net_test.go @@ -2,7 +2,6 @@ package net import ( - "errors" "fmt" "os" "runtime" @@ -14,12 +13,6 @@ import ( "github.com/shirou/gopsutil/v4/internal/common" ) -func skipIfNotImplementedErr(t *testing.T, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - t.Skip("not implemented") - } -} - func TestAddrString(t *testing.T) { v := Addr{IP: "192.168.0.1", Port: 8000} @@ -62,10 +55,10 @@ func TestConnectionStatString(t *testing.T) { func TestIOCountersAll(t *testing.T) { v, err := IOCounters(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "Could not get NetIOCounters: %v", err) per, err := IOCounters(true) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "Could not get NetIOCounters: %v", err) assert.Lenf(t, v, 1, "Could not get NetIOCounters: %v", v) assert.Equalf(t, "all", v[0].Name, "Invalid NetIOCounters: %v", v) @@ -92,7 +85,7 @@ func TestIOCountersAll(t *testing.T) { func TestIOCountersPerNic(t *testing.T) { v, err := IOCounters(true) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "Could not get NetIOCounters: %v", err) assert.NotEmptyf(t, v, "Could not get NetIOCounters: %v", v) for _, vv := range v { @@ -123,7 +116,7 @@ func TestGetNetIOCountersAll(t *testing.T) { func TestInterfaces(t *testing.T) { v, err := Interfaces() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "Could not get NetInterfaceStat: %v", err) assert.NotEmptyf(t, v, "Could not get NetInterfaceStat: %v", err) for _, vv := range v { @@ -133,7 +126,7 @@ func TestInterfaces(t *testing.T) { func TestProtoCountersStatsAll(t *testing.T) { v, err := ProtoCounters(nil) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "Could not get NetProtoCounters: %v", err) require.NotEmptyf(t, v, "Could not get NetProtoCounters: %v", err) for _, vv := range v { @@ -144,7 +137,7 @@ func TestProtoCountersStatsAll(t *testing.T) { func TestProtoCountersStats(t *testing.T) { v, err := ProtoCounters([]string{"tcp", "ip"}) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "Could not get NetProtoCounters: %v", err) require.NotEmptyf(t, v, "Could not get NetProtoCounters: %v", err) require.Lenf(t, v, 2, "Go incorrect number of NetProtoCounters: %v", err) @@ -162,7 +155,7 @@ func TestConnections(t *testing.T) { } v, err := Connections("inet") - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "could not get NetConnections: %v", err) assert.NotEmptyf(t, v, "could not get NetConnections: %v", v) for _, vv := range v { @@ -183,7 +176,7 @@ func TestFilterCounters(t *testing.T) { } v, err := FilterCounters() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "could not get NetConnections: %v", err) assert.NotEmptyf(t, v, "could not get NetConnections: %v", v) for _, vv := range v { diff --git a/process/process_race_test.go b/process/process_race_test.go index ad354ac..d15c103 100644 --- a/process/process_race_test.go +++ b/process/process_race_test.go @@ -8,6 +8,8 @@ import ( "testing" "github.com/stretchr/testify/require" + + "github.com/shirou/gopsutil/v4/internal/common" ) func TestPpid_Race(t *testing.T) { @@ -19,7 +21,7 @@ func TestPpid_Race(t *testing.T) { go func(j int) { ppid, err := p.Ppid() wg.Done() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err, "Ppid() failed, %v", err) if j == 9 { diff --git a/process/process_test.go b/process/process_test.go index b130c3d..523c8ad 100644 --- a/process/process_test.go +++ b/process/process_test.go @@ -3,7 +3,6 @@ package process import ( "bufio" - "errors" "fmt" "io" "net" @@ -27,12 +26,6 @@ import ( var mu sync.Mutex -func skipIfNotImplementedErr(t *testing.T, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - t.Skip("not implemented") - } -} - func testGetProcess() Process { checkPid := os.Getpid() // process.test ret, _ := NewProcess(int32(checkPid)) @@ -41,7 +34,7 @@ func testGetProcess() Process { func TestPids(t *testing.T) { ret, err := Pids() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, ret, "could not get pids %v", ret) } @@ -50,7 +43,7 @@ func TestPid_exists(t *testing.T) { checkPid := os.Getpid() ret, err := PidExists(int32(checkPid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.Truef(t, ret, "could not get process exists: %v", ret) @@ -60,7 +53,7 @@ func TestNewProcess(t *testing.T) { checkPid := os.Getpid() ret, err := NewProcess(int32(checkPid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) empty := &Process{} if runtime.GOOS != "windows" { // Windows pid is 0 @@ -72,12 +65,12 @@ func TestMemoryMaps(t *testing.T) { checkPid := os.Getpid() ret, err := NewProcess(int32(checkPid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) // ungrouped memory maps mmaps, err := ret.MemoryMaps(false) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "memory map get error %v", err) empty := MemoryMapsStat{} for _, m := range *mmaps { @@ -86,7 +79,7 @@ func TestMemoryMaps(t *testing.T) { // grouped memory maps mmaps, err = ret.MemoryMaps(true) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "memory map get error %v", err) assert.Lenf(t, *mmaps, 1, "grouped memory maps length (%v) is not equal to 1", len(*mmaps)) assert.NotEqualf(t, (*mmaps)[0], empty, "memory map is empty") @@ -96,7 +89,7 @@ func TestMemoryInfo(t *testing.T) { p := testGetProcess() v, err := p.MemoryInfo() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting memory info error %v", err) empty := MemoryInfoStat{} if v == nil || *v == empty { @@ -108,7 +101,7 @@ func TestCmdLine(t *testing.T) { p := testGetProcess() v, err := p.Cmdline() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting cmdline error %v", err) assert.Containsf(t, v, "process.test", "invalid cmd line %v", v) } @@ -117,7 +110,7 @@ func TestCmdLineSlice(t *testing.T) { p := testGetProcess() v, err := p.CmdlineSlice() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting cmdline slice error %v", err) assert.Truef(t, reflect.DeepEqual(v, os.Args), "returned cmdline slice not as expected:\nexp: %v\ngot: %v", os.Args, v) } @@ -126,7 +119,7 @@ func TestPpid(t *testing.T) { p := testGetProcess() v, err := p.Ppid() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting ppid error %v", err) assert.NotZerof(t, v, "return value is 0 %v", v) expected := os.Getppid() @@ -137,7 +130,7 @@ func TestStatus(t *testing.T) { p := testGetProcess() v, err := p.Status() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting status error %v", err) assert.NotEmptyf(t, v, "could not get state") if v[0] != Running && v[0] != Sleep { @@ -149,7 +142,7 @@ func TestTerminal(t *testing.T) { p := testGetProcess() _, err := p.Terminal() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) assert.NoErrorf(t, err, "getting terminal error %v", err) } @@ -157,7 +150,7 @@ func TestIOCounters(t *testing.T) { p := testGetProcess() v, err := p.IOCounters() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting iocounter error %v", err) empty := &IOCountersStat{} assert.NotSamef(t, v, empty, "error %v", v) @@ -167,7 +160,7 @@ func TestNumCtx(t *testing.T) { p := testGetProcess() _, err := p.NumCtxSwitches() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) assert.NoErrorf(t, err, "getting numctx error %v", err) } @@ -180,7 +173,7 @@ func TestNice(t *testing.T) { } n, err := p.Nice() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting nice error %v", err) if runtime.GOOS != "windows" && n != 0 && n != 20 && n != 8 { t.Errorf("invalid nice: %d", n) @@ -191,7 +184,7 @@ func TestGroups(t *testing.T) { p := testGetProcess() v, err := p.Groups() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting groups error %v", err) if len(v) == 0 { t.Skip("Groups is empty") @@ -202,7 +195,7 @@ func TestNumThread(t *testing.T) { p := testGetProcess() n, err := p.NumThreads() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting NumThread error %v", err) assert.GreaterOrEqualf(t, n, int32(0), "invalid NumThread: %d", n) } @@ -211,12 +204,12 @@ func TestThreads(t *testing.T) { p := testGetProcess() n, err := p.NumThreads() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting NumThread error %v", err) assert.GreaterOrEqualf(t, n, int32(0), "invalid NumThread: %d", n) ts, err := p.Threads() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting Threads error %v", err) assert.Equalf(t, len(ts), int(n), "unexpected number of threads: %v vs %v", len(ts), n) } @@ -225,7 +218,7 @@ func TestName(t *testing.T) { p := testGetProcess() n, err := p.Name() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting name error %v", err) assert.Containsf(t, n, "process.test", "invalid Name %s", n) } @@ -254,11 +247,11 @@ func TestLong_Name_With_Spaces(t *testing.T) { require.NoError(t, cmd.Start()) time.Sleep(100 * time.Millisecond) p, err := NewProcess(int32(cmd.Process.Pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) n, err := p.Name() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting name error %v", err) basename := filepath.Base(tmpfile.Name() + ".exe") require.Equalf(t, basename, n, "%s != %s", basename, n) @@ -289,11 +282,11 @@ func TestLong_Name(t *testing.T) { require.NoError(t, cmd.Start()) time.Sleep(100 * time.Millisecond) p, err := NewProcess(int32(cmd.Process.Pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) n, err := p.Name() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting name error %v", err) basename := filepath.Base(tmpfile.Name() + ".exe") require.Equalf(t, basename, n, "%s != %s", basename, n) @@ -334,10 +327,10 @@ func TestName_Against_Python(t *testing.T) { pyName := scanner.Text() // first line printed by py3 script, its name t.Logf("pyName %s", pyName) p, err := NewProcess(int32(cmd.Process.Pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting process error %v", err) name, err := p.Name() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting name error %v", err) require.Equalf(t, pyName, name, "psutil and gopsutil process.Name() results differ: expected %s, got %s", pyName, name) } @@ -346,7 +339,7 @@ func TestExe(t *testing.T) { p := testGetProcess() n, err := p.Exe() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting Exe error %v", err) assert.Containsf(t, n, "process.test", "invalid Exe %s", n) } @@ -354,7 +347,7 @@ func TestExe(t *testing.T) { func TestCpuPercent(t *testing.T) { p := testGetProcess() _, err := p.Percent(0) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) duration := time.Duration(1000) * time.Microsecond time.Sleep(duration) @@ -373,7 +366,7 @@ func TestCpuPercentLoop(t *testing.T) { for i := 0; i < 2; i++ { duration := time.Duration(100) * time.Microsecond percent, err := p.Percent(duration) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) // if percent < 0.0 || percent > 100.0*float64(numcpu) { // TODO require.GreaterOrEqualf(t, percent, 0.0, "CPUPercent value is invalid: %f, %d", percent, numcpu) @@ -388,7 +381,7 @@ func TestCreateTime(t *testing.T) { p := testGetProcess() c, err := p.CreateTime() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.GreaterOrEqualf(t, c, 1420000000, "process created time is wrong.") @@ -403,7 +396,7 @@ func TestParent(t *testing.T) { p := testGetProcess() c, err := p.Parent() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) require.NotNilf(t, c, "could not get parent") require.NotZerof(t, c.Pid, "wrong parent pid") @@ -447,7 +440,7 @@ func TestConnections(t *testing.T) { <-serverEstablished c, err := p.Connections() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) require.NotEmptyf(t, c, "no connections found") @@ -485,7 +478,7 @@ func TestChildren(t *testing.T) { time.Sleep(100 * time.Millisecond) c, err := p.Children() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) require.NotEmptyf(t, c, "children is empty") found := false @@ -505,7 +498,7 @@ func TestUsername(t *testing.T) { process, _ := NewProcess(int32(myPid)) pidUsername, err := process.Username() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) assert.Equal(t, myUsername, pidUsername) t.Log(pidUsername) @@ -514,12 +507,12 @@ func TestUsername(t *testing.T) { func TestCPUTimes(t *testing.T) { pid := os.Getpid() process, err := NewProcess(int32(pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) spinSeconds := 0.2 cpuTimes0, err := process.Times() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) // Spin for a duration of spinSeconds @@ -552,11 +545,11 @@ func TestOpenFiles(t *testing.T) { pid := os.Getpid() p, err := NewProcess(int32(pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) v, err := p.OpenFiles() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmpty(t, v) // test always open files. @@ -575,10 +568,10 @@ func TestKill(t *testing.T) { require.NoError(t, cmd.Start()) time.Sleep(100 * time.Millisecond) p, err := NewProcess(int32(cmd.Process.Pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) err = p.Kill() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) cmd.Wait() } @@ -592,15 +585,15 @@ func TestIsRunning(t *testing.T) { } cmd.Start() p, err := NewProcess(int32(cmd.Process.Pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) running, err := p.IsRunning() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "IsRunning error: %v", err) require.Truef(t, running, "process should be found running") cmd.Wait() running, err = p.IsRunning() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "IsRunning error: %v", err) require.Falsef(t, running, "process should NOT be found running") } @@ -632,11 +625,11 @@ func TestEnviron(t *testing.T) { defer cmd.Process.Kill() time.Sleep(100 * time.Millisecond) p, err := NewProcess(int32(cmd.Process.Pid)) - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) envs, err := p.Environ() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting environ error %v", err) var envvarFound bool for _, envvar := range envs { @@ -654,7 +647,7 @@ func TestCwd(t *testing.T) { process, _ := NewProcess(int32(myPid)) pidCwd, err := process.Cwd() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoErrorf(t, err, "getting cwd error %v", err) pidCwd = strings.TrimSuffix(pidCwd, string(os.PathSeparator)) assert.Equal(t, currentWorkingDirectory, pidCwd) diff --git a/sensors/sensors_test.go b/sensors/sensors_test.go index 4aea6f1..9c6ac24 100644 --- a/sensors/sensors_test.go +++ b/sensors/sensors_test.go @@ -3,7 +3,6 @@ package sensors import ( - "errors" "fmt" "os" "testing" @@ -25,18 +24,12 @@ func TestTemperatureStat_String(t *testing.T) { assert.Equalf(t, s, fmt.Sprintf("%v", v), "TemperatureStat string is invalid, %v", fmt.Sprintf("%v", v)) } -func skipIfNotImplementedErr(t *testing.T, err error) { - if errors.Is(err, common.ErrNotImplementedError) { - t.Skip("not implemented") - } -} - func TestTemperatures(t *testing.T) { if os.Getenv("CI") != "" { t.Skip("Skip CI") } v, err := SensorsTemperatures() - skipIfNotImplementedErr(t, err) + common.SkipIfNotImplementedErr(t, err) require.NoError(t, err) assert.NotEmptyf(t, v, "Could not get temperature %v", v) t.Log(v)