2 # Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
4 # Licensed under the Apache License 2.0 (the "License"). You may not use
5 # this file except in compliance with the License. You can obtain a copy
6 # in the file LICENSE in the source distribution or at
7 # https://www.openssl.org/source/license.html
9 # This script runs a test suite to check the functions in release-state-fn.sh
10 # and release-version-fn.sh. It does this by setting up a small temporary
11 # repository with just enough fake data (in include/openssl/opensslv.h or
12 # VERSION.dat) to see that version data is updated correctly.
17 HERE=$(cd $(dirname $0); pwd)
18 . $HERE/release-state-fn.sh
19 . $HERE/release-version-fn.sh
21 today="$(date '+%-d %b %Y')"
23 repo=release-test-$$.git
24 git init --quiet /var/tmp/$repo
26 trap "cd $HERE; rm -rf /var/tmp/$repo" EXIT
28 echo "===== OpenSSL 3.0 version scheme"
30 cat > VERSION.dat <<_____
40 git commit -m 'Fake 3.2.0-dev' --quiet
47 for key in "${!expected[@]}"; do
48 if [ "${!key}" != "${expected[$key]}" ]; then
53 if [ $errs -gt 0 ]; then
54 echo >&2 "Got the wrong data:"
55 for key in "${!expected[@]}"; do
56 echo >&2 " \$$key=${!key}"
59 for key in "${!expected[@]}"; do
60 echo >&2 " \$$key=${expected[$key]}"
66 echo "Initial read of VERSION.DAT"
71 [FULL_VERSION]=3.2.0-dev
74 [RELEASE_FILES]='CHANGES.md;NEWS.md'
79 echo "Test release of 3.2.0-alpha1"
83 [FULL_VERSION]=3.2.0-alpha1
84 [PRE_RELEASE_TAG]=alpha1
85 [RELEASE_DATE]="$today"
87 next_release_state alpha
90 echo "Test post-release of 3.2.0-alpha1"
94 [FULL_VERSION]=3.2.0-alpha2-dev
95 [PRE_RELEASE_TAG]=alpha2-dev
98 next_release_state alpha
101 echo "Test release of 3.2.0-beta1"
105 [FULL_VERSION]=3.2.0-beta1
106 [PRE_RELEASE_TAG]=beta1
107 [RELEASE_DATE]="$today"
109 next_release_state beta
112 echo "Test post-release of 3.2.0-beta1"
116 [FULL_VERSION]=3.2.0-beta2-dev
117 [PRE_RELEASE_TAG]=beta2-dev
120 next_release_state beta
123 echo "Test release of 3.2.0"
129 [RELEASE_DATE]="$today"
131 next_release_state final
134 echo "Test post-release of 3.2.0"
138 [FULL_VERSION]=3.2.1-dev
139 [PRE_RELEASE_TAG]=dev
142 next_release_state final
145 echo "Test release of 3.2.1"
151 [RELEASE_DATE]="$today"
153 next_release_state ''
156 echo "Test post-release of 3.2.1"
160 [FULL_VERSION]=3.2.2-dev
161 [PRE_RELEASE_TAG]=dev
164 next_release_state ''
167 echo "Test switch to next minor release (3.3.0-dev)"
171 [FULL_VERSION]=3.3.0-dev
172 [PRE_RELEASE_TAG]=dev
175 next_release_state minor
178 echo "Test writing $VERSION_FILE"
180 cat > expected-VERSION.dat <<_____
189 if ! diff_output="$(diff -u expected-VERSION.dat VERSION.dat)"; then
190 echo >&2 "$diff_output"
194 echo "===== OpenSSL 1.0.2 version scheme"
197 git rm --quiet VERSION.dat
199 cat > crypto/opensslv.h <<_____
200 # define OPENSSL_VERSION_NUMBER 0x10002210L
202 # define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2zh-fips-dev xx XXX xxxx"
204 # define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2zh-dev xx XXX xxxx"
206 # define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT
209 git add openssl.spec crypto/opensslv.h
210 git commit -m 'Fake 1.0.2zh-dev' --quiet
212 echo "Test initial read of crypto/opensslv.h"
217 [FULL_VERSION]=1.0.2zh-dev
218 [PRE_RELEASE_TAG]=dev
219 [SHLIB_VERSION]=1.0.0
220 [RELEASE_FILES]='README;CHANGES;NEWS;openssl.spec'
225 echo "Test release of 1.0.2zh"
229 [FULL_VERSION]=1.0.2zh
231 [RELEASE_DATE]="$today"
233 next_release_state ''
236 echo "Test post-release of 1.0.2zh"
240 [FULL_VERSION]=1.0.2zi-dev
241 [PRE_RELEASE_TAG]=dev
244 next_release_state ''
247 echo "Test writing $VERSION_FILE"
249 cat > crypto/expected-opensslv.h <<_____
250 # define OPENSSL_VERSION_NUMBER 0x10002220L
252 # define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2zi-fips-dev xx XXX xxxx"
254 # define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2zi-dev xx XXX xxxx"
256 # define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT
258 if ! diff_output="$(diff -u crypto/expected-opensslv.h crypto/opensslv.h)"; then
259 echo >&2 "$diff_output"
263 echo "===== PASS ====="