|
|
:::: ownCloud:::: @author Thomas Müller:: @author Tobias Ramforth (translated into Windows batch file):::: @copyright 2012, 2013 Thomas Müller thomas.mueller@tmit.eu::
@echo off
set BASEDIR=%~dp0set DATADIR=%BASEDIR%data-autotest
:: create autoconfig for sqlite, mysql, postgresql and mssqlecho ^<?php > .\tests\autoconfig-sqlite.phpecho $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-sqlite.phpecho 'installed' ^=^> false^, >> .\tests\autoconfig-sqlite.phpecho 'dbtype' ^=^> 'sqlite'^, >> .\tests\autoconfig-sqlite.phpecho 'dbtableprefix' ^=^> 'oc_'^, >> .\tests\autoconfig-sqlite.phpecho 'adminlogin' ^=^> 'admin'^, >> .\tests\autoconfig-sqlite.phpecho 'adminpass' ^=^> 'admin'^, >> .\tests\autoconfig-sqlite.phpecho 'directory' ^=^> '%DATADIR%'^, >> .\tests\autoconfig-sqlite.phpecho ^)^; >> .\tests\autoconfig-sqlite.php
echo ^<?php > .\tests\autoconfig-mysql.phpecho $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-mysql.phpecho 'installed' ^=^> false^, >> .\tests\autoconfig-mysql.phpecho 'dbtype' ^=^> 'mysql'^, >> .\tests\autoconfig-mysql.phpecho 'dbtableprefix' ^=^> 'oc_'^, >> .\tests\autoconfig-mysql.phpecho 'adminlogin' ^=^> 'admin'^, >> .\tests\autoconfig-mysql.phpecho 'adminpass' ^=^> 'admin'^, >> .\tests\autoconfig-mysql.phpecho 'directory' ^=^> '%DATADIR%'^, >> .\tests\autoconfig-mysql.phpecho 'dbuser' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mysql.phpecho 'dbname' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mysql.phpecho 'dbhost' ^=^> 'localhost'^, >> .\tests\autoconfig-mysql.phpecho 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-mysql.phpecho ^)^; >> .\tests\autoconfig-mysql.php
echo ^<?php > .\tests\autoconfig-pgsql.phpecho $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-pgsql.phpecho 'installed' ^=^> false^, >> .\tests\autoconfig-pgsql.phpecho 'dbtype' ^=^> 'pgsql'^, >> .\tests\autoconfig-pgsql.phpecho 'dbtableprefix' ^=^> 'oc_'^, >> .\tests\autoconfig-pgsql.phpecho 'adminlogin' ^=^> 'admin'^, >> .\tests\autoconfig-pgsql.phpecho 'adminpass' ^=^> 'admin'^, >> .\tests\autoconfig-pgsql.phpecho 'directory' ^=^> '%DATADIR%'^, >> .\tests\autoconfig-pgsql.phpecho 'dbuser' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-pgsql.phpecho 'dbname' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-pgsql.phpecho 'dbhost' ^=^> 'localhost'^, >> .\tests\autoconfig-pgsql.phpecho 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-pgsql.phpecho ^)^; >> .\tests\autoconfig-pgsql.php
echo ^<?php > .\tests\autoconfig-mssql.phpecho $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-mssql.phpecho 'installed' ^=^> false^, >> .\tests\autoconfig-mssql.phpecho 'dbtype' ^=^> 'mssql'^, >> .\tests\autoconfig-mssql.phpecho 'dbtableprefix' ^=^> 'oc_'^, >> .\tests\autoconfig-mssql.phpecho 'adminlogin' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.phpecho 'adminpass' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.phpecho 'directory' ^=^> '%DATADIR%'^, >> .\tests\autoconfig-mssql.phpecho 'dbuser' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.phpecho 'dbname' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.phpecho 'dbhost' ^=^> 'localhost\sqlexpress'^, >> .\tests\autoconfig-mssql.phpecho 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-mssql.phpecho ^)^; >> .\tests\autoconfig-mssql.php
echo localhost:5432:*:oc_autotest:owncloud > %APPDATA%\postgresql\pgpass.conf
@echo on
:: Back up existing (dev) config if one existsif exist config\config.php ( copy /y config\config.php config\config-autotest-backup.php)
:::: start test execution::if [%1] == [] ( @echo "Running on all database backends" call:execute_tests "sqlite" "%2" call:execute_tests "mysql" "%2" call:execute_tests "mssql" "%2" ::call:execute_tests "ora" "%2" call:execute_tests "pgsql" "%2") else ( call:execute_tests "%1" "%2")
goto:restore_config
goto:eof
:restore_config :: Restore existing config if exist config\config-autotest-backup.php ( copy /y config\config-autotest-backup.php config\config.php )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 @echo INDEX call php -f index.php @echo END INDEX
::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 %~2
@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::
|