@@ -19,11 +19,14 @@ import (
1919 "github.com/stretchr/testify/assert"
2020 "github.com/stretchr/testify/require"
2121
22- "golang.org/x/mod/semver"
23-
2422 defraMultiplier "github.com/sourcenetwork/defradb/tests/multiplier"
2523)
2624
25+ // Which release a declared version resolves to is covered by the multiplier
26+ // package. These tests cover what the harness adds on top: validating the
27+ // declared value, walking the active multipliers, and restoring the versions it
28+ // set, including when a skip ends the test partway through.
29+
2730// versionRecorder captures a failure from applyTestCaseVersion without ending
2831// the real test.
2932//
@@ -110,15 +113,6 @@ func runVersionMode(
110113 return resolved , rec
111114}
112115
113- func TestApplyTestCaseVersion_NoSupportedFrom_UsesDefaultTarget (t * testing.T ) {
114- resolved , rec := runVersion (t , "" , defraMultiplier .CrossVersionOldSource ,
115- defraMultiplier .CrossVersionOldSource )
116-
117- require .False (t , rec .failed )
118- assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
119- resolved [defraMultiplier .CrossVersionOldSource ])
120- }
121-
122116func TestApplyTestCaseVersion_SupportedFromNewerThanTarget_RunsAtSupportedFrom (t * testing.T ) {
123117 // The point of the change: rather than skipping, the test runs against the
124118 // oldest release it supports.
@@ -129,28 +123,9 @@ func TestApplyTestCaseVersion_SupportedFromNewerThanTarget_RunsAtSupportedFrom(t
129123 assert .Equal (t , "v99.0.0" , resolved [defraMultiplier .CrossVersionOldSource ])
130124}
131125
132- func TestApplyTestCaseVersion_SupportedFromEqualToTarget_UsesTarget (t * testing.T ) {
133- resolved , rec := runVersion (t , defraMultiplier .CrossVersionTargetVersion ,
134- defraMultiplier .CrossVersionOldSource , defraMultiplier .CrossVersionOldSource )
135-
136- require .False (t , rec .failed )
137- assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
138- resolved [defraMultiplier .CrossVersionOldSource ])
139- }
140-
141- func TestApplyTestCaseVersion_SupportedFromOlderThanTarget_UsesTarget (t * testing.T ) {
142- // The default target already satisfies the test, so it stays: it is the
143- // pairing most likely to have drifted from the current build.
144- require .Equal (t , "v1.0.0" , defraMultiplier .CrossVersionTargetVersion )
145-
146- resolved , rec := runVersion (t , "v0.9.0" , defraMultiplier .CrossVersionOldSource ,
147- defraMultiplier .CrossVersionOldSource )
148-
149- require .False (t , rec .failed )
150- assert .Equal (t , "v1.0.0" , resolved [defraMultiplier .CrossVersionOldSource ])
151- }
152-
153- func TestApplyTestCaseVersion_BothDirections_AreSetIndependently (t * testing.T ) {
126+ func TestApplyTestCaseVersion_AllVersionMultipliers_AreSet (t * testing.T ) {
127+ // Every active multiplier that targets a release has to be pointed at the
128+ // declared version, not just the first one found.
154129 active := fmt .Sprintf ("%s,%s" ,
155130 defraMultiplier .CrossVersionOldSource , defraMultiplier .CrossVersionNewSource )
156131
@@ -162,6 +137,30 @@ func TestApplyTestCaseVersion_BothDirections_AreSetIndependently(t *testing.T) {
162137 assert .Equal (t , "v99.0.0" , resolved [defraMultiplier .CrossVersionNewSource ])
163138}
164139
140+ func TestApplyTestCaseVersion_NonVersionMultiplier_Unaffected (t * testing.T ) {
141+ // signed-docs targets no release, so a declared version must not reach it and
142+ // must not disturb the cross-version default.
143+ _ , rec := runVersion (t , "v99.0.0" , defraMultiplier .SignedDocs )
144+
145+ require .False (t , rec .failed )
146+ assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
147+ defraMultiplier .TargetVersionInEffect (defraMultiplier .CrossVersionOldSource ))
148+ }
149+
150+ func TestApplyTestCaseVersion_Exact_SupportedFromNewerThanTarget_Skips (t * testing.T ) {
151+ // In exact mode the release the test needs is covered by its own run, so
152+ // running it here as well would report coverage of a release this run never
153+ // touched.
154+ _ , rec := runVersionExact (t , "v99.0.0" , defraMultiplier .CrossVersionOldSource ,
155+ defraMultiplier .CrossVersionOldSource )
156+
157+ assert .True (t , rec .skipped )
158+ assert .False (t , rec .failed )
159+ assert .Contains (t , rec .message , defraMultiplier .CrossVersionOldSource )
160+ assert .Contains (t , rec .message , defraMultiplier .CrossVersionTargetVersion )
161+ assert .Contains (t , rec .message , "v99.0.0" )
162+ }
163+
165164func TestApplyTestCaseVersion_RestoresDefaultAfterwards (t * testing.T ) {
166165 // A version must not leak into the next test in the package.
167166 _ , rec := runVersion (t , "v99.0.0" , defraMultiplier .CrossVersionOldSource ,
@@ -172,14 +171,19 @@ func TestApplyTestCaseVersion_RestoresDefaultAfterwards(t *testing.T) {
172171 defraMultiplier .TargetVersionInEffect (defraMultiplier .CrossVersionOldSource ))
173172}
174173
175- func TestApplyTestCaseVersion_NonVersionMultiplier_Unaffected (t * testing.T ) {
176- // signed-docs targets no release, so a declared version must not reach it and
177- // must not disturb the cross-version default.
178- _ , rec := runVersion (t , "v99.0.0" , defraMultiplier .SignedDocs )
174+ func TestApplyTestCaseVersion_Exact_SkipRestoresEarlierMultipliers (t * testing.T ) {
175+ // The skip ends the test partway through the loop, so a version set for an
176+ // earlier multiplier must not leak into the next test.
177+ active := fmt .Sprintf ("%s,%s" ,
178+ defraMultiplier .CrossVersionOldSource , defraMultiplier .CrossVersionNewSource )
179+
180+ _ , rec := runVersionExact (t , "v99.0.0" , active )
181+ require .True (t , rec .skipped )
179182
180- require .False (t , rec .failed )
181183 assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
182184 defraMultiplier .TargetVersionInEffect (defraMultiplier .CrossVersionOldSource ))
185+ assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
186+ defraMultiplier .TargetVersionInEffect (defraMultiplier .CrossVersionNewSource ))
183187}
184188
185189func TestApplyTestCaseVersion_InvalidVersion_Fails (t * testing.T ) {
@@ -210,74 +214,3 @@ func TestApplyTestCaseVersion_SpacedNames_AreTrimmed(t *testing.T) {
210214 require .False (t , rec .failed )
211215 assert .Equal (t , "v99.0.0" , resolved [defraMultiplier .CrossVersionOldSource ])
212216}
213-
214- // TestSupportedFromVersion_ComparisonIsNotLexical guards the reason x/mod/semver
215- // is used rather than plain string comparison.
216- func TestSupportedFromVersion_ComparisonIsNotLexical (t * testing.T ) {
217- // "v1.10.0" sorts before "v1.9.0" as a string, so a lexical comparison would
218- // treat a v1.10.0 target as older than a v1.9.0 requirement and needlessly
219- // move the run to v1.9.0.
220- require .Less (t , "v1.10.0" , "v1.9.0" , "precondition: these compare the wrong way lexically" )
221-
222- assert .Positive (t , semver .Compare ("v1.10.0" , "v1.9.0" ))
223- assert .Negative (t , semver .Compare ("v1.9.0" , "v1.10.0" ))
224- assert .Zero (t , semver .Compare ("v1.9.0" , "v1.9.0" ))
225- }
226-
227- func TestApplyTestCaseVersion_Exact_SupportedFromNewerThanTarget_Skips (t * testing.T ) {
228- // In exact mode the release the test needs is covered by its own run, so
229- // promoting it here would run it twice and report coverage of a release this
230- // run never touched.
231- _ , rec := runVersionExact (t , "v99.0.0" , defraMultiplier .CrossVersionOldSource ,
232- defraMultiplier .CrossVersionOldSource )
233-
234- assert .True (t , rec .skipped )
235- assert .False (t , rec .failed )
236- assert .Contains (t , rec .message , defraMultiplier .CrossVersionOldSource )
237- assert .Contains (t , rec .message , defraMultiplier .CrossVersionTargetVersion )
238- assert .Contains (t , rec .message , "v99.0.0" )
239- }
240-
241- func TestApplyTestCaseVersion_Exact_SupportedFromEqualToTarget_Runs (t * testing.T ) {
242- resolved , rec := runVersionExact (t , defraMultiplier .CrossVersionTargetVersion ,
243- defraMultiplier .CrossVersionOldSource , defraMultiplier .CrossVersionOldSource )
244-
245- require .False (t , rec .skipped )
246- require .False (t , rec .failed )
247- assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
248- resolved [defraMultiplier .CrossVersionOldSource ])
249- }
250-
251- func TestApplyTestCaseVersion_Exact_SupportedFromOlderThanTarget_Runs (t * testing.T ) {
252- resolved , rec := runVersionExact (t , "v0.9.0" , defraMultiplier .CrossVersionOldSource ,
253- defraMultiplier .CrossVersionOldSource )
254-
255- require .False (t , rec .skipped )
256- require .False (t , rec .failed )
257- assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
258- resolved [defraMultiplier .CrossVersionOldSource ])
259- }
260-
261- func TestApplyTestCaseVersion_Exact_NoSupportedFrom_Runs (t * testing.T ) {
262- resolved , rec := runVersionExact (t , "" , defraMultiplier .CrossVersionOldSource ,
263- defraMultiplier .CrossVersionOldSource )
264-
265- require .False (t , rec .skipped )
266- assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
267- resolved [defraMultiplier .CrossVersionOldSource ])
268- }
269-
270- func TestApplyTestCaseVersion_Exact_SkipRestoresEarlierMultipliers (t * testing.T ) {
271- // The skip ends the test partway through the loop, so a version set for an
272- // earlier multiplier must not leak into the next test.
273- active := fmt .Sprintf ("%s,%s" ,
274- defraMultiplier .CrossVersionOldSource , defraMultiplier .CrossVersionNewSource )
275-
276- _ , rec := runVersionExact (t , "v99.0.0" , active )
277- require .True (t , rec .skipped )
278-
279- assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
280- defraMultiplier .TargetVersionInEffect (defraMultiplier .CrossVersionOldSource ))
281- assert .Equal (t , defraMultiplier .CrossVersionTargetVersion ,
282- defraMultiplier .TargetVersionInEffect (defraMultiplier .CrossVersionNewSource ))
283- }
0 commit comments