refactor(amazon): version determination, parseInstalledPackagesLine

This commit is contained in:
MaineK00n
2023-08-01 16:42:23 +09:00
parent a23abf48fd
commit bbb8fcbb42
4 changed files with 84 additions and 181 deletions

View File

@@ -118,32 +118,6 @@ kernel-devel 0 2.6.32 695.20.3.el6 x86_64`,
},
},
},
{
in: `openssl 0 1.0.1e 30.el6.11 x86_64
Percona-Server-shared-56 1 5.6.19 rel67.0.el6 x84_64
kernel 0 2.6.32 696.20.1.el6 x86_64
kernel 0 2.6.32 696.20.3.el6 x86_64
kernel 0 2.6.32 695.20.3.el6 x86_64`,
distro: config.Distro{Family: constant.Amazon, Release: "2 (Karoo)"},
kernel: models.Kernel{},
packages: models.Packages{
"openssl": models.Package{
Name: "openssl",
Version: "1.0.1e",
Release: "30.el6.11",
},
"Percona-Server-shared-56": models.Package{
Name: "Percona-Server-shared-56",
Version: "1:5.6.19",
Release: "rel67.0.el6",
},
"kernel": models.Package{
Name: "kernel",
Version: "2.6.32",
Release: "696.20.3.el6",
},
},
},
{
in: `yum-utils 0 1.1.31 46.amzn2.0.1 noarch @amzn2-core
zlib 0 1.2.7 19.amzn2.0.1 x86_64 installed
@@ -195,67 +169,52 @@ java-1.8.0-amazon-corretto 1 1.8.0_192.b12 1.amzn2 x86_64 @amzn2extra-corretto8`
}
}
}
}
func TestParseInstalledPackagesLine(t *testing.T) {
r := newRHEL(config.ServerInfo{})
var packagetests = []struct {
in string
pack models.Package
err bool
func Test_redhatBase_parseInstalledPackagesLine(t *testing.T) {
tests := []struct {
name string
distro config.Distro
line string
want *models.Package
wantErr bool
}{
{
"openssl 0 1.0.1e 30.el6.11 x86_64",
models.Package{
name: "rpm -qa redhat 6.11 1",
distro: config.Distro{
Family: constant.RedHat,
Release: "6.11",
},
line: "openssl 0 1.0.1e 30.el6.11 x86_64",
want: &models.Package{
Name: "openssl",
Version: "1.0.1e",
Release: "30.el6.11",
Arch: "x86_64",
},
false,
},
{
"Percona-Server-shared-56 1 5.6.19 rel67.0.el6 x84_64",
models.Package{
name: "rpm -qa redhat 6.11 2",
distro: config.Distro{
Family: constant.RedHat,
Release: "6.11",
},
line: "Percona-Server-shared-56 1 5.6.19 rel67.0.el6 x84_64",
want: &models.Package{
Name: "Percona-Server-shared-56",
Version: "1:5.6.19",
Release: "rel67.0.el6",
Arch: "x84_64",
},
false,
},
}
for i, tt := range packagetests {
p, err := r.parseInstalledPackagesLine(tt.in)
if err == nil && tt.err {
t.Errorf("Expected err not occurred: %d", i)
}
if err != nil && !tt.err {
t.Errorf("UnExpected err not occurred: %d", i)
}
if p.Name != tt.pack.Name {
t.Errorf("name: expected %s, actual %s", tt.pack.Name, p.Name)
}
if p.Version != tt.pack.Version {
t.Errorf("version: expected %s, actual %s", tt.pack.Version, p.Version)
}
if p.Release != tt.pack.Release {
t.Errorf("release: expected %s, actual %s", tt.pack.Release, p.Release)
}
}
}
func TestParseInstalledPackagesLineFromRepoquery(t *testing.T) {
r := newRHEL(config.ServerInfo{})
var packagetests = []struct {
in string
pack models.Package
err bool
}{
{
in: "yum-utils 0 1.1.31 46.amzn2.0.1 noarch @amzn2-core",
pack: models.Package{
name: "rpmquery amazonlinux 2 1",
distro: config.Distro{
Family: constant.Amazon,
Release: "2",
},
line: "yum-utils 0 1.1.31 46.amzn2.0.1 noarch @amzn2-core",
want: &models.Package{
Name: "yum-utils",
Version: "1.1.31",
Release: "46.amzn2.0.1",
@@ -264,8 +223,13 @@ func TestParseInstalledPackagesLineFromRepoquery(t *testing.T) {
},
},
{
in: "zlib 0 1.2.7 19.amzn2.0.1 x86_64 installed",
pack: models.Package{
name: "rpmquery amazonlinux 2 2",
distro: config.Distro{
Family: constant.Amazon,
Release: "2",
},
line: "zlib 0 1.2.7 19.amzn2.0.1 x86_64 installed",
want: &models.Package{
Name: "zlib",
Version: "1.2.7",
Release: "19.amzn2.0.1",
@@ -274,8 +238,13 @@ func TestParseInstalledPackagesLineFromRepoquery(t *testing.T) {
},
},
{
in: "java-1.8.0-amazon-corretto 1 1.8.0_192.b12 1.amzn2 x86_64 @amzn2extra-corretto8",
pack: models.Package{
name: "rpmquery amazonlinux 2 3",
distro: config.Distro{
Family: constant.Amazon,
Release: "2",
},
line: "java-1.8.0-amazon-corretto 1 1.8.0_192.b12 1.amzn2 x86_64 @amzn2extra-corretto8",
want: &models.Package{
Name: "java-1.8.0-amazon-corretto",
Version: "1:1.8.0_192.b12",
Release: "1.amzn2",
@@ -284,32 +253,18 @@ func TestParseInstalledPackagesLineFromRepoquery(t *testing.T) {
},
},
}
for i, tt := range packagetests {
p, err := r.parseInstalledPackagesLineFromRepoquery(tt.in)
if err == nil && tt.err {
t.Errorf("Expected err not occurred: %d", i)
}
if err != nil && !tt.err {
t.Errorf("UnExpected err not occurred: %d", i)
}
if p.Name != tt.pack.Name {
t.Errorf("name: expected %s, actual %s", tt.pack.Name, p.Name)
}
if p.Version != tt.pack.Version {
t.Errorf("version: expected %s, actual %s", tt.pack.Version, p.Version)
}
if p.Release != tt.pack.Release {
t.Errorf("release: expected %s, actual %s", tt.pack.Release, p.Release)
}
if p.Arch != tt.pack.Arch {
t.Errorf("arch: expected %s, actual %s", tt.pack.Arch, p.Arch)
}
if p.Repository != tt.pack.Repository {
t.Errorf("repository: expected %s, actual %s", tt.pack.Repository, p.Repository)
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := (&redhatBase{base: base{Distro: tt.distro}}).parseInstalledPackagesLine(tt.line)
if (err != nil) != tt.wantErr {
t.Errorf("redhatBase.parseInstalledPackagesLine() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("redhatBase.parseInstalledPackagesLine() = %v, want %v", got, tt.want)
}
})
}
}
func TestParseYumCheckUpdateLine(t *testing.T) {