From 3748c19402ff5744149cecd0550fff341745e291 Mon Sep 17 00:00:00 2001 From: shirou Date: Sun, 13 Aug 2023 11:45:49 +0000 Subject: [PATCH] [host][linux]: remove double quote from lsb release info fix: #1502 --- host/host_linux.go | 16 +++---- host/host_linux_test.go | 45 +++++++++++++++++++ host/host_test.go | 1 + .../testdata/linux/lsbStruct/arch/lsb-release | 3 ++ .../linux/lsbStruct/ubuntu_22_04/lsb-release | 4 ++ 5 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 host/testdata/linux/lsbStruct/arch/lsb-release create mode 100644 host/testdata/linux/lsbStruct/ubuntu_22_04/lsb-release diff --git a/host/host_linux.go b/host/host_linux.go index 62a4b3ca9..e6ac63a39 100644 --- a/host/host_linux.go +++ b/host/host_linux.go @@ -138,13 +138,13 @@ func getlsbStruct(ctx context.Context) (*lsbStruct, error) { } switch field[0] { case "DISTRIB_ID": - ret.ID = field[1] + ret.ID = strings.ReplaceAll(field[1], `"`, ``) case "DISTRIB_RELEASE": - ret.Release = field[1] + ret.Release = strings.ReplaceAll(field[1], `"`, ``) case "DISTRIB_CODENAME": - ret.Codename = field[1] + ret.Codename = strings.ReplaceAll(field[1], `"`, ``) case "DISTRIB_DESCRIPTION": - ret.Description = field[1] + ret.Description = strings.ReplaceAll(field[1], `"`, ``) } } } else if common.PathExists("/usr/bin/lsb_release") { @@ -159,13 +159,13 @@ func getlsbStruct(ctx context.Context) (*lsbStruct, error) { } switch field[0] { case "Distributor ID": - ret.ID = field[1] + ret.ID = strings.ReplaceAll(field[1], `"`, ``) case "Release": - ret.Release = field[1] + ret.Release = strings.ReplaceAll(field[1], `"`, ``) case "Codename": - ret.Codename = field[1] + ret.Codename = strings.ReplaceAll(field[1], `"`, ``) case "Description": - ret.Description = field[1] + ret.Description = strings.ReplaceAll(field[1], `"`, ``) } } diff --git a/host/host_linux_test.go b/host/host_linux_test.go index 8c23e5661..c114ec795 100644 --- a/host/host_linux_test.go +++ b/host/host_linux_test.go @@ -4,7 +4,10 @@ package host import ( + "context" "testing" + + "github.com/shirou/gopsutil/v3/common" ) func TestGetRedhatishVersion(t *testing.T) { @@ -60,3 +63,45 @@ func TestGetRedhatishPlatform(t *testing.T) { t.Errorf("Could not get platform with no value: %v", ret) } } + +func Test_getlsbStruct(t *testing.T) { + cases := []struct { + root string + id string + release string + codename string + description string + }{ + {"arch", "Arch", "rolling", "", "Arch Linux"}, + {"ubuntu_22_04", "Ubuntu", "22.04", "jammy", "Ubuntu 22.04.2 LTS"}, + } + + for _, tt := range cases { + tt := tt + t.Run(tt.root, func(t *testing.T) { + ctx := context.WithValue(context.Background(), + common.EnvKey, + common.EnvMap{common.HostEtcEnvKey: "./testdata/linux/lsbStruct/" + tt.root}, + ) + + v, err := getlsbStruct(ctx) + if err != nil { + t.Errorf("error %v", err) + } + if v.ID != tt.id { + t.Errorf("ID: want %v, got %v", tt.id, v.ID) + } + if v.Release != tt.release { + t.Errorf("Release: want %v, got %v", tt.release, v.Release) + } + if v.Codename != tt.codename { + t.Errorf("Codename: want %v, got %v", tt.codename, v.Codename) + } + if v.Description != tt.description { + t.Errorf("Description: want %v, got %v", tt.description, v.Description) + } + + t.Log(v) + }) + } +} diff --git a/host/host_test.go b/host/host_test.go index 76307890d..29cb9d2db 100644 --- a/host/host_test.go +++ b/host/host_test.go @@ -29,6 +29,7 @@ func TestHostInfo(t *testing.T) { if v.Procs == 0 { t.Errorf("Could not determine the number of host processes") } + t.Log(v) } func TestUptime(t *testing.T) { diff --git a/host/testdata/linux/lsbStruct/arch/lsb-release b/host/testdata/linux/lsbStruct/arch/lsb-release new file mode 100644 index 000000000..01356b2d8 --- /dev/null +++ b/host/testdata/linux/lsbStruct/arch/lsb-release @@ -0,0 +1,3 @@ +DISTRIB_ID="Arch" +DISTRIB_RELEASE="rolling" +DISTRIB_DESCRIPTION="Arch Linux" diff --git a/host/testdata/linux/lsbStruct/ubuntu_22_04/lsb-release b/host/testdata/linux/lsbStruct/ubuntu_22_04/lsb-release new file mode 100644 index 000000000..0575ec516 --- /dev/null +++ b/host/testdata/linux/lsbStruct/ubuntu_22_04/lsb-release @@ -0,0 +1,4 @@ +DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=22.04 +DISTRIB_CODENAME=jammy +DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS" \ No newline at end of file