forked from firefly-iii/firefly-iii
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.sh
executable file
·141 lines (116 loc) · 3.24 KB
/
test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/bin/bash
DATABASE=./storage/database/database.sqlite
DATABASECOPY=./storage/database/databasecopy.sqlite
ORIGINALENV=./.env
BACKUPENV=./.env.current
TESTINGENV=./.env.testing
# do something with flags:
resetTestFlag=''
testflag=''
coverageflag=''
featureflag=''
featuretestclass=''
unitflag=''
unittestclass=''
verbalflag=''
testsuite=''
configfile='phpunit.xml';
while getopts 'vcrtf:u:s:' flag; do
case "${flag}" in
r)
resetTestFlag='true'
;;
t)
testflag='true'
;;
c)
coverageflag='true'
configfile='phpunit.coverage.xml';
;;
v)
verbalflag=' -v --debug'
echo "Will be verbal about it"
;;
f)
featureflag='true'
featuretestclass=./tests/Feature/$OPTARG
echo "Will only run Feature test $OPTARG"
;;
u)
unitflag='true'
unittestclass=./tests/Unit/$OPTARG
echo "Will only run Unit test $OPTARG"
;;
s)
testsuite="--testsuite $OPTARG"
echo "Will only run test suite '$OPTARG'"
;;
*) error "Unexpected option ${flag}" ;;
esac
done
if [[ $coverageflag == "true" && ($featureflag == "true" || $unitflag == "true") ]]
then
echo "Use config file specific.xml"
configfile='phpunit.coverage.specific.xml'
fi
# backup current config (if it exists):
if [ -f $ORIGINALENV ]; then
mv $ORIGINALENV $BACKUPENV
fi
# enable testing config
cp $TESTINGENV $ORIGINALENV
# reset database (optional)
if [[ $resetTestFlag == "true" ]]
then
echo "Must reset database"
# touch files to make sure they exist.
touch $DATABASE
touch $DATABASECOPY
# truncate original database file
truncate $DATABASE --size 0
# run migration
php artisan migrate:refresh --seed
# call test data generation script
$(which php) /sites/FF3/test-data/artisan generate:data local sqlite
# also run upgrade routine:
$(which php) /sites/FF3/firefly-iii/artisan firefly:upgrade-database
# copy new database over backup (resets backup)
cp $DATABASE $DATABASECOPY
# copy new database to test-data repository:
cp $DATABASE /sites/FF3/test-data/storage/database.sqlite
fi
# do not reset database (optional)
if [[ $resetTestFlag == "" ]]
then
echo "Will not reset database"
fi
echo "Copy test database over original"
# take database from copy:
cp $DATABASECOPY $DATABASE
echo "clear caches and what-not.."
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan twig:clean
php artisan view:clear
# run PHPUnit
if [[ $testflag == "" ]]
then
echo "Must not run PHPUnit"
else
echo "Must run PHPUnit"
if [[ $coverageflag == "" ]]
then
echo "Must run PHPUnit without coverage:"
echo "phpunit $verbalflag --configuration $configfile $featuretestclass $unittestclass $testsuite"
phpunit $verbalflag --configuration $configfile $featuretestclass $unittestclass $testsuite
else
echo "Must run PHPUnit with coverage"
echo "phpunit $verbalflag --configuration $configfile $featuretestclass $unittestclass $testsuite"
phpunit $verbalflag --configuration $configfile $featuretestclass $unittestclass $testsuite
fi
fi
# restore current config:
if [ -f $BACKUPENV ]; then
mv $BACKUPENV $ORIGINALENV
fi