GODT-1977: add pre-release flag to app version on qa builds

This commit is contained in:
Jakub
2022-11-08 17:07:30 +01:00
committed by James Houlahan
parent c08d0eff7a
commit 5aa495b240
4 changed files with 95 additions and 5 deletions

View File

@ -63,11 +63,6 @@ const (
Host = "127.0.0.1"
)
// AppVersion returns the full rendered version of the app (to be used in request headers).
func AppVersion(version string) string {
return fmt.Sprintf("%v-%v@%v", getAPIOS(), AppName, version)
}
// nolint:goconst
func getAPIOS() string {
switch runtime.GOOS {

View File

@ -0,0 +1,28 @@
// Copyright (c) 2022 Proton AG
//
// This file is part of Proton Mail Bridge.Bridge.
//
// Proton Mail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Proton Mail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
//go:build !build_qa
// +build !build_qa
package constants
import "fmt"
// AppVersion returns the full rendered version of the app (to be used in request headers).
func AppVersion(version string) string {
return fmt.Sprintf("%v-%v@%v", getAPIOS(), AppName, version)
}

View File

@ -0,0 +1,30 @@
// Copyright (c) 2022 Proton AG
//
// This file is part of Proton Mail Bridge.
//
// Proton Mail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Proton Mail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
//go:build build_qa
// +build build_qa
package constants
import "fmt"
// AppVersion returns the full rendered version of the app (to be used in request headers).
func AppVersion(version string) string {
ver, _ := semver.MustParse(version).SetPrerelase("dev")
return fmt.Sprintf("%v-%v@%v", getAPIOS(), AppName, ver.String())
}

View File

@ -0,0 +1,37 @@
// Copyright (c) 2022 Proton AG
//
// This file is part of Proton Mail Bridge.Bridge.
//
// Proton Mail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Proton Mail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
package constants
import (
"testing"
"github.com/Masterminds/semver/v3"
"github.com/stretchr/testify/require"
)
func TestPrereleaseSemver(t *testing.T) {
ver, err := semver.MustParse("2.3.0+qa").SetPrerelease("dev")
require.NoError(t, err)
require.Equal(t, "2.3.0-dev+qa", ver.String())
ver, err = semver.MustParse("2.3.0-dev+qa").SetPrerelease("dev")
require.NoError(t, err)
require.Equal(t, "2.3.0-dev+qa", ver.String())
}