From 53dd90302e7e6f542b2e7b4c1a816730c103e39a Mon Sep 17 00:00:00 2001 From: Kota Kanbe Date: Tue, 12 Mar 2019 17:36:27 +0900 Subject: [PATCH] fix(scan): parse error on SUSE #515 (#786) --- scan/suse.go | 10 +++++----- scan/suse_test.go | 9 ++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/scan/suse.go b/scan/suse.go index 69f89ad9..48dbab8c 100644 --- a/scan/suse.go +++ b/scan/suse.go @@ -184,16 +184,16 @@ func (o *suse) parseZypperLULines(stdout string) (models.Packages, error) { } func (o *suse) parseZypperLUOneLine(line string) (*models.Package, error) { - fs := strings.Fields(line) - if len(fs) != 11 { + ss := strings.Split(line, "|") + if len(ss) != 6 { return nil, fmt.Errorf("zypper -q lu Unknown format: %s", line) } - available := strings.Split(fs[8], "-") + available := strings.Split(strings.TrimSpace(ss[4]), "-") return &models.Package{ - Name: fs[4], + Name: strings.TrimSpace(ss[2]), NewVersion: available[0], NewRelease: available[1], - Arch: fs[10], + Arch: strings.TrimSpace(ss[5]), }, nil } diff --git a/scan/suse_test.go b/scan/suse_test.go index 06d28bcd..7cec816c 100644 --- a/scan/suse_test.go +++ b/scan/suse_test.go @@ -30,7 +30,8 @@ func TestScanUpdatablePackages(t *testing.T) { stdout := `S | Repository | Name | Current Version | Available Version | Arch --+---------------------------------------------+-------------------------------+-----------------------------+-----------------------------+------- v | SLES12-SP2-Updates | SUSEConnect | 0.3.0-19.8.1 | 0.3.1-19.11.2 | x86_64 -v | SLES12-SP2-Updates | SuSEfirewall2 | 3.6.312-2.3.1 | 3.6.312-2.10.1 | noarch` +v | SLES12-SP2-Updates | SuSEfirewall2 | 3.6.312-2.3.1 | 3.6.312-2.10.1 | noarch +v | Clone of SLES11-SP3-Updates for x86_64 | ConsoleKit | 0.2.10-64.65.1 | 0.2.10-64.69.1 | x86_64` var tests = []struct { in string @@ -51,6 +52,12 @@ v | SLES12-SP2-Updates | SuSEfirewall2 NewRelease: "2.10.1", Arch: "noarch", }, + models.Package{ + Name: "ConsoleKit", + NewVersion: "0.2.10", + NewRelease: "64.69.1", + Arch: "x86_64", + }, ), }, }