Skip to content

Commit 531c3f3

Browse files
committed
Combine less and equal unit tests
1 parent 5713cda commit 531c3f3

File tree

1 file changed

+33
-150
lines changed

1 file changed

+33
-150
lines changed

pkg/version/version_parser_test.go

Lines changed: 33 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -435,223 +435,93 @@ func TestExtractSnapshotFromVersionString(t *testing.T) {
435435
}
436436
}
437437

438-
func TestLess(t *testing.T) {
438+
func TestComparisons(t *testing.T) {
439439
testcases := []struct {
440440
name string
441441
leftVersion string
442442
rightVersion string
443-
less bool
444-
}{
445-
// major, minor, patch section
446-
{
447-
name: "major version less than ours",
448-
leftVersion: "7.17.10",
449-
rightVersion: "8.9.0",
450-
less: true,
451-
},
452-
{
453-
name: "minor version less than ours",
454-
leftVersion: "8.6.2",
455-
rightVersion: "8.9.0",
456-
less: true,
457-
},
458-
{
459-
name: "patch version less than ours",
460-
leftVersion: "8.7.0",
461-
rightVersion: "8.7.1",
462-
less: true,
463-
},
464-
// prerelease section
465-
{
466-
name: "prerelease is always less than non-prerelease",
467-
leftVersion: "8.9.0-SNAPSHOT",
468-
rightVersion: "8.9.0",
469-
less: true,
470-
},
471-
{
472-
name: "2 prereleases are compared by their tokens",
473-
leftVersion: "8.9.0-SNAPSHOT",
474-
rightVersion: "8.9.0-er1",
475-
less: false,
476-
},
477-
{
478-
name: "2 prereleases are compared by their tokens, reversed",
479-
leftVersion: "8.9.0-er1",
480-
rightVersion: "8.9.0-SNAPSHOT",
481-
less: true,
482-
},
483-
{
484-
name: "2 prereleases have no specific order",
485-
leftVersion: "8.9.0-SNAPSHOT",
486-
rightVersion: "8.9.0-er1",
487-
less: false,
488-
},
489-
// build metadata (these have no impact on precedence)
490-
{
491-
name: "build metadata have no influence on precedence",
492-
leftVersion: "8.9.0-SNAPSHOT+aaaaaa",
493-
rightVersion: "8.9.0-SNAPSHOT+bbbbbb",
494-
less: false,
495-
},
496-
{
497-
name: "build metadata have no influence on precedence, reversed",
498-
leftVersion: "8.9.0-SNAPSHOT+bbbbbb",
499-
rightVersion: "8.9.0-SNAPSHOT+aaaaaa",
500-
less: false,
501-
},
502-
// testcases taken from semver.org
503-
// 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.
504-
{
505-
name: "prerelease with fewer tokens is less than same prerelease with extra tokens",
506-
leftVersion: "1.0.0-alpha",
507-
rightVersion: "1.0.0-alpha.1",
508-
less: true,
509-
},
510-
{
511-
name: "numeric identifiers always have lower precedence than non-numeric identifiers",
512-
leftVersion: "1.0.0-alpha.1",
513-
rightVersion: "1.0.0-alpha.beta",
514-
less: true,
515-
},
516-
{
517-
name: "minimum number of prerelease string tokens must be compared alphabetically",
518-
leftVersion: "1.0.0-alpha.beta",
519-
rightVersion: "1.0.0-beta",
520-
less: true,
521-
},
522-
{
523-
name: "prerelease with fewer tokens is less than same prerelease with extra tokens #2",
524-
leftVersion: "1.0.0-beta",
525-
rightVersion: "1.0.0-beta.2",
526-
less: true,
527-
},
528-
{
529-
name: "numeric identifiers must be compared numerically",
530-
leftVersion: "1.0.0-beta.2",
531-
rightVersion: "1.0.0-beta.11",
532-
less: true,
533-
},
534-
{
535-
name: "string identifiers are compared lexically",
536-
leftVersion: "1.0.0-beta.11",
537-
rightVersion: "1.0.0-rc.1",
538-
less: true,
539-
},
540-
{
541-
name: "prerelease versions have lower precedence than non-prerelease version ",
542-
leftVersion: "1.0.0-rc.1",
543-
rightVersion: "1.0.0",
544-
less: true,
545-
},
546-
547-
// independent section
548-
{
549-
name: "independent release is always more than regular",
550-
leftVersion: "8.9.0+build202405061022",
551-
rightVersion: "8.9.0",
552-
less: false,
553-
},
554-
{
555-
name: "prerelease is less than independent release",
556-
leftVersion: "8.9.0-SNAPSHOT",
557-
rightVersion: "8.9.0+build202405061022",
558-
less: true,
559-
},
560-
{
561-
name: "older release is less",
562-
leftVersion: "8.9.0+build202305061022",
563-
rightVersion: "8.9.0+build202405061022",
564-
less: true,
565-
},
566-
{
567-
name: "older release is less - reversed",
568-
leftVersion: "8.9.0+build202405061022",
569-
rightVersion: "8.9.0+build202305061022",
570-
less: false,
571-
},
572-
}
573-
574-
for _, tc := range testcases {
575-
t.Run(tc.name, func(t *testing.T) {
576-
left, err := ParseVersion(tc.leftVersion)
577-
require.NoError(t, err)
578-
require.NotNil(t, left)
579-
right, err := ParseVersion(tc.rightVersion)
580-
require.NoError(t, err)
581-
require.NotNil(t, right)
582-
assert.Equalf(t, tc.less, left.Less(*right), "Expected %s < %s = %v", tc.leftVersion, tc.rightVersion, tc.less)
583-
})
584-
}
585-
}
586443

587-
func TestEqual(t *testing.T) {
588-
testcases := []struct {
589-
name string
590-
leftVersion string
591-
rightVersion string
592-
equal bool
444+
less bool
445+
equal bool
593446
}{
594447
// major, minor, patch section
595448
{
596449
name: "major, minor, patch are all equal",
597450
leftVersion: "7.17.10",
598451
rightVersion: "7.17.10",
452+
less: false,
599453
equal: true,
600454
},
601455
{
602456
name: "major version less than ours",
603457
leftVersion: "7.17.10",
604458
rightVersion: "8.9.0",
459+
less: true,
605460
equal: false,
606461
},
607462
{
608463
name: "minor version less than ours",
609464
leftVersion: "8.6.2",
610465
rightVersion: "8.9.0",
466+
less: true,
611467
equal: false,
612468
},
613469
{
614470
name: "patch version less than ours",
615471
leftVersion: "8.7.0",
616472
rightVersion: "8.7.1",
473+
less: true,
617474
equal: false,
618475
},
619476
// prerelease section
620477
{
621478
name: "major, minor, patch, prerelease are all equal",
622479
leftVersion: "8.9.0-SNAPSHOT",
623480
rightVersion: "8.9.0-SNAPSHOT",
481+
less: false,
624482
equal: true,
625483
},
626484
{
627485
name: "prerelease is always less than non-prerelease",
628486
leftVersion: "8.9.0-SNAPSHOT",
629487
rightVersion: "8.9.0",
488+
less: true,
630489
equal: false,
631490
},
632491
{
633492
name: "2 prereleases are compared by their tokens",
634493
leftVersion: "8.9.0-SNAPSHOT",
635494
rightVersion: "8.9.0-er1",
495+
less: false,
636496
equal: false,
637497
},
638498
{
639499
name: "2 prereleases are compared by their tokens, reversed",
640500
leftVersion: "8.9.0-er1",
641501
rightVersion: "8.9.0-SNAPSHOT",
502+
less: true,
503+
equal: false,
504+
},
505+
{
506+
name: "2 prereleases have no specific order",
507+
leftVersion: "8.9.0-SNAPSHOT",
508+
rightVersion: "8.9.0-er1",
509+
less: false,
642510
equal: false,
643511
},
644512
// build metadata (these have no impact on precedence)
645513
{
646514
name: "build metadata have no influence on precedence",
647515
leftVersion: "8.9.0-SNAPSHOT+aaaaaa",
648516
rightVersion: "8.9.0-SNAPSHOT+bbbbbb",
517+
less: false,
649518
equal: true,
650519
},
651520
{
652521
name: "build metadata have no influence on precedence, reversed",
653522
leftVersion: "8.9.0-SNAPSHOT+bbbbbb",
654523
rightVersion: "8.9.0-SNAPSHOT+aaaaaa",
524+
less: false,
655525
equal: true,
656526
},
657527
// testcases taken from semver.org
@@ -660,42 +530,49 @@ func TestEqual(t *testing.T) {
660530
name: "prerelease with fewer tokens is less than same prerelease with extra tokens",
661531
leftVersion: "1.0.0-alpha",
662532
rightVersion: "1.0.0-alpha.1",
533+
less: true,
663534
equal: false,
664535
},
665536
{
666537
name: "numeric identifiers always have lower precedence than non-numeric identifiers",
667538
leftVersion: "1.0.0-alpha.1",
668539
rightVersion: "1.0.0-alpha.beta",
540+
less: true,
669541
equal: false,
670542
},
671543
{
672544
name: "minimum number of prerelease string tokens must be compared alphabetically",
673545
leftVersion: "1.0.0-alpha.beta",
674546
rightVersion: "1.0.0-beta",
547+
less: true,
675548
equal: false,
676549
},
677550
{
678551
name: "prerelease with fewer tokens is less than same prerelease with extra tokens #2",
679552
leftVersion: "1.0.0-beta",
680553
rightVersion: "1.0.0-beta.2",
554+
less: true,
681555
equal: false,
682556
},
683557
{
684558
name: "numeric identifiers must be compared numerically",
685559
leftVersion: "1.0.0-beta.2",
686560
rightVersion: "1.0.0-beta.11",
561+
less: true,
687562
equal: false,
688563
},
689564
{
690565
name: "string identifiers are compared lexically",
691566
leftVersion: "1.0.0-beta.11",
692567
rightVersion: "1.0.0-rc.1",
568+
less: true,
693569
equal: false,
694570
},
695571
{
696572
name: "prerelease versions have lower precedence than non-prerelease version ",
697573
leftVersion: "1.0.0-rc.1",
698574
rightVersion: "1.0.0",
575+
less: true,
699576
equal: false,
700577
},
701578

@@ -705,29 +582,34 @@ func TestEqual(t *testing.T) {
705582
leftVersion: "8.9.0+build202405061022",
706583
rightVersion: "8.9.0+build202405061022",
707584
equal: true,
585+
less: false,
708586
},
709587
{
710588
name: "independent release is always more than regular",
711589
leftVersion: "8.9.0+build202405061022",
712590
rightVersion: "8.9.0",
591+
less: false,
713592
equal: false,
714593
},
715594
{
716595
name: "prerelease is less than independent release",
717596
leftVersion: "8.9.0-SNAPSHOT",
718597
rightVersion: "8.9.0+build202405061022",
598+
less: true,
719599
equal: false,
720600
},
721601
{
722602
name: "older release is less",
723603
leftVersion: "8.9.0+build202305061022",
724604
rightVersion: "8.9.0+build202405061022",
605+
less: true,
725606
equal: false,
726607
},
727608
{
728609
name: "older release is less - reversed",
729610
leftVersion: "8.9.0+build202405061022",
730611
rightVersion: "8.9.0+build202305061022",
612+
less: false,
731613
equal: false,
732614
},
733615
}
@@ -740,6 +622,7 @@ func TestEqual(t *testing.T) {
740622
right, err := ParseVersion(tc.rightVersion)
741623
require.NoError(t, err)
742624
require.NotNil(t, right)
625+
assert.Equalf(t, tc.less, left.Less(*right), "Expected %s < %s = %v", tc.leftVersion, tc.rightVersion, tc.less)
743626
assert.Equalf(t, tc.equal, left.Equal(*right), "Expected %s == %s = %v", tc.leftVersion, tc.rightVersion, tc.equal)
744627
})
745628
}

0 commit comments

Comments
 (0)