:: :: 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 ^ .\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 ^ .\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 ^ .\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 ^ .\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 :: no external files on windows for now cd .. php occ app:disable files_external cd tests 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 :: /a> 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 143 144 145 146 147 148 149 150 151 152