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

Reply via email to