|
|
@@ -37,12 +37,12 @@ func TestVersionsCheckEnvVersionAndDefault(t *testing.T) {
|
|
|
t.Fatalf("未传环境版本时应优先按版本号返回任意环境版本,实际返回 %#v", got)
|
|
|
}
|
|
|
|
|
|
- if got := versions.Check("9.9.9", "wx", "trial"); got != releaseDefault {
|
|
|
- t.Fatalf("体验版版本号未命中应回退到正式服默认版本,实际返回 %#v", got)
|
|
|
+ if got := versions.Check("9.9.9", "wx", "trial"); got != trialDefault {
|
|
|
+ t.Fatalf("体验版版本号未命中应返回体验版默认版本,实际返回 %#v", got)
|
|
|
}
|
|
|
|
|
|
- if got := versions.Check("9.9.9", "wx", "develop"); got != releaseDefault {
|
|
|
- t.Fatalf("版本号未命中应回退到正式服默认版本,实际返回 %#v", got)
|
|
|
+ if got := versions.Check("9.9.9", "wx", "develop"); got != trialDefault {
|
|
|
+ t.Fatalf("develop 版本号未命中应返回体验版默认版本,实际返回 %#v", got)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -177,8 +177,8 @@ func TestVersionsCheckWithoutVersionFallsBackToLatestEnvironmentVersion(t *testi
|
|
|
if got := versions.Check("", "wx", "trial"); got != trial {
|
|
|
t.Fatalf("空版本号应只在指定环境内选择,实际返回 %#v", got)
|
|
|
}
|
|
|
- if got := versions.Check("9.9.9", "wx", "trial"); got != releaseLatest {
|
|
|
- t.Fatalf("指定版本和环境均未命中应返回最新正式服版本,实际返回 %#v", got)
|
|
|
+ if got := versions.Check("9.9.9", "wx", "trial"); got != trial {
|
|
|
+ t.Fatalf("指定版本未命中应返回体验版最新版本,实际返回 %#v", got)
|
|
|
}
|
|
|
if got := versions.Check("", "dy", ""); got != nil {
|
|
|
t.Fatalf("不应跨平台返回版本,实际返回 %#v", got)
|
|
|
@@ -208,3 +208,56 @@ func TestVersionsCheckTrialMissFallsBackToMatchingReleaseVersion(t *testing.T) {
|
|
|
t.Fatalf("版本号未命中时应返回正式服默认配置,实际返回 %#v", got)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func TestVersionsCheckDevelopAndEnvironmentFallback(t *testing.T) {
|
|
|
+ releaseDefault := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.0", Default: true}
|
|
|
+ releaseExact := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.3"}
|
|
|
+ trialDefault := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.1", Default: true}
|
|
|
+ trialLatest := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.2"}
|
|
|
+ legacyTrial := &version.Version{EnvVersion: "trial", Version: "1.0.3"}
|
|
|
+ otherTrial := &version.Version{Platform: "dy", EnvVersion: "trial", Version: "1.0.3"}
|
|
|
+ cases := []struct {
|
|
|
+ name string
|
|
|
+ records []*version.Version
|
|
|
+ number string
|
|
|
+ env string
|
|
|
+ want *version.Version
|
|
|
+ }{
|
|
|
+ {"develop exact", []*version.Version{releaseExact, trialLatest}, "1.0.2", "develop", trialLatest},
|
|
|
+ {"develop normalized", []*version.Version{releaseExact, trialLatest}, "1.0.2", " DeVeLoP ", trialLatest},
|
|
|
+ {"develop default before matching release", []*version.Version{releaseExact, trialDefault, trialLatest}, "1.0.3", "develop", trialDefault},
|
|
|
+ {"trial default before matching release", []*version.Version{releaseExact, trialDefault, trialLatest}, "1.0.3", "trial", trialDefault},
|
|
|
+ {"trial latest before matching release", []*version.Version{releaseExact, trialLatest}, "1.0.3", "trial", trialLatest},
|
|
|
+ {"develop latest before matching release", []*version.Version{releaseExact, trialLatest}, "1.0.3", "develop", trialLatest},
|
|
|
+ {"develop empty version", []*version.Version{releaseDefault, trialDefault, trialLatest}, "", "develop", trialDefault},
|
|
|
+ {"develop missing trial", []*version.Version{releaseDefault, releaseExact}, "1.0.3", "develop", releaseExact},
|
|
|
+ {"develop missing version and trial", []*version.Version{releaseDefault, releaseExact}, "9.9.9", "develop", releaseDefault},
|
|
|
+ {"develop release latest", []*version.Version{releaseExact}, "9.9.9", "develop", releaseExact},
|
|
|
+ {"develop empty version without trial", []*version.Version{releaseDefault}, "", "develop", releaseDefault},
|
|
|
+ {"platform isolation", []*version.Version{releaseExact, otherTrial}, "1.0.3", "develop", releaseExact},
|
|
|
+ {"legacy trial before release", []*version.Version{releaseExact, legacyTrial}, "1.0.3", "develop", legacyTrial},
|
|
|
+ {"platform default before legacy exact", []*version.Version{trialDefault, legacyTrial}, "1.0.3", "develop", trialDefault},
|
|
|
+ {"release miss stays release", []*version.Version{releaseDefault, trialLatest}, "1.0.2", "release", releaseDefault},
|
|
|
+ {"no records", nil, "1.0.3", "develop", nil},
|
|
|
+ }
|
|
|
+ for _, tc := range cases {
|
|
|
+ t.Run(tc.name, func(t *testing.T) {
|
|
|
+ versions := new(Versions)
|
|
|
+ for _, record := range tc.records {
|
|
|
+ platform, ok := versions.VPlatforms.Get(record.Platform)
|
|
|
+ if !ok {
|
|
|
+ platform = new(PlatformVersions)
|
|
|
+ versions.VPlatforms.Set(record.Platform, platform)
|
|
|
+ }
|
|
|
+ platform.VList.Push(record)
|
|
|
+ platform.VMap.Set(versionMapKey(record.Version, NormalizeEnvVersion(record.EnvVersion)), record)
|
|
|
+ }
|
|
|
+ if got := versions.Check(tc.number, "wx", tc.env); got != tc.want {
|
|
|
+ t.Fatalf("Check(%q, wx, %q) = %#v, want %#v", tc.number, tc.env, got, tc.want)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if got := NormalizeEnvVersion("develop"); got != releaseEnvVersion {
|
|
|
+ t.Fatalf("query alias must not change stored environment normalization: %q", got)
|
|
|
+ }
|
|
|
+}
|