Blame view

sources/autotest.cmd 6.36 KB
31b7f2792   Kload   Upgrade to ownclo...
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
142
  ::
  :: ownCloud
  ::
  :: @author Thomas Müller
  :: @author Tobias Ramforth (translated into Windows batch file)
  ::
  :: @copyright 2012, 2013 Thomas Müller thomas.mueller@tmit.eu
  ::
  
  set DATADIR=data-autotest
  set BASEDIR=%~dp0
  
  :: create autoconfig for sqlite, mysql, postgresql and mssql
  echo ^<?php                                      > .\tests\autoconfig-sqlite.php
  echo $AUTOCONFIG ^= array ^(                     >> .\tests\autoconfig-sqlite.php
  echo  'installed' ^=^> false^,                   >> .\tests\autoconfig-sqlite.php
  echo  'dbtype' ^=^> 'sqlite'^,                   >> .\tests\autoconfig-sqlite.php
  echo  'dbtableprefix' ^=^> 'oc_'^,               >> .\tests\autoconfig-sqlite.php
  echo  'adminlogin' ^=^> 'admin'^,                >> .\tests\autoconfig-sqlite.php
  echo  'adminpass' ^=^> 'admin'^,                 >> .\tests\autoconfig-sqlite.php
  echo  'directory' ^=^> '%BASEDIR%%DATADIR%'^,    >> .\tests\autoconfig-sqlite.php
  echo ^)^;                                        >> .\tests\autoconfig-sqlite.php
  
  echo ^<?php                                      > .\tests\autoconfig-mysql.php
  echo $AUTOCONFIG ^= array ^(                     >> .\tests\autoconfig-mysql.php
  echo   'installed' ^=^> false^,                  >> .\tests\autoconfig-mysql.php
  echo   'dbtype' ^=^> 'mysql'^,                   >> .\tests\autoconfig-mysql.php
  echo   'dbtableprefix' ^=^> 'oc_'^,              >> .\tests\autoconfig-mysql.php
  echo   'adminlogin' ^=^> 'admin'^,               >> .\tests\autoconfig-mysql.php
  echo   'adminpass' ^=^> 'admin'^,                >> .\tests\autoconfig-mysql.php
  echo   'directory' ^=^> '%BASEDIR%%DATADIR%'^,   >> .\tests\autoconfig-mysql.php
  echo   'dbuser' ^=^> 'oc_autotest'^,             >> .\tests\autoconfig-mysql.php
  echo   'dbname' ^=^> 'oc_autotest'^,             >> .\tests\autoconfig-mysql.php
  echo   'dbhost' ^=^> 'localhost'^,               >> .\tests\autoconfig-mysql.php
  echo   'dbpass' ^=^> 'owncloud'^,                >> .\tests\autoconfig-mysql.php
  echo ^)^;                                        >> .\tests\autoconfig-mysql.php
  
  echo ^<?php                                      > .\tests\autoconfig-pgsql.php
  echo $AUTOCONFIG ^= array ^(                     >> .\tests\autoconfig-pgsql.php
  echo   'installed' ^=^> false^,                  >> .\tests\autoconfig-pgsql.php
  echo   'dbtype' ^=^> 'pgsql'^,                   >> .\tests\autoconfig-pgsql.php
  echo   'dbtableprefix' ^=^> 'oc_'^,              >> .\tests\autoconfig-pgsql.php
  echo   'adminlogin' ^=^> 'admin'^,               >> .\tests\autoconfig-pgsql.php
  echo   'adminpass' ^=^> 'admin'^,                >> .\tests\autoconfig-pgsql.php
  echo   'directory' ^=^> '%BASEDIR%%DATADIR%'^,   >> .\tests\autoconfig-pgsql.php
  echo   'dbuser' ^=^> 'oc_autotest'^,             >> .\tests\autoconfig-pgsql.php
  echo   'dbname' ^=^> 'oc_autotest'^,             >> .\tests\autoconfig-pgsql.php
  echo   'dbhost' ^=^> 'localhost'^,               >> .\tests\autoconfig-pgsql.php
  echo   'dbpass' ^=^> 'owncloud'^,                >> .\tests\autoconfig-pgsql.php
  echo ^)^;                                        >> .\tests\autoconfig-pgsql.php
  
  echo ^<?php                                      > .\tests\autoconfig-mssql.php
  echo $AUTOCONFIG ^= array ^(                     >> .\tests\autoconfig-mssql.php
  echo   'installed' ^=^> false^,                  >> .\tests\autoconfig-mssql.php
  echo   'dbtype' ^=^> 'mssql'^,                   >> .\tests\autoconfig-mssql.php
  echo   'dbtableprefix' ^=^> 'oc_'^,              >> .\tests\autoconfig-mssql.php
  echo   'adminlogin' ^=^> 'admin'^,               >> .\tests\autoconfig-mssql.php
  echo   'adminpass' ^=^> 'admin'^,                >> .\tests\autoconfig-mssql.php
  echo   'directory' ^=^> '%BASEDIR%%DATADIR%'^,   >> .\tests\autoconfig-mssql.php
  echo   'dbuser' ^=^> 'oc_autotest'^,             >> .\tests\autoconfig-mssql.php
  echo   'dbname' ^=^> 'oc_autotest'^,             >> .\tests\autoconfig-mssql.php
  echo   'dbhost' ^=^> 'localhost\sqlexpress'^,    >> .\tests\autoconfig-mssql.php
  echo   'dbpass' ^=^> 'owncloud'^,                >> .\tests\autoconfig-mssql.php
  echo ^)^;                                        >> .\tests\autoconfig-mssql.php
  
  echo localhost:5432:*:oc_autotest:owncloud > %APPDATA%\postgresql\pgpass.conf
  
  ::
  :: start test execution
  ::
  if [%1] == [] (
  	echo "Running on all database backends"
  	call:execute_tests "sqlite"
  	call:execute_tests "mysql"
  	call:execute_tests "mssql"
  	::call:execute_tests "ora"
  	call:execute_tests "pgsql"
  ) else (
  	call:execute_tests "%1"
  )
  
  goto:eof
  
  :execute_tests
  	echo "Setup environment for %~1 testing ..."
  	:: back to root folder
  	cd %BASEDIR%
  
  	:: revert changes to tests\data
  	git checkout tests\data\*
  
  	:: reset data directory
  	rmdir /s /q %DATADIR%
  	md %DATADIR%
  
  	:: remove the old config file
  	:: del /q /f config\config.php
  	copy /y tests\preseed-config.php config\config.php
  
  	:: drop database
  	if "%~1" == "mysql" mysql -u oc_autotest -powncloud -e "DROP DATABASE oc_autotest"
  	
  	if "%~1" == "pgsql" dropdb -h localhost -p 5432 -U oc_autotest -w oc_autotest
  
  	:: we assume a sqlexpress installation
  	if "%~1" == "mssql" sqlcmd -S localhost\sqlexpress -U oc_autotest -P owncloud -Q "IF EXISTS (SELECT name FROM sys.databases WHERE name=N'oc_autotest') DROP DATABASE [oc_autotest]"
  	
  	:: copy autoconfig
  	copy /y %BASEDIR%\tests\autoconfig-%~1.php %BASEDIR%\config\autoconfig.php
  
  	:: trigger installation
  	php -f index.php
  
  	::test execution
  	echo "Testing with %~1 ..."
  	cd tests
  	rmdir /s /q coverage-html-%~1
  	md coverage-html-%~1
  	php -f enable_all.php
  
  	call phpunit --bootstrap bootstrap.php --configuration phpunit-autotest.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
  
  	echo "Done with testing %~1 ..."
  	cd %BASEDIR%
  goto:eof
  
  ::
  :: NOTES on mysql:
  ::  - CREATE USER 'oc_autotest'@'localhost' IDENTIFIED BY 'owncloud';
  ::  - grant access permissions: grant all on oc_autotest.* to 'oc_autotest'@'localhost';
  ::
  :: NOTES on pgsql:
  ::  - su - postgres
  ::  - createuser -P (enter username and password and enable superuser)
  ::  - to enable dropdb I decided to add following line to pg_hba.conf (this is not the safest way but I don't care for the testing machine):
  :: local	all	all	trust
  ::
  :: NOTES on mssql:
  ::  we assume the usage of a local installed sqlexpress
  ::  create a user 'oc_autotest' with password 'owncloud' and assign the server role 'dbcreator'
  ::  make sure the sqlserver is configured to allow sql authentication
  ::