...

Source file src/edge-infra.dev/pkg/lib/build/semver/semver_test.go

Documentation: edge-infra.dev/pkg/lib/build/semver

     1  package semver
     2  
     3  import (
     4  	"regexp"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestSemverRegexpCompiles(t *testing.T) {
    11  	_, err := regexp.Compile(SemverRegexpString)
    12  	assert.NoError(t, err)
    13  }
    14  
    15  func TestSemverRegexp(t *testing.T) {
    16  	// taken from the official regexp provided by semver.org
    17  	// https://www.regexpal.com/103662
    18  	tests := []struct {
    19  		inputs   []string
    20  		expected error
    21  	}{
    22  		{
    23  			inputs: []string{
    24  				"0.0.4",
    25  				"1.2.3",
    26  				"10.20.30",
    27  				"1.1.2-prerelease+meta",
    28  				"1.1.2+meta",
    29  				"1.1.2+meta-valid",
    30  				"1.0.0-alpha",
    31  				"1.0.0-beta",
    32  				"1.0.0-alpha.beta",
    33  				"1.0.0-alpha.beta.1",
    34  				"1.0.0-alpha.1",
    35  				"1.0.0-alpha0.valid",
    36  				"1.0.0-alpha.0valid",
    37  				"1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay",
    38  				"1.0.0-rc.1+build.1",
    39  				"2.0.0-rc.1+build.123",
    40  				"1.2.3-beta",
    41  				"10.2.3-DEV-SNAPSHOT",
    42  				"1.2.3-SNAPSHOT-123",
    43  				"1.0.0",
    44  				"2.0.0",
    45  				"1.1.7",
    46  				"2.0.0+build.1848",
    47  				"2.0.1-alpha.1227",
    48  				"1.0.0-alpha+beta",
    49  				"1.2.3----RC-SNAPSHOT.12.9.1--.12+788",
    50  				"1.2.3----R-S.12.9.1--.12+meta",
    51  				"1.2.3----RC-SNAPSHOT.12.9.1--.12",
    52  				"1.0.0+0.build.1-rc.10000aaa-kk-0.1",
    53  				"99999999999999999999999.999999999999999999.99999999999999999",
    54  			},
    55  			expected: nil,
    56  		},
    57  		{
    58  			inputs: []string{
    59  				"1",
    60  				"1.2",
    61  				"1.2.3-0123",
    62  				"1.2.3-0123.0123",
    63  				"1.1.2+.123",
    64  				"+invalid",
    65  				"-invalid",
    66  				"-invalid+invalid",
    67  				"-invalid.01",
    68  				"alpha",
    69  				"alpha.beta",
    70  				"alpha.beta.1",
    71  				"alpha.1",
    72  				"alpha+beta",
    73  				"alpha_beta",
    74  				"alpha.",
    75  				"alpha..",
    76  				"beta\\",
    77  				"1.0.0-alpha_beta",
    78  				"-alpha.",
    79  				"1.0.0-alpha..",
    80  				"1.0.0-alpha..1",
    81  				"1.0.0-alpha...1",
    82  				"1.0.0-alpha....1",
    83  				"1.0.0-alpha.....1",
    84  				"1.0.0-alpha......1",
    85  				"1.0.0-alpha.......1",
    86  				"01.1.1",
    87  				"1.01.1",
    88  				"1.1.01",
    89  				"1.2",
    90  				"1.2.3.DEV",
    91  				"1.2-SNAPSHOT",
    92  				"1.2.31.2.3----RC-SNAPSHOT.12.09.1--..12+788",
    93  				"1.2-RC-SNAPSHOT",
    94  				"-1.0.3-gamma+b7718",
    95  				"+justmeta",
    96  				"9.8.7+meta+meta",
    97  				"9.8.7-whatever+meta+meta",
    98  				"99999999999999999999999.999999999999999999.99999999999999999----RC-SNAPSHOT.12.09.1--------------------------------..12",
    99  				"0.0.1+build.2415445056+commit.b1e31c3",
   100  			},
   101  			expected: ErrInvalidSemVer,
   102  		},
   103  	}
   104  
   105  	for _, tc := range tests {
   106  		for _, input := range tc.inputs {
   107  			err := IsValidSemver(input)
   108  			if err != tc.expected {
   109  				t.Errorf("Unexpected SemVer validation result: got %v, expected %v\nSemVer: %v\n", err, tc.expected, input)
   110  			}
   111  		}
   112  	}
   113  }
   114  

View as plain text