github.com/weaviate/weaviate@v1.24.6/modules/text2vec-contextionary/client/version_checks_test.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package client 13 14 import ( 15 "fmt" 16 "testing" 17 18 "github.com/stretchr/testify/assert" 19 ) 20 21 func TestExtractVersionAndCompare(t *testing.T) { 22 type test struct { 23 input string 24 requiredMinimum string 25 expectedIsMet bool 26 expectedErr error 27 } 28 29 tests := []test{ 30 { 31 input: "notavalidversiontag", 32 requiredMinimum: "1.2.3", 33 expectedIsMet: false, 34 expectedErr: fmt.Errorf("unexpected input version tag: notavalidversiontag"), 35 }, 36 { 37 input: "abc-v0.1.2", 38 requiredMinimum: "invalidrequired", 39 expectedIsMet: false, 40 expectedErr: fmt.Errorf("unexpected threshold version tag: invalidrequired"), 41 }, 42 43 // valid matches 44 45 // exact match 46 { 47 input: "abc-v0.1.2", 48 requiredMinimum: "0.1.2", 49 expectedIsMet: true, 50 expectedErr: nil, 51 }, 52 53 // every digit bigger 54 { 55 input: "abc-v1.2.3", 56 requiredMinimum: "0.1.2", 57 expectedIsMet: true, 58 expectedErr: nil, 59 }, 60 61 // only major bigger 62 { 63 input: "abc-v1.0.0", 64 requiredMinimum: "0.1.2", 65 expectedIsMet: true, 66 expectedErr: nil, 67 }, 68 69 // only minor bigger 70 { 71 input: "abc-v0.2.0", 72 requiredMinimum: "0.1.2", 73 expectedIsMet: true, 74 expectedErr: nil, 75 }, 76 77 // only patch bigger 78 { 79 input: "abc-v0.1.3", 80 requiredMinimum: "0.1.2", 81 expectedIsMet: true, 82 expectedErr: nil, 83 }, 84 85 // invalid requirements 86 87 // only patch smaller 88 { 89 input: "abc-v0.1.1", 90 requiredMinimum: "0.1.2", 91 expectedIsMet: false, 92 expectedErr: nil, 93 }, 94 95 // only minor smaller 96 { 97 input: "abc-v0.0.9", 98 requiredMinimum: "0.1.2", 99 expectedIsMet: false, 100 expectedErr: nil, 101 }, 102 103 // only major smaller 104 { 105 input: "abc-v0.9.9", 106 requiredMinimum: "1.1.2", 107 expectedIsMet: false, 108 expectedErr: nil, 109 }, 110 } 111 112 for _, test := range tests { 113 ok, err := extractVersionAndCompare(test.input, test.requiredMinimum) 114 assert.Equal(t, test.expectedIsMet, ok) 115 assert.Equal(t, test.expectedErr, err) 116 } 117 }