@@ -22,6 +22,7 @@ import org.jboss.weld.junit4.WeldInitiator
2222import org.junit.Rule
2323import spock.lang.Specification
2424import spock.lang.Subject
25+ import spock.util.environment.RestoreSystemProperties
2526import spock.util.mop.Use
2627
2728import javax.inject.Inject
@@ -32,6 +33,7 @@ import static org.powermock.reflect.Whitebox.getAllInstanceFields
3233import static org.powermock.reflect.Whitebox.getField
3334import static org.powermock.reflect.Whitebox.newInstance
3435
36+ @RestoreSystemProperties
3537class VersionTest extends Specification {
3638 @Rule
3739 WeldInitiator weld = WeldInitiator
@@ -59,7 +61,7 @@ class VersionTest extends Specification {
5961 version == ' <unknown>'
6062 commitId == ' <unknown>'
6163 buildTimestamp == null
62- displayVersion == ' <unknown>'
64+ displayVersion == ' <unknown> [<unknown> | <unknown>] '
6365 }
6466
6567 cleanup :
@@ -78,7 +80,7 @@ class VersionTest extends Specification {
7880 version == ' <unknown>'
7981 commitId == ' <unknown>'
8082 buildTimestamp == null
81- displayVersion == ' <unknown>'
83+ displayVersion == ' <unknown> [<unknown> | <unknown>] '
8284 }
8385
8486 cleanup :
@@ -137,6 +139,55 @@ class VersionTest extends Specification {
137139 versionPropertiesResourceField?. set(null , originalVersionPropertiesResource)
138140 }
139141
142+ @Use (PrivateFinalFieldSetterCategory )
143+ def ' missing commit ID should show as unknown in display version' () {
144+ given :
145+ def versionPropertiesResourceField = Version . getFinalFieldForSetting(' versionPropertiesResource' )
146+ def originalVersionPropertiesResource = versionPropertiesResourceField. get(null )
147+ def now = now()
148+
149+ and :
150+ versionPropertiesResourceField. set(null , new URL (" testproperties:${ URLEncoder.encode("""
151+ version = 1.2.3-SNAPSHOT
152+ buildTimestamp = $now
153+ """, UTF_8.name())} " ))
154+
155+ expect :
156+ with(testee) {
157+ version == ' 1.2.3-SNAPSHOT'
158+ commitId == ' <unknown>'
159+ buildTimestamp == now
160+ displayVersion == " 1.2.3-SNAPSHOT [<unknown> | $now ]"
161+ }
162+
163+ cleanup :
164+ versionPropertiesResourceField?. set(null , originalVersionPropertiesResource)
165+ }
166+
167+ @Use (PrivateFinalFieldSetterCategory )
168+ def ' missing build timestamp should show as unknown in display version' () {
169+ given :
170+ def versionPropertiesResourceField = Version . getFinalFieldForSetting(' versionPropertiesResource' )
171+ def originalVersionPropertiesResource = versionPropertiesResourceField. get(null )
172+
173+ and :
174+ versionPropertiesResourceField. set(null , new URL (" testproperties:${ URLEncoder.encode("""
175+ version = 1.2.3-SNAPSHOT
176+ commitId = abcdef
177+ """, UTF_8.name())} " ))
178+
179+ expect :
180+ with(testee) {
181+ version == ' 1.2.3-SNAPSHOT'
182+ commitId == ' abcdef'
183+ buildTimestamp == null
184+ displayVersion == ' 1.2.3-SNAPSHOT [abcdef | <unknown>]'
185+ }
186+
187+ cleanup :
188+ versionPropertiesResourceField?. set(null , originalVersionPropertiesResource)
189+ }
190+
140191 @Use (ContextualInstanceCategory )
141192 def ' toString should start with class name' () {
142193 expect :
0 commit comments