github.com/cloudfoundry/postgres-release/src/acceptance-tests@v0.0.0-20240511030151-872bdd2e0dba/testing/helpers/versions.go (about) 1 package helpers 2 3 import ( 4 "io/ioutil" 5 "sort" 6 "strings" 7 8 yaml "gopkg.in/yaml.v2" 9 ) 10 11 var defaultVersionsFile string = "../versions.yml" 12 var brokenVersions = []int{45} 13 14 type PostgresReleaseVersions struct { 15 sortedKeys []int 16 Versions map[int]string `yaml:"versions"` 17 } 18 19 func NewPostgresReleaseVersions(versionFile string) (PostgresReleaseVersions, error) { 20 var versions PostgresReleaseVersions 21 22 if versionFile == "" { 23 versionFile = defaultVersionsFile 24 } 25 26 data, err := ioutil.ReadFile(versionFile) 27 if err != nil { 28 return PostgresReleaseVersions{}, err 29 } 30 if err := yaml.Unmarshal(data, &versions); err != nil { 31 return PostgresReleaseVersions{}, err 32 } 33 for _, brokenVersion := range brokenVersions { 34 delete(versions.Versions, brokenVersion) 35 } 36 for key := range versions.Versions { 37 versions.sortedKeys = append(versions.sortedKeys, key) 38 } 39 sort.Ints(versions.sortedKeys) 40 41 return versions, nil 42 } 43 44 func (v PostgresReleaseVersions) GetOldVersion() int { 45 return v.sortedKeys[len(v.sortedKeys)-2] 46 } 47 48 func (v PostgresReleaseVersions) GetLatestVersion() int { 49 return v.sortedKeys[len(v.sortedKeys)-1] 50 } 51 52 func (v PostgresReleaseVersions) GetPostgreSQLVersion(key int) string { 53 return v.Versions[key] 54 } 55 56 func (v PostgresReleaseVersions) IsMajor(current string, key int) bool { 57 value1 := strings.Split(v.Versions[key], ".") 58 value2 := strings.Split(current, ".") 59 if strings.Join(value1[:len(value1)-1], ".") == strings.Join(value2[:len(value2)-1], ".") { 60 return false 61 } 62 return true 63 }