mirror of
https://github.com/jimeh/build-emacs-for-macos.git
synced 2026-02-19 06:06:40 +00:00
Stable builds are based off of release git tags in Emacs' git repo. Examples of what release tags look like: - emacs-26.1 - emacs-26.2 - emacs-26.3 - emacs-27.1 - emacs-27.2 When the specified git ref looks like a stable release, the plan command will generate a release a different and simpler release name that does not include the date, git sha or ref. Instead, for "emacs-27.2" for example, the emacs-builds release name will be "Emacs-27.2". The "build name", used for naming the disk image, still retains the same format as the nightly builds. Also, non-stable releases are now marked as pre-release on GitHub by default. The reason for the different release name format for stable builds is both to separate them, but also to make it easier to keep the version of the homebrew cask as simply "27.2".
139 lines
2.3 KiB
Go
139 lines
2.3 KiB
Go
package release
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestVersionToName(t *testing.T) {
|
|
type args struct {
|
|
version string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want string
|
|
wantErr string
|
|
}{
|
|
{
|
|
name: "empty",
|
|
args: args{
|
|
version: "",
|
|
},
|
|
wantErr: "release: empty version",
|
|
},
|
|
{
|
|
name: "nightly",
|
|
args: args{
|
|
version: "2021-07-01.1b88404.master",
|
|
},
|
|
want: "Emacs.2021-07-01.1b88404.master",
|
|
},
|
|
{
|
|
name: "stable",
|
|
args: args{
|
|
version: "27.2",
|
|
},
|
|
want: "Emacs-27.2",
|
|
},
|
|
{
|
|
name: "stable with letter",
|
|
args: args{
|
|
version: "23.3b",
|
|
},
|
|
want: "Emacs-23.3b",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := VersionToName(tt.args.version)
|
|
|
|
assert.Equal(t, tt.want, got)
|
|
|
|
if tt.wantErr != "" {
|
|
assert.EqualError(t, err, tt.wantErr)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGitRefToStableVersion(t *testing.T) {
|
|
type args struct {
|
|
version string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want string
|
|
wantErr string
|
|
}{
|
|
{
|
|
name: "empty",
|
|
args: args{
|
|
version: "",
|
|
},
|
|
wantErr: "release: git ref is not stable tagged release: \"\"",
|
|
},
|
|
{
|
|
name: "master",
|
|
args: args{
|
|
version: "master",
|
|
},
|
|
wantErr: "release: git ref is not stable tagged release: " +
|
|
"\"master\"",
|
|
},
|
|
{
|
|
name: "feature",
|
|
args: args{
|
|
version: "feature/native-comp",
|
|
},
|
|
wantErr: "release: git ref is not stable tagged release: " +
|
|
"\"feature/native-comp\"",
|
|
},
|
|
{
|
|
name: "stable",
|
|
args: args{
|
|
version: "emacs-27.2",
|
|
},
|
|
want: "27.2",
|
|
},
|
|
{
|
|
name: "stable with letter",
|
|
args: args{
|
|
version: "emacs-23.3b",
|
|
},
|
|
want: "23.3b",
|
|
},
|
|
{
|
|
name: "future stable",
|
|
args: args{
|
|
version: "emacs-239.33",
|
|
},
|
|
want: "239.33",
|
|
},
|
|
{
|
|
name: "future stable with letter",
|
|
args: args{
|
|
version: "emacs-239.33c",
|
|
},
|
|
want: "239.33c",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := GitRefToStableVersion(tt.args.version)
|
|
|
|
assert.Equal(t, tt.want, got)
|
|
|
|
if tt.wantErr != "" {
|
|
assert.EqualError(t, err, tt.wantErr)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|