http://www.mediawiki.org/wiki/Special:Code/MediaWiki/100283
Revision: 100283
Author: khorn
Date: 2011-10-19 22:00:35 +0000 (Wed, 19 Oct 2011)
Log Message:
-----------
Merging the fundraising branch of DonationInterface back into trunk.
Test cases that changed in the fundraising branch since the start of the merge
process.
At this point, the merge from the fundraising branch should no longer be broken.
Modified Paths:
--------------
trunk/extensions/DonationInterface/tests/Adapter/GlobalCollect/BankTransferTestCase.php
trunk/extensions/DonationInterface/tests/TestHelper.php
Added Paths:
-----------
trunk/extensions/DonationInterface/tests/phpunit.xml
trunk/extensions/DonationInterface/tests/unittest.conf.dist
trunk/extensions/DonationInterface/tests/unittest.sh
Property Changed:
----------------
trunk/extensions/DonationInterface/tests/
trunk/extensions/DonationInterface/tests/TestConfiguration.php.dist
Property changes on: trunk/extensions/DonationInterface/tests
___________________________________________________________________
Modified: svn:ignore
- TestConfiguration.php
+ TestConfiguration.php
unittest.conf
Added: svn:mergeinfo
+ /branches/fundraising/extensions/DonationInterface/tests:100122-100281
Modified:
trunk/extensions/DonationInterface/tests/Adapter/GlobalCollect/BankTransferTestCase.php
===================================================================
---
trunk/extensions/DonationInterface/tests/Adapter/GlobalCollect/BankTransferTestCase.php
2011-10-19 21:59:59 UTC (rev 100282)
+++
trunk/extensions/DonationInterface/tests/Adapter/GlobalCollect/BankTransferTestCase.php
2011-10-19 22:00:35 UTC (rev 100283)
@@ -62,27 +62,97 @@
IBAN
CountryDescription
Notes
- We do not need to have donor information stored on our
side yet as long as it is sent to Global Collect
+ We do not need to have donor information stored on our
side yet as long as it is sent to Global Collect
*/
/**
- * Copied from Katie's test code
+ * testbuildRequestXML
+ *
+ * @todo
+ * - there are many cases to this that need to be developed.
+ * - Do not consider this a complete test!
+ *
+ * @covers GatewayAdapter::__construct
+ * @covers GatewayAdapter::do_transaction
+ * @covers GatewayAdapter::buildRequestXML
+ * @covers GatewayAdapter::getData
*/
public function testbuildRequestXML() {
- $this->markTestIncomplete( TESTS_MESSAGE_NOT_IMPLEMENTED );
+ global $wgGlobalCollectGatewayTest;
+ global $wgRequest;
+
+ $wgGlobalCollectGatewayTest = true;
- return;
+ $_SERVER = array();
- $gateway = new TestAdapter();
- $gateway->publicCurrentTransaction( 'Test1' );
- $built = $gateway->buildRequestXML();
- $expected = '<?xml version="1.0"?>' . "\n";
- $expected .=
'<XML><REQUEST><ACTION>Donate</ACTION><ACCOUNT><MERCHANTID>128</MERCHANTID><PASSWORD>k4ftw</PASSWORD><VERSION>3.2</VERSION><RETURNURL>http://'
. TESTS_HOSTNAME .
'/index.php/Donate-thanks/en</RETURNURL></ACCOUNT><DONATION><DONOR>Tester
Testington</DONOR><AMOUNT>35000</AMOUNT><CURRENCYCODE>USD</CURRENCYCODE><LANGUAGECODE>en</LANGUAGECODE><COUNTRYCODE>US</COUNTRYCODE></DONATION></REQUEST></XML>'
. "\n";
- $this->assertEquals($built, $expected, "The constructed XML for
transaction type Test1 does not match our expected.");
+ $_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.1';
+ $_SERVER['HTTP_HOST'] = TESTS_HOSTNAME;
+ $_SERVER['SERVER_NAME'] = TESTS_HOSTNAME;
+ $_SERVER['REQUEST_URI'] =
'/index.php/Special:GlobalCollectGateway?form_name=TwoStepAmount';
+
+
+ $options = array();
+ $options['test'] = true;
+ $transactionType = 'BANK_TRANSFER';
+
+ $amount = 350;
+
+ $options['postDefaults'] = array(
+ 'returnTitle' => true,
+ 'returnTo' => 'http://' . TESTS_HOSTNAME .
'/index.php/Special:GlobalCollectGatewayResult',
+ );
+
+ $options['testData'] = array(
+ 'amount' => $amount,
+ 'transaction_type' => $transactionType,
+ 'email' => TESTS_EMAIL,
+ 'fname' => 'Testy',
+ 'lname' => 'Testerton',
+ 'street' => '123 Happy Street',
+ 'city' => 'Barcelona',
+ 'state' => 'XX',
+ 'zip' => '',
+ 'country' => 'ES',
+ //'size' => 'small',
+ 'currency' => 'EUR',
+ 'payment_method' => '',
+ //'order_id' => '5038287830',
+ //'i_order_id' => '1234567890',
+ 'numAttempt' => 0,
+ 'referrer' => 'http://' . TESTS_HOSTNAME .
'/index.php/Special:GlobalCollectGateway?form_name=TwoStepAmount',
+ 'utm_source' => '..gc_bt',
+ 'utm_medium' => null,
+ 'utm_campaign' => null,
+ 'language' => 'en',
+ 'comment-option' => '',
+ 'comment' => '',
+ 'email-opt' => 1,
+ 'test_string' => '',
+ 'token' => '',
+ 'contribution_tracking_id' => '',
+ 'data_hash' => '',
+ 'action' => '',
+ 'gateway' => 'globalcollect',
+ 'owa_session' => '',
+ 'owa_ref' => 'http://localhost/defaultTestData',
+ 'transaction_type' => '', // Used by GlobalCollect for
payment types
+ );
+
+ $gateway = new GlobalCollectAdapter( $options );
+
+ $result = $gateway->do_transaction( $transactionType );
+
+ $request = trim( $gateway->buildRequestXML() );
+
+ $orderId = $gateway->getData( 'order_id' );
+
+ $expected = '<?xml version="1.0"?>' . "\n";
+ $expected .=
'<XML><REQUEST><ACTION>INSERT_ORDERWITHPAYMENT</ACTION><META><MERCHANTID>6570</MERCHANTID><VERSION>1.0</VERSION></META><PARAMS><ORDER><ORDERID>'
. $orderId . '</ORDERID><AMOUNT>' . $amount * 100 .
'</AMOUNT><CURRENCYCODE>EUR</CURRENCYCODE><LANGUAGECODE>en</LANGUAGECODE><COUNTRYCODE>ES</COUNTRYCODE><MERCHANTREFERENCE>'
. $orderId .
'</MERCHANTREFERENCE></ORDER><PAYMENT><PAYMENTPRODUCTID>11</PAYMENTPRODUCTID><AMOUNT>35000</AMOUNT><CURRENCYCODE>EUR</CURRENCYCODE><LANGUAGECODE>en</LANGUAGECODE><COUNTRYCODE>ES</COUNTRYCODE><HOSTEDINDICATOR>1</HOSTEDINDICATOR><RETURNURL>http://wikimedia-fundraising-1.17.localhost.wikimedia.org/index.php/Special:GlobalCollectGatewayResult?order_id='
. $orderId .
'</RETURNURL><FIRSTNAME>Testy</FIRSTNAME><SURNAME>Testerton</SURNAME><STREET>123
Happy
Street</STREET><CITY>Barcelona</CITY><STATE>XX</STATE><EMAIL>[email protected]</EMAIL></PAYMENT></PARAMS></REQUEST></XML>';
+ //$expected .=
'<XML><REQUEST><ACTION>Donate</ACTION><ACCOUNT><MERCHANTID>128</MERCHANTID><PASSWORD>k4ftw</PASSWORD><VERSION>3.2</VERSION><RETURNURL>http://'
. TESTS_HOSTNAME .
'/index.php/Donate-thanks/en</RETURNURL></ACCOUNT><DONATION><DONOR>Tester
Testington</DONOR><AMOUNT>35000</AMOUNT><CURRENCYCODE>USD</CURRENCYCODE><LANGUAGECODE>en</LANGUAGECODE><COUNTRYCODE>US</COUNTRYCODE></DONATION></REQUEST></XML>'
. "\n";
+ $this->assertEquals($request, $expected, 'The constructed XML
for transaction type [' . $transactionType . '] does not match our expected.');
}
-
/**
* testRequestHasRequiredFields
@@ -110,8 +180,8 @@
public function testSendToGlobalCollect() {
$this->markTestIncomplete( TESTS_MESSAGE_NOT_IMPLEMENTED );
- //global $wgContLang, $wgAuth, $wgMemc, $wgRequest, $wgUser,
$wgServer;
global $wgGlobalCollectGatewayTest;
+ global $wgRequest;
$wgGlobalCollectGatewayTest = true;
@@ -121,51 +191,35 @@
$_SERVER['HTTP_HOST'] = TESTS_HOSTNAME;
$_SERVER['SERVER_NAME'] = TESTS_HOSTNAME;
$_SERVER['REQUEST_URI'] =
'/index.php/Special:GlobalCollectGateway?form_name=TwoStepAmount';
-
- /**
- * @see WebStart.php
- */
- require_once TESTS_WEB_ROOT . '/includes/WebStart.php';
$options = array();
$options['test'] = true;
- $options['transactionType'] = 'BANK_TRANSFER';
+ $transactionType = 'BANK_TRANSFER';
$options['postDefaults'] = array(
'returnTitle' => true,
'returnTo' => 'http://' . TESTS_HOSTNAME .
'/index.php/Special:GlobalCollectGatewayResult',
);
+
+ $amount = 350;
$options['testData'] = array(
- 'amount' => "35",
- 'amountOther' => '',
- 'email' => '[email protected]',
- 'fname' => 'Tester',
- 'mname' => 'T.',
- 'lname' => 'Testington',
- 'street' => '548 Market St.',
- 'city' => 'San Francisco',
- 'state' => 'CA',
- 'zip' => '94104',
- 'country' => 'US',
- 'fname2' => 'Testy',
- 'lname2' => 'Testerson',
- 'street2' => '123 Telegraph Ave.',
- 'city2' => 'Berkeley',
- 'state2' => 'CA',
- 'zip2' => '94703',
- 'country2' => 'US',
- 'size' => 'small',
- 'premium_language' => 'es',
- //'card_num' =>
TESTS_CREDIT_CARDS_AMEREICAN_EXPRESS_VALID_CARD,
- //'card_type' => 'american',
- //'expiration' => date( 'my', strtotime( '+1 year 1
month' ) ),
- //'cvv' => '001',
- 'currency' => 'USD',
+ 'amount' => $amount,
+ 'transaction_type' => $transactionType,
+ 'email' => TESTS_EMAIL,
+ 'fname' => 'Testy',
+ 'lname' => 'Testerton',
+ 'street' => '123 Happy Street',
+ 'city' => 'Barcelona',
+ 'state' => 'XX',
+ 'zip' => '',
+ 'country' => 'ES',
+ //'size' => 'small',
+ 'currency' => 'EUR',
'payment_method' => '',
- 'order_id' => '1234567890',
- 'i_order_id' => '1234567890',
+ //'order_id' => '5038287830',
+ //'i_order_id' => '1234567890',
'numAttempt' => 0,
'referrer' => 'http://' . TESTS_HOSTNAME .
'/index.php/Special:GlobalCollectGateway?form_name=TwoStepAmount',
'utm_source' => '..gc_bt',
@@ -187,7 +241,9 @@
);
$gateway = new GlobalCollectAdapter( $options );
- return $gateway->do_transaction( $options['transactionType'] );
+ $result = $gateway->do_transaction( $transactionType );
+
+ $this->assertTrue( $result );
}
}
Property changes on:
trunk/extensions/DonationInterface/tests/TestConfiguration.php.dist
___________________________________________________________________
Deleted: svn:eol-style
- native
Modified: trunk/extensions/DonationInterface/tests/TestHelper.php
===================================================================
--- trunk/extensions/DonationInterface/tests/TestHelper.php 2011-10-19
21:59:59 UTC (rev 100282)
+++ trunk/extensions/DonationInterface/tests/TestHelper.php 2011-10-19
22:00:35 UTC (rev 100283)
@@ -37,7 +37,22 @@
*/
error_reporting( E_ALL | E_STRICT );
+/**
+ * TESTS_WEB_ROOT
+ *
+ * This is similar to $IP, the installation path in Mediawiki.
+ */
+define( 'TESTS_WEB_ROOT', dirname( dirname( dirname( dirname( __FILE__ ) ) ) )
);
+$IP = TESTS_WEB_ROOT;
+
+/*
+ * Required files for unit testing.
+ */
+require_once( TESTS_WEB_ROOT . '/includes/SpecialPage.php' );
+require_once( TESTS_WEB_ROOT . '/includes/Title.php' );
+require_once( TESTS_WEB_ROOT . '/includes/Exception.php' );
+
/**
* @see DonationData
*/
@@ -49,6 +64,16 @@
require_once dirname( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR .
'gateway_common/gateway.adapter.php';
/**
+ * @see GatewayForm
+ */
+require_once dirname( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR .
'gateway_common/GatewayForm.php';
+
+/**
+ * @see extras/extras.body.php
+ */
+require_once dirname( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR .
'extras/extras.body.php';
+
+/**
* @see GlobalCollectAdapter
*/
require_once dirname( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR .
'globalcollect_gateway/globalcollect.adapter.php';
@@ -58,19 +83,52 @@
*/
require_once dirname( dirname( dirname( __FILE__ ) ) ) . DIRECTORY_SEPARATOR .
'ContributionTracking/ContributionTracking.processor.php';
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ define( 'MEDIAWIKI', 1 );
+}
+
+/*
+ * Unit tests are run from the command line.
+ *
+ * It should be confirmed that this will not affect other tests such as
Selenium.
+ */
+//$wgCommandLineMode = true;
+//$wgCanonicalServer = true;
+
/**
- * TESTS_WEB_ROOT
+ * Initializing the global $_SERVER for unit testing. This array does not exist
+ * on the CLI.
*
- * This is similar to $IP, the installation path in Mediawiki.
+ * You may customize this variable in TestConfiguration.php.
+ *
+ * @todo
+ * - make this default more general and customizable.
+ *
+ * @var array $_SERVER
*/
-define( 'TESTS_WEB_ROOT', dirname( dirname( dirname( dirname( __FILE__ ) ) ) )
);
+$_SERVER = array ( 'HTTP_HOST' => 'localhost', 'HTTP_USER_AGENT' =>
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101
Firefox/7.0.1', 'HTTP_ACCEPT' =>
'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5', 'HTTP_ACCEPT_ENCODING' => 'gzip,
deflate', 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'HTTP_CONNECTION' => 'keep-alive', 'HTTP_COOKIE' =>
'mediawiki_fundraising_117_session=f2rc8vv6av1o324qodvinqlpi1',
'HTTP_IF_MODIFIED_SINCE' => 'Fri, 14 Oct 2011 20:18:45 GMT', 'PATH' =>
'/usr/bin:/bin:/usr/sbin:/sbin', 'SERVER_SIGNATURE' => '
+Apache/2.2.19 (Unix) DAV/2 PHP/5.3.7 Server at localhost Port 80
+', 'SERVER_SOFTWARE' => 'Apache/2.2.19 (Unix) DAV/2 PHP/5.3.7', 'SERVER_NAME'
=> 'localhost', 'SERVER_ADDR' => '127.0.0.1', 'SERVER_PORT' => '80',
'REMOTE_ADDR' => '127.0.0.1', 'DOCUMENT_ROOT' => '/dev/null', 'SERVER_ADMIN' =>
'[email protected]', 'SCRIPT_FILENAME' => '/dev/null/index.php',
'REMOTE_PORT' => '62747', 'GATEWAY_INTERFACE' => 'CGI/1.1', 'SERVER_PROTOCOL'
=> 'HTTP/1.1', 'REQUEST_METHOD' => 'GET', 'QUERY_STRING' => '', 'REQUEST_URI'
=> '/', 'SCRIPT_NAME' => '/index.php', 'PHP_SELF' => '/index.php',
'REQUEST_TIME' => 1318890010, );
+// Initialize session for unit testing
+$_SESSION = isset( $_SESSION ) ? $_SESSION : array();
+
/*
- * Unit tests are run from the command line.
+ * Required files for unit testing.
*
- * It should be confirmed that this will not affect other tests such as
Selenium.
+ * These files need to be required after the above code. Do not move.
*/
-$wgCommandLineMode = true;
+require_once( TESTS_WEB_ROOT . '/includes/Defines.php' );
+require_once( TESTS_WEB_ROOT . '/LocalSettings.php' );
+require_once( TESTS_WEB_ROOT . '/includes/WebRequest.php' );
+require_once( TESTS_WEB_ROOT . '/includes/GlobalFunctions.php' );
+require_once( TESTS_WEB_ROOT . '/includes/HttpFunctions.php' );
+require_once( TESTS_WEB_ROOT . '/includes/db/Database.php' );
+require_once( TESTS_WEB_ROOT . '/includes/db/DatabaseMysql.php' );
+require_once( TESTS_WEB_ROOT . '/includes/Profiler.php' );
+$request = $_SERVER;
+$wgRequest = new FauxRequest( $request );
/*
* Load the user-defined test configuration file, if it exists; otherwise, load
@@ -82,3 +140,11 @@
require_once 'TestConfiguration.php.dist';
}
+/*
+ * Customize the server variable options.
+ */
+$_SERVER['HTTP_HOST'] = TESTS_HOSTNAME;
+$_SERVER['SERVER_NAME'] = TESTS_HOSTNAME;
+$_SERVER['SERVER_NAME'] = TESTS_WEB_ROOT;
+$_SERVER['SERVER_ADMIN'] = TESTS_EMAIL;
+
Copied: trunk/extensions/DonationInterface/tests/phpunit.xml (from rev 100281,
branches/fundraising/extensions/DonationInterface/tests/phpunit.xml)
===================================================================
--- trunk/extensions/DonationInterface/tests/phpunit.xml
(rev 0)
+++ trunk/extensions/DonationInterface/tests/phpunit.xml 2011-10-19
22:00:35 UTC (rev 100283)
@@ -0,0 +1,12 @@
+<phpunit>
+ <filter>
+ <whitelist addUncoveredFilesFromWhitelist="false">
+ <directory suffix=".php">../</directory>
+ <exclude>
+ <directory suffix=".php">../extras</directory>
+ <directory suffix=".php">../tests</directory>
+ <directory
suffix=".php">../../../includes</directory>
+ </exclude>
+ </whitelist>
+ </filter>
+</phpunit>
Copied: trunk/extensions/DonationInterface/tests/unittest.conf.dist (from rev
100281,
branches/fundraising/extensions/DonationInterface/tests/unittest.conf.dist)
===================================================================
--- trunk/extensions/DonationInterface/tests/unittest.conf.dist
(rev 0)
+++ trunk/extensions/DonationInterface/tests/unittest.conf.dist 2011-10-19
22:00:35 UTC (rev 100283)
@@ -0,0 +1,90 @@
+#!/bin/sh
+################################################################################
+#
+# Wikimedia Foundation
+#
+# LICENSE
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+#
+# @category UnitTesting
+# @package Fundraising_Miscellaneous
+# @license http://www.gnu.org/copyleft/gpl.html GNU GENERAL PUBLIC
LICENSE
+# @since r462
+# @author Jeremy Postlethwaite <[email protected]>
+#
+################################################################################
+#
+# This is the distributed configuration file. If you need to make changes to
+# these settings, copy this file to this directory and remove the ".dist"
+# extension.
+#
+################################################################################
+#
+# @var string $UNITTEST_HOSTNAME The hostname to the webserver.
+#
+: ${UNITTEST_HOSTNAME:="localhost"}
+#
+# @var string $UNITTEST_URL The url to the webserver. You need the trailing
+# slash.
+#
+: ${UNITTEST_URL:="http://localhost/queue_handling/tests/"}
+#
+# @var string $PHPUNIT If phpunit.php is not within your shell $PATH, you may
+# specify the full path here.
+#
+: ${PHPUNIT:="phpunit.php"}
+#
+# @var string $PHPUNIT_OPTS By default, all testing will be run in verbose
mode.
+#
+: ${PHPUNIT_OPTS:="--verbose"}
+#
+# @var string $PHPUNIT_LIST_GROUPS Specify the relative path to the file
in
+# which you want to list groups designated by the doctag @group
+#
+: ${PHPUNIT_LIST_GROUPS:"=AllTests.php"}
+#
+# @var string $PHPUNIT_FILE Specify the relative path to the test in which
you
+# want to run. You need to omit the ".php" extension.
+#
+: ${PHPUNIT_FILE:="AllTests"}
+#
+# @var string $PHPUNIT_COVERAGE_HTML The relative path to the code coverage
+# html directory
+#
+# This is where code coverage will be saved if the flag -ch is passed. If you
wish to specify a full path, use:
+# --coverage-html "/some/absolute/path"
+#
+# These directories will need to exist, they will not be created.
+#
+: ${PHPUNIT_COVERAGE_HTML:="logs/coverage/html"}
+#
+# @var string $PHPUNIT_COVERAGE_CLOVER The relative path to the code coverage
+# clover directory
+#
+# This is where code coverage will be saved if the flag -ch is passed. If you
wish to specify a full path, use:
+# --coverage-clover "/some/absolute/path"
+#
+# These directories will need to exist, they will not be created.
+#
+: ${PHPUNIT_COVERAGE_CLOVER:="logs/coverage/clover/index.xml"}
+#
+# @var string $PHPUNIT_TESTDOX_HTML The relative path to the testdox output
html
+# directory. It is okay to put this the same directory as html coverage.
+#
+# This is where testdox will be saved if the flag -tdh is passed. If you wish
to specify a full path, use:
+# --testdox-html "/some/absolute/path"
+#
+# These directories will need to exist, they will not be created.
+#
+: ${PHPUNIT_TESTDOX_HTML:="logs/coverage/html/testdox.html"}
+
Copied: trunk/extensions/DonationInterface/tests/unittest.sh (from rev 100281,
branches/fundraising/extensions/DonationInterface/tests/unittest.sh)
===================================================================
--- trunk/extensions/DonationInterface/tests/unittest.sh
(rev 0)
+++ trunk/extensions/DonationInterface/tests/unittest.sh 2011-10-19
22:00:35 UTC (rev 100283)
@@ -0,0 +1,289 @@
+#!/bin/sh
+################################################################################
+#
+# Wikimedia Foundation
+#
+# LICENSE
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+#
+# @category UnitTesting
+# @package Fundraising_Miscellaneous
+# @license http://www.gnu.org/copyleft/gpl.html GNU GENERAL PUBLIC
LICENSE
+# @since r462
+# @author Jeremy Postlethwaite <[email protected]>
+#
+################################################################################
+#
+# The script:
+#
+# unittest.sh - Launch PHPUnit for specific test group(s).
+#
+################################################################################
+#
+# Debugging the script
+#
+# The set -x option causes sh to print each command to standard error before
+# executing it. Since this can generate a lot of output, you may want to turn
+# tracing on just before the section that you want to trace, and turn it off
+# immediately afterward:
+#set -x
+#
+################################################################################
+#
+# help()
+#
+################################################################################
+help()
+{
+ cat <<HELP
+
+NAME
+ unittest.sh -- Run phpunit
+
+SYNOPSIS
+ $0
+ [-h | --help] [help]
+ [-l | --list-groups] ["relative/path/to/file"]
+
+ [-d | --debug ]
+ [-nc | --no-configuration ]
+
+ [-cc | --coverage-clover ["/full/path/to/index.xml"] ]
+ [-ch | --coverage-html ["/full/path/to/folder"] ]
+ [-tdh | --testdox-html ["/full/path/to/testdox.html"] ]
+
+DESCRIPTION
+ The unittest.sh script is designed to facilitate running phpunit.
+
+EXAMPLES
+
+ # List all groups available for testing
+
+ $0 -l
+
+ # List all groups available for testing in the file PostTestCase
+
+ $0 -l GlobalCollect/AllTests.php
+
+ # List all groups available for testing in the file PostTestCase
+
+ $0 -l GlobalCollect/PostTestCase.php
+
+ # Run unit testing with html code coverage report to default path
+
+ $0 -ch
+
+ # Run unit testing with html code coverage report
+
+ $0 -ch GlobalCollect/AllTests
+
+ # Run unit testing with clover code coverage report to default path
+
+ $0 -cc
+
+ # Run unit testing with clover code coverage report
+
+ $0 -cc GlobalCollect/AllTests
+
+ # Generate testdox report
+
+ $0 -tdh
+ $0 --testdox-html
+
+ # Turn on PHPUnit debugging
+
+ $0 -d
+ $0 --debug
+
+ # Ignore the local phpunit.xml file
+
+ $0 -nc
+ $0 --no-configuration
+
+HELP
+ exit 0
+}
+################################################################################
+#
+# load_configuration()
+#
+# Load the configuration file
+#
+################################################################################
+load_configuration()
+{
+ CONFIGURATION_FILE="unittest.conf"
+
+ # Load the custom configuration file if it exists
+ if [ -f "${CONFIGURATION_FILE}" ]; then
+ source ${CONFIGURATION_FILE};
+ else
+
+ # Load the default configuration file
+ CONFIGURATION_FILE="${CONFIGURATION_FILE}.dist"
+
+ if [ -f "${CONFIGURATION_FILE}" ]; then
+ source ${CONFIGURATION_FILE};
+ else
+ echo "The default configuration file
(${CONFIGURATION_FILE}) is missing from: `pwd`"
+ exit 1;
+ fi
+ fi
+}
+################################################################################
+#
+# Begin execution of script
+#
+################################################################################
+# Run help if needed.
+[ -z "${1}" ] && help
+[ "${1}" = "-h" ] && help
+[ "${1}" = "help" ] && help
+
+#
+# @var string $UNITTEST_DIRECTORY This is the relative path to the
+# configuration file.
+UNITTEST_DIRECTORY="`dirname $0`/"
+
+# Change to script directory to keep path variables consistent.
+cd ${UNITTEST_DIRECTORY}
+
+load_configuration
+################################################################################
+#
+# @var string $PHPUNIT_COVERAGE_HTML_LINK The link to html code coverage
+#
+PHPUNIT_COVERAGE_HTML_LINK=${UNITTEST_URL}
+#
+# @var string $PHPUNIT_COVERAGE_CLOVER_LINK The link to clover code coverage
+#
+PHPUNIT_COVERAGE_CLOVER_LINK=${UNITTEST_URL}
+#
+# @var string $PHPUNIT_COVERAGE_TESTDOX_LINK The link to testdox code
coverage
+#
+PHPUNIT_COVERAGE_TESTDOX_LINK=${UNITTEST_URL}
+################################################################################
+
+################################################################################
+#
+# Loop through options to pass to phpunit.php
+#
+################################################################################
+while [ -n "$1" ] ; do
+
+ case "$1" in
+
+ # list-groups
+ -l|--list-groups)
+ PHPUNIT_LIST_GROUPS="--list-groups"
+ break ;;
+
+ # coverage-html
+ -ch)
+ PHPUNIT_COVERAGE="${PHPUNIT_COVERAGE} --coverage-html
${PHPUNIT_COVERAGE_HTML}"
+
PHPUNIT_COVERAGE_HTML_LINK="${PHPUNIT_COVERAGE_HTML_LINK}${PHPUNIT_COVERAGE_HTML}"
+ shift 1 ;;
+
+ --coverage-html)
+ PHPUNIT_COVERAGE="${PHPUNIT_COVERAGE} --coverage-html
$2"
+
PHPUNIT_COVERAGE_HTML_LINK="${PHPUNIT_COVERAGE_HTML_LINK}$2"
+ shift ;;
+
+ # coverage-clover
+ -cc)
+ PHPUNIT_COVERAGE="${PHPUNIT_COVERAGE} --coverage-clover
${PHPUNIT_COVERAGE_CLOVER}"
+
PHPUNIT_COVERAGE_CLOVER_LINK="${PHPUNIT_COVERAGE_CLOVER_LINK}${PHPUNIT_COVERAGE_CLOVER}"
+ shift 1 ;;
+
+ --coverage-clover)
+ PHPUNIT_COVERAGE="${PHPUNIT_COVERAGE} --coverage-clover
$2"
+
PHPUNIT_COVERAGE_CLOVER_LINK="${PHPUNIT_COVERAGE_CLOVER_LINK}$2"
+ shift 2 ;;
+
+ # no-configuration
+ -nc|--no-configuration)
+ PHPUNIT_OPTS="${PHPUNIT_OPTS} --no-configuration"
+ shift ;;
+
+ # testdox-html
+ -tdh)
+ PHPUNIT_COVERAGE="${PHPUNIT_COVERAGE} --testdox-html
${PHPUNIT_TESTDOX_HTML}"
+
PHPUNIT_COVERAGE_TESTDOX_LINK="${PHPUNIT_COVERAGE_TESTDOX_LINK}${PHPUNIT_TESTDOX_HTML}"
+ shift 1 ;;
+
+ --testdox-html)
+ PHPUNIT_COVERAGE="${PHPUNIT_COVERAGE} --testdox-html
$2"
+
PHPUNIT_COVERAGE_TESTDOX_LINK="${PHPUNIT_COVERAGE_TESTDOX_LINK}$2"
+ shift 2 ;;
+
+ # debug
+ -d|--debug)
+ PHPUNIT_OPTS="${PHPUNIT_OPTS} --debug"
+ shift ;;
+
+ # file
+ -f|--file)
+ PHPUNIT_FILE="$2"
+ shift 2 ;;
+
+ # All groups
+ ALL|all|MAX|max)
+ PHPUNIT_GROUPS=""
+ break ;;
+
+ *)
+
PHPUNIT_GROUPS="${PHPUNIT_GROUPS:+"$PHPUNIT_GROUPS,"}$1"
+ shift ;;
+ esac
+done
+################################################################################
+#
+# Information statements
+#
+################################################################################
+echo ""
+
+echo "SCRIPT PATH:\n\n${PATH}"
+
+echo ""
+
+echo "PWD:\n\n`pwd`"
+
+echo ""
+
+COMMAND_OPTIONS="${PHPUNIT_OPTS} ${PHPUNIT_LIST_GROUPS} ${PHPUNIT_COVERAGE}
${PHPUNIT_GROUPS:+--group $PHPUNIT_GROUPS} ${PHPUNIT_FILE}"
+echo "COMMAND:\n\n${PHPUNIT} ${COMMAND_OPTIONS}"
+
+echo ""
+
+echo "HTML code coverage link:\n\n${PHPUNIT_COVERAGE_HTML_LINK}"
+
+echo ""
+
+echo "Clover code coverage link:\n\n${PHPUNIT_COVERAGE_CLOVER_LINK}"
+
+echo ""
+
+echo "Testdox code coverage link:\n\n${PHPUNIT_COVERAGE_TESTDOX_LINK}"
+
+echo ""
+
+################################################################################
+# Debugging
+#
+# The set -n option causes sh to read the script but not execute any commands.
+# This is useful for checking syntax.
+#set -n
+################################################################################
+
+${PHPUNIT} ${PHPUNIT_OPTS} ${COMMAND_OPTIONS}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs