@@ -419,15 +419,52 @@ func Test_redhatBase_parseInstalledPackagesLine(t *testing.T) {
419
419
},
420
420
},
421
421
{
422
- name : "invalid source package" ,
422
+ name : "not standard rpm style source package" ,
423
423
args : args {line : "elasticsearch 0 8.17.0 1 x86_64 elasticsearch-8.17.0-1-src.rpm (none)" },
424
424
wantbp : & models.Package {
425
425
Name : "elasticsearch" ,
426
426
Version : "8.17.0" ,
427
427
Release : "1" ,
428
428
Arch : "x86_64" ,
429
429
},
430
- wantsp : nil ,
430
+ wantsp : & models.SrcPackage {
431
+ Name : "elasticsearch" ,
432
+ Version : "8.17.0-1" ,
433
+ Arch : "src" ,
434
+ BinaryNames : []string {"elasticsearch" },
435
+ },
436
+ },
437
+ {
438
+ name : "not standard rpm style source package 2" ,
439
+ args : args {line : "package 0 0 1 x86_64 package-0-1-src.rpm (none)" },
440
+ wantbp : & models.Package {
441
+ Name : "package" ,
442
+ Version : "0" ,
443
+ Release : "1" ,
444
+ Arch : "x86_64" ,
445
+ },
446
+ wantsp : & models.SrcPackage {
447
+ Name : "package" ,
448
+ Version : "0-1" ,
449
+ Arch : "src" ,
450
+ BinaryNames : []string {"package" },
451
+ },
452
+ },
453
+ {
454
+ name : "release is empty" ,
455
+ args : args {line : "package 0 0 x86_64 package-0-.src.rpm (none)" },
456
+ wantbp : & models.Package {
457
+ Name : "package" ,
458
+ Version : "0" ,
459
+ Release : "" ,
460
+ Arch : "x86_64" ,
461
+ },
462
+ wantsp : & models.SrcPackage {
463
+ Name : "package" ,
464
+ Version : "0" ,
465
+ Arch : "src" ,
466
+ BinaryNames : []string {"package" },
467
+ },
431
468
},
432
469
}
433
470
for _ , tt := range tests {
@@ -568,140 +605,145 @@ func TestParseYumCheckUpdateLine(t *testing.T) {
568
605
}
569
606
}
570
607
571
- func TestParseYumCheckUpdateLines (t * testing.T ) {
572
- r := newCentOS (config.ServerInfo {})
573
- r .Distro = config.Distro {Family : "centos" }
574
- stdout := `audit-libs 0 2.3.7 5.el6 base
608
+ func Test_redhatBase_parseUpdatablePacksLines (t * testing.T ) {
609
+ type fields struct {
610
+ base base
611
+ sudo rootPriv
612
+ }
613
+ type args struct {
614
+ stdout string
615
+ }
616
+ tests := []struct {
617
+ name string
618
+ fields fields
619
+ args args
620
+ want models.Packages
621
+ wantErr bool
622
+ }{
623
+ {
624
+ name : "centos" ,
625
+ fields : fields {
626
+ base : base {
627
+ Distro : config.Distro {
628
+ Family : constant .CentOS ,
629
+ },
630
+ osPackages : osPackages {
631
+ Packages : models.Packages {
632
+ "audit-libs" : {Name : "audit-libs" },
633
+ "bash" : {Name : "bash" },
634
+ "python-libs" : {Name : "python-libs" },
635
+ "python-ordereddict" : {Name : "python-ordereddict" },
636
+ "bind-utils" : {Name : "bind-utils" },
637
+ "pytalloc" : {Name : "pytalloc" },
638
+ },
639
+ },
640
+ },
641
+ },
642
+ args : args {
643
+ stdout : `audit-libs 0 2.3.7 5.el6 base
575
644
bash 0 4.1.2 33.el6_7.1 updates
576
645
python-libs 0 2.6.6 64.el6 rhui-REGION-rhel-server-releases
577
646
python-ordereddict 0 1.1 3.el6ev installed
578
647
bind-utils 30 9.3.6 25.P1.el5_11.8 updates
579
- pytalloc 0 2.0.7 2.el6 @CentOS 6.5/6.5`
580
-
581
- r .Packages = models .NewPackages (
582
- models.Package {Name : "audit-libs" },
583
- models.Package {Name : "bash" },
584
- models.Package {Name : "python-libs" },
585
- models.Package {Name : "python-ordereddict" },
586
- models.Package {Name : "bind-utils" },
587
- models.Package {Name : "pytalloc" },
588
- )
589
- var tests = []struct {
590
- in string
591
- out models.Packages
592
- }{
593
- {
594
- stdout ,
595
- models .NewPackages (
596
- models.Package {
648
+ pytalloc 0 2.0.7 2.el6 @CentOS 6.5/6.5` ,
649
+ },
650
+ want : models.Packages {
651
+ "audit-libs" : {
597
652
Name : "audit-libs" ,
598
653
NewVersion : "2.3.7" ,
599
654
NewRelease : "5.el6" ,
600
655
Repository : "base" ,
601
656
},
602
- models. Package {
657
+ "bash" : {
603
658
Name : "bash" ,
604
659
NewVersion : "4.1.2" ,
605
660
NewRelease : "33.el6_7.1" ,
606
661
Repository : "updates" ,
607
662
},
608
- models. Package {
663
+ "python-libs" : {
609
664
Name : "python-libs" ,
610
665
NewVersion : "2.6.6" ,
611
666
NewRelease : "64.el6" ,
612
667
Repository : "rhui-REGION-rhel-server-releases" ,
613
668
},
614
- models. Package {
669
+ "python-ordereddict" : {
615
670
Name : "python-ordereddict" ,
616
671
NewVersion : "1.1" ,
617
672
NewRelease : "3.el6ev" ,
618
673
Repository : "installed" ,
619
674
},
620
- models. Package {
675
+ "bind-utils" : {
621
676
Name : "bind-utils" ,
622
677
NewVersion : "30:9.3.6" ,
623
678
NewRelease : "25.P1.el5_11.8" ,
624
679
Repository : "updates" ,
625
680
},
626
- models. Package {
681
+ "pytalloc" : {
627
682
Name : "pytalloc" ,
628
683
NewVersion : "2.0.7" ,
629
684
NewRelease : "2.el6" ,
630
685
Repository : "@CentOS 6.5/6.5" ,
631
686
},
632
- ) ,
687
+ } ,
633
688
},
634
- }
635
-
636
- for _ , tt := range tests {
637
- packages , err := r .parseUpdatablePacksLines (tt .in )
638
- if err != nil {
639
- t .Errorf ("Error has occurred, err: %+v\n tt.in: %v" , err , tt .in )
640
- return
641
- }
642
- for name , ePack := range tt .out {
643
- if ! reflect .DeepEqual (ePack , packages [name ]) {
644
- e := pp .Sprintf ("%v" , ePack )
645
- a := pp .Sprintf ("%v" , packages [name ])
646
- t .Errorf ("expected %s, actual %s" , e , a )
647
- }
648
- }
649
- }
650
- }
651
-
652
- func TestParseYumCheckUpdateLinesAmazon (t * testing.T ) {
653
- r := newAmazon (config.ServerInfo {})
654
- r .Distro = config.Distro {Family : "amazon" }
655
- stdout := `bind-libs 32 9.8.2 0.37.rc1.45.amzn1 amzn-main
656
- java-1.7.0-openjdk 0 1.7.0.95 2.6.4.0.65.amzn1 amzn-main
657
- if-not-architecture 0 100 200 amzn-main`
658
- r .Packages = models .NewPackages (
659
- models.Package {Name : "bind-libs" },
660
- models.Package {Name : "java-1.7.0-openjdk" },
661
- models.Package {Name : "if-not-architecture" },
662
- )
663
- var tests = []struct {
664
- in string
665
- out models.Packages
666
- }{
667
689
{
668
- stdout ,
669
- models .NewPackages (
670
- models.Package {
690
+ name : "amazon" ,
691
+ fields : fields {
692
+ base : base {
693
+ Distro : config.Distro {
694
+ Family : constant .Amazon ,
695
+ },
696
+ osPackages : osPackages {
697
+ Packages : models.Packages {
698
+ "bind-libs" : {Name : "bind-libs" },
699
+ "java-1.7.0-openjdk" : {Name : "java-1.7.0-openjdk" },
700
+ "if-not-architecture" : {Name : "if-not-architecture" },
701
+ },
702
+ },
703
+ },
704
+ },
705
+ args : args {
706
+ stdout : `bind-libs 32 9.8.2 0.37.rc1.45.amzn1 amzn-main
707
+ java-1.7.0-openjdk 0 1.7.0.95 2.6.4.0.65.amzn1 amzn-main
708
+ if-not-architecture 0 100 200 amzn-main` ,
709
+ },
710
+ want : models.Packages {
711
+ "bind-libs" : {
671
712
Name : "bind-libs" ,
672
713
NewVersion : "32:9.8.2" ,
673
714
NewRelease : "0.37.rc1.45.amzn1" ,
674
715
Repository : "amzn-main" ,
675
716
},
676
- models. Package {
717
+ "java-1.7.0-openjdk" : {
677
718
Name : "java-1.7.0-openjdk" ,
678
719
NewVersion : "1.7.0.95" ,
679
720
NewRelease : "2.6.4.0.65.amzn1" ,
680
721
Repository : "amzn-main" ,
681
722
},
682
- models. Package {
723
+ "if-not-architecture" : {
683
724
Name : "if-not-architecture" ,
684
725
NewVersion : "100" ,
685
726
NewRelease : "200" ,
686
727
Repository : "amzn-main" ,
687
728
},
688
- ) ,
729
+ } ,
689
730
},
690
731
}
691
-
692
732
for _ , tt := range tests {
693
- packages , err := r .parseUpdatablePacksLines (tt .in )
694
- if err != nil {
695
- t .Errorf ("Error has occurred, err: %+v\n tt.in: %v" , err , tt .in )
696
- return
697
- }
698
- for name , ePack := range tt .out {
699
- if ! reflect .DeepEqual (ePack , packages [name ]) {
700
- e := pp .Sprintf ("%v" , ePack )
701
- a := pp .Sprintf ("%v" , packages [name ])
702
- t .Errorf ("[%s] expected %s, actual %s" , name , e , a )
733
+ t .Run (tt .name , func (t * testing.T ) {
734
+ o := & redhatBase {
735
+ base : tt .fields .base ,
736
+ sudo : tt .fields .sudo ,
703
737
}
704
- }
738
+ got , err := o .parseUpdatablePacksLines (tt .args .stdout )
739
+ if (err != nil ) != tt .wantErr {
740
+ t .Errorf ("redhatBase.parseUpdatablePacksLines() error = %v, wantErr %v" , err , tt .wantErr )
741
+ return
742
+ }
743
+ if ! reflect .DeepEqual (got , tt .want ) {
744
+ t .Errorf ("redhatBase.parseUpdatablePacksLines() = %v, want %v" , got , tt .want )
745
+ }
746
+ })
705
747
}
706
748
}
707
749
@@ -783,7 +825,7 @@ func Test_redhatBase_parseRpmQfLine(t *testing.T) {
783
825
{
784
826
name : "valid line" ,
785
827
fields : fields {base : base {}},
786
- args : args {line : "Percona-Server-shared-56 1 5.6.19 rel67.0.el6 x86_64 Percona-SQL-56-5.6.19-rel67.0.el6.src.rpm" },
828
+ args : args {line : "Percona-Server-shared-56 1 5.6.19 rel67.0.el6 x86_64 Percona-SQL-56-5.6.19-rel67.0.el6.src.rpm" },
787
829
wantPkg : & models.Package {
788
830
Name : "Percona-Server-shared-56" ,
789
831
Version : "1:5.6.19" ,
0 commit comments