1
1
#! /usr/bin/env bash
2
2
3
3
if [ $# -lt 3 ]; then
4
- echo " usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version]"
4
+ echo " usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version] [skip-database-creation] "
5
5
exit 1
6
6
fi
7
7
@@ -10,9 +10,12 @@ DB_USER=$2
10
10
DB_PASS=$3
11
11
DB_HOST=${4-localhost}
12
12
WP_VERSION=${5-latest}
13
+ SKIP_DB_CREATE=${6-false}
13
14
14
- WP_TESTS_DIR=${WP_TESTS_DIR-/ tmp/ wordpress-tests-lib}
15
- WP_CORE_DIR=${WP_CORE_DIR-/ tmp/ wordpress/ }
15
+ TMPDIR=${TMPDIR-/ tmp}
16
+ TMPDIR=$( echo $TMPDIR | sed -e " s/\/$//" )
17
+ WP_TESTS_DIR=${WP_TESTS_DIR-$TMPDIR / wordpress-tests-lib}
18
+ WP_CORE_DIR=${WP_CORE_DIR-$TMPDIR / wordpress/ }
16
19
17
20
download () {
18
21
if [ ` which curl` ]; then
@@ -22,8 +25,19 @@ download() {
22
25
fi
23
26
}
24
27
25
- if [[ $WP_VERSION =~ [0-9]+\. [0-9]+ (\. [0-9]+)? ]]; then
26
- WP_TESTS_TAG=" tags/$WP_VERSION "
28
+ if [[ $WP_VERSION =~ ^[0-9]+\. [0-9]+\- (beta| RC)[0-9]+$ ]]; then
29
+ WP_BRANCH=${WP_VERSION% \- * }
30
+ WP_TESTS_TAG=" branches/$WP_BRANCH "
31
+
32
+ elif [[ $WP_VERSION =~ ^[0-9]+\. [0-9]+$ ]]; then
33
+ WP_TESTS_TAG=" branches/$WP_VERSION "
34
+ elif [[ $WP_VERSION =~ [0-9]+\. [0-9]+\. [0-9]+ ]]; then
35
+ if [[ $WP_VERSION =~ [0-9]+\. [0-9]+\. [0] ]]; then
36
+ # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
37
+ WP_TESTS_TAG=" tags/${WP_VERSION% ??} "
38
+ else
39
+ WP_TESTS_TAG=" tags/$WP_VERSION "
40
+ fi
27
41
elif [[ $WP_VERSION == ' nightly' || $WP_VERSION == ' trunk' ]]; then
28
42
WP_TESTS_TAG=" trunk"
29
43
else
37
51
fi
38
52
WP_TESTS_TAG=" tags/$LATEST_VERSION "
39
53
fi
40
-
41
54
set -ex
42
55
43
56
install_wp () {
@@ -49,31 +62,43 @@ install_wp() {
49
62
mkdir -p $WP_CORE_DIR
50
63
51
64
if [[ $WP_VERSION == ' nightly' || $WP_VERSION == ' trunk' ]]; then
52
- mkdir -p /tmp /wordpress-nightly
53
- download https://wordpress.org/nightly-builds/wordpress-latest.zip /tmp /wordpress-nightly/wordpress-nightly.zip
54
- unzip -q /tmp/ wordpress-nightly/wordpress-nightly.zip -d /tmp /wordpress-nightly/
55
- mv /tmp /wordpress-nightly/wordpress/* $WP_CORE_DIR
65
+ mkdir -p $TMPDIR /wordpress-nightly
66
+ download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR /wordpress-nightly/wordpress-nightly.zip
67
+ unzip -q $TMPDIR / wordpress-nightly/wordpress-nightly.zip -d $TMPDIR /wordpress-nightly/
68
+ mv $TMPDIR /wordpress-nightly/wordpress/* $WP_CORE_DIR
56
69
else
57
70
if [ $WP_VERSION == ' latest' ]; then
58
71
local ARCHIVE_NAME=' latest'
72
+ elif [[ $WP_VERSION =~ [0-9]+\. [0-9]+ ]]; then
73
+ # https serves multiple offers, whereas http serves single.
74
+ download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR /wp-latest.json
75
+ if [[ $WP_VERSION =~ [0-9]+\. [0-9]+\. [0] ]]; then
76
+ # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
77
+ LATEST_VERSION=${WP_VERSION% ??}
78
+ else
79
+ # otherwise, scan the releases and get the most up to date minor version of the major release
80
+ local VERSION_ESCAPED=` echo $WP_VERSION | sed ' s/\./\\\\./g' `
81
+ LATEST_VERSION=$( grep -o ' "version":"' $VERSION_ESCAPED ' [^"]*' $TMPDIR /wp-latest.json | sed ' s/"version":"//' | head -1)
82
+ fi
83
+ if [[ -z " $LATEST_VERSION " ]]; then
84
+ local ARCHIVE_NAME=" wordpress-$WP_VERSION "
85
+ else
86
+ local ARCHIVE_NAME=" wordpress-$LATEST_VERSION "
87
+ fi
59
88
else
60
89
local ARCHIVE_NAME=" wordpress-$WP_VERSION "
61
90
fi
62
- download https://wordpress.org/${ARCHIVE_NAME} .tar.gz /tmp /wordpress.tar.gz
63
- tar --strip-components=1 -zxmf /tmp /wordpress.tar.gz -C $WP_CORE_DIR
91
+ download https://wordpress.org/${ARCHIVE_NAME} .tar.gz $TMPDIR /wordpress.tar.gz
92
+ tar --strip-components=1 -zxmf $TMPDIR /wordpress.tar.gz -C $WP_CORE_DIR
64
93
fi
65
94
66
95
download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR /wp-content/db.php
67
96
}
68
97
69
- install_wp_api () {
70
- git clone https://github.com/WP-API/WP-API.git wp-api
71
- }
72
-
73
98
install_test_suite () {
74
99
# portable in-place argument for both GNU sed and Mac OSX sed
75
100
if [[ $( uname -s) == ' Darwin' ]]; then
76
- local ioption=' -i .bak'
101
+ local ioption=' -i.bak'
77
102
else
78
103
local ioption=' -i'
79
104
fi
@@ -83,13 +108,14 @@ install_test_suite() {
83
108
# set up testing suite
84
109
mkdir -p $WP_TESTS_DIR
85
110
svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG} /tests/phpunit/includes/ $WP_TESTS_DIR /includes
111
+ svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG} /tests/phpunit/data/ $WP_TESTS_DIR /data
86
112
fi
87
113
88
- cd $WP_TESTS_DIR
89
-
90
114
if [ ! -f wp-tests-config.php ]; then
91
115
download https://develop.svn.wordpress.org/${WP_TESTS_TAG} /wp-tests-config-sample.php " $WP_TESTS_DIR " /wp-tests-config.php
92
- sed $ioption " s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR ':" " $WP_TESTS_DIR " /wp-tests-config.php
116
+ # remove all forward slashes in the end
117
+ WP_CORE_DIR=$( echo $WP_CORE_DIR | sed " s:/\+$::" )
118
+ sed $ioption " s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR /':" " $WP_TESTS_DIR " /wp-tests-config.php
93
119
sed $ioption " s/youremptytestdbnamehere/$DB_NAME /" " $WP_TESTS_DIR " /wp-tests-config.php
94
120
sed $ioption " s/yourusernamehere/$DB_USER /" " $WP_TESTS_DIR " /wp-tests-config.php
95
121
sed $ioption " s/yourpasswordhere/$DB_PASS /" " $WP_TESTS_DIR " /wp-tests-config.php
@@ -99,6 +125,11 @@ install_test_suite() {
99
125
}
100
126
101
127
install_db () {
128
+
129
+ if [ ${SKIP_DB_CREATE} = " true" ]; then
130
+ return 0
131
+ fi
132
+
102
133
# parse DB_HOST for port or socket references
103
134
local PARTS=(${DB_HOST// \: / } )
104
135
local DB_HOSTNAME=${PARTS[0]} ;
@@ -120,6 +151,5 @@ install_db() {
120
151
}
121
152
122
153
install_wp
123
- install_wp_api
124
154
install_test_suite
125
155
install_db
0 commit comments