Since the tests were ported from t/ to phpunit's
phase3/maintenance/tests/ in r61938 and other commits running the
tests on my machine takes up to 1GB of memory and grows as it runs
more tests. It seems that phpunit uses the same instance of the php
interpreter for running all the tests.

Is there some way around this? Perhaps phpunit.xml could be tweaked so
that it runs a new php for each test?

Furthermore when I run `make test' I get this:

    Time: 03:35, Memory: 1849.25Mb

    There were 2 failures:

    1) LanguageConverterTest::testGetPreferredVariantUserOption
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -tg-latn
    +tg

    
/home/avar/src/mw/trunk/phase3/maintenance/tests/LanguageConverterTest.php:82

    2) Warning
    No tests found in class "ParserUnitTest".

    FAILURES!
    Tests: 686, Assertions: 3431, Failures: 2, Incomplete: 34

But when I run phpunit manually on the test then all tests pass:

    $ phpunit LanguageConverterTest.php
    PHPUnit 3.4.5 by Sebastian Bergmann.

    .........

    Time: 23 seconds, Memory: 23.75Mb

    OK (9 tests, 34 assertions)

Also after I get "Tests: 686, Assertions: 3431, Failures: 2,
Incomplete: 34" in the first output phpunit doesn't exit and continues
hugging my memory. Why is it still running? It has already run all the
tests.

On Wed, Feb 3, 2010 at 17:35,  <[email protected]> wrote:
> http://www.mediawiki.org/wiki/Special:Code/MediaWiki/61938
>
> Revision: 61938
> Author:   ialex
> Date:     2010-02-03 17:35:59 +0000 (Wed, 03 Feb 2010)
>
> Log Message:
> -----------
> * Port tests from t/inc/
> * Added new tests to XmlTest
>
> Added Paths:
> -----------
>    trunk/phase3/tests/LicensesTest.php
>    trunk/phase3/tests/SanitizerTest.php
>    trunk/phase3/tests/TimeAdjustTest.php
>    trunk/phase3/tests/TitleTest.php
>    trunk/phase3/tests/XmlTest.php
>
> Added: trunk/phase3/tests/LicensesTest.php
> ===================================================================
> --- trunk/phase3/tests/LicensesTest.php                         (rev 0)
> +++ trunk/phase3/tests/LicensesTest.php 2010-02-03 17:35:59 UTC (rev 61938)
> @@ -0,0 +1,17 @@
> +<?php
> +
> +/**
> + * @group Broken
> + */
> +class LicensesTest extends PHPUnit_Framework_TestCase {
> +
> +       function testLicenses() {
> +               $str = "
> +* Free licenses:
> +** GFLD|Debian disagrees
> +";
> +
> +               $lc = new Licenses( $str );
> +               $this->assertTrue( is_a( $lc, 'Licenses' ), 'Correct class' );
> +       }
> +}
> \ No newline at end of file
>
>
> Property changes on: trunk/phase3/tests/LicensesTest.php
> ___________________________________________________________________
> Added: svn:eol-style
>   + native
>
> Added: trunk/phase3/tests/SanitizerTest.php
> ===================================================================
> --- trunk/phase3/tests/SanitizerTest.php                                (rev 
> 0)
> +++ trunk/phase3/tests/SanitizerTest.php        2010-02-03 17:35:59 UTC (rev 
> 61938)
> @@ -0,0 +1,71 @@
> +<?php
> +
> +global $IP;
> +require_once( "$IP/includes/Sanitizer.php" );
> +
> +class SanitizerTest extends PHPUnit_Framework_TestCase {
> +
> +       function testDecodeNamedEntities() {
> +               $this->assertEquals(
> +                       "\xc3\xa9cole",
> +                       Sanitizer::decodeCharReferences( '&eacute;cole' ),
> +                       'decode named entities'
> +               );
> +       }
> +
> +       function testDecodeNumericEntities() {
> +               $this->assertEquals(
> +                       "\xc4\x88io bonas dans l'\xc3\xa9cole!",
> +                       Sanitizer::decodeCharReferences( "&#x108;io bonas 
> dans l'&#233;cole!" ),
> +                       'decode numeric entities'
> +               );
> +       }
> +
> +       function testDecodeMixedEntities() {
> +               $this->assertEquals(
> +                       "\xc4\x88io bonas dans l'\xc3\xa9cole!",
> +                       Sanitizer::decodeCharReferences( "&#x108;io bonas 
> dans l'&eacute;cole!" ),
> +                       'decode mixed numeric/named entities'
> +               );
> +       }
> +
> +       function testDecodeMixedComplexEntities() {
> +               $this->assertEquals(
> +                       "\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas 
> &#x108;io dans l'&eacute;cole)",
> +                       Sanitizer::decodeCharReferences(
> +                               "&#x108;io bonas dans l'&eacute;cole! (mais 
> pas &amp;#x108;io dans l'&#38;eacute;cole)"
> +                       ),
> +                       'decode mixed complex entities'
> +               );
> +       }
> +
> +       function testInvalidAmpersand() {
> +               $this->assertEquals(
> +                       'a & b',
> +                       Sanitizer::decodeCharReferences( 'a & b' ),
> +                       'Invalid ampersand'
> +               );
> +       }
> +
> +       function testInvalidEntities() {
> +               $this->assertEquals(
> +                       '&foo;',
> +                       Sanitizer::decodeCharReferences( '&foo;' ),
> +                       'Invalid named entity'
> +               );
> +       }
> +
> +       function testInvalidNumberedEntities() {
> +               $this->assertEquals( UTF8_REPLACEMENT, 
> Sanitizer::decodeCharReferences( "&#88888888888888;" ), 'Invalid numbered 
> entity' );
> +       }
> +
> +       function testSelfClosingTag() {
> +               $GLOBALS['wgUseTidy'] = false;
> +               $this->assertEquals(
> +                       '<div>Hello world</div>',
> +                       Sanitizer::removeHTMLtags( '<div>Hello world</div />' 
> ),
> +                       'Self-closing closing div'
> +               );
> +       }
> +}
> +
>
>
> Property changes on: trunk/phase3/tests/SanitizerTest.php
> ___________________________________________________________________
> Added: svn:eol-style
>   + native
>
> Added: trunk/phase3/tests/TimeAdjustTest.php
> ===================================================================
> --- trunk/phase3/tests/TimeAdjustTest.php                               (rev 
> 0)
> +++ trunk/phase3/tests/TimeAdjustTest.php       2010-02-03 17:35:59 UTC (rev 
> 61938)
> @@ -0,0 +1,40 @@
> +<?php
> +
> +class TimeAdjustTest extends PHPUnit_Framework_TestCase {
> +
> +       public function setUp() {
> +               $this->iniSet( 'precision', 15 );
> +       }
> +
> +       # Test offset usage for a given language::userAdjust
> +       function testUserAdjust() {
> +               global $wgLocalTZoffset, $wgContLang, $wgUser;
> +
> +               $wgContLang = $en = Language::factory( 'en' );
> +
> +               # Collection of parameters for Language_t_Offset.
> +               # Format: date to be formatted, localTZoffset value, expected 
> date
> +               $userAdjust_tests = array(
> +                       array( 20061231235959,   0, 20061231235959 ),
> +                       array( 20061231235959,   5, 20070101000459 ),
> +                       array( 20061231235959,  15, 20070101001459 ),
> +                       array( 20061231235959,  60, 20070101005959 ),
> +                       array( 20061231235959,  90, 20070101012959 ),
> +                       array( 20061231235959, 120, 20070101015959 ),
> +                       array( 20061231235959, 540, 20070101085959 ),
> +                       array( 20061231235959,  -5, 20061231235459 ),
> +                       array( 20061231235959, -30, 20061231232959 ),
> +                       array( 20061231235959, -60, 20061231225959 ),
> +               );
> +
> +               foreach( $userAdjust_tests as $data ) {
> +                       $wgLocalTZoffset = $data[1];
> +
> +                       $this->assertEquals(
> +                               strval( $data[2] ),
> +                               strval( $en->userAdjust( $data[0], '' ) ),
> +                               "User adjust {$data[0]} by {$data[1]} minutes 
> should give {$data[2]}"
> +                       );
> +               }
> +       }
> +}
>
>
> Property changes on: trunk/phase3/tests/TimeAdjustTest.php
> ___________________________________________________________________
> Added: svn:eol-style
>   + native
>
> Added: trunk/phase3/tests/TitleTest.php
> ===================================================================
> --- trunk/phase3/tests/TitleTest.php                            (rev 0)
> +++ trunk/phase3/tests/TitleTest.php    2010-02-03 17:35:59 UTC (rev 61938)
> @@ -0,0 +1,17 @@
> +<?php
> +
> +class TitleTest extends PHPUnit_Framework_TestCase {
> +
> +       function testLegalChars() {
> +               $titlechars = Title::legalChars();
> +
> +               foreach ( range( 1, 255 ) as $num ) {
> +                       $chr = chr( $num );
> +                       if ( strpos( "#[]{}<>|", $chr ) !== false || 
> preg_match( "/[\\x00-\\x1f\\x7f]/", $chr ) ) {
> +                               $this->assertFalse( (bool)preg_match( 
> "/[$titlechars]/", $chr ), "chr($num) = $chr is not a valid titlechar" );
> +                       } else {
> +                               $this->assertTrue( (bool)preg_match( 
> "/[$titlechars]/", $chr ), "chr($num) = $chr is a valid titlechar" );
> +                       }
> +               }
> +       }
> +}
>
>
> Property changes on: trunk/phase3/tests/TitleTest.php
> ___________________________________________________________________
> Added: svn:eol-style
>   + native
>
> Added: trunk/phase3/tests/XmlTest.php
> ===================================================================
> --- trunk/phase3/tests/XmlTest.php                              (rev 0)
> +++ trunk/phase3/tests/XmlTest.php      2010-02-03 17:35:59 UTC (rev 61938)
> @@ -0,0 +1,115 @@
> +<?php
> +
> +class XmlTest extends PHPUnit_Framework_TestCase {
> +
> +       function testElementOpen() {
> +               $this->assertEquals(
> +                       '<element>',
> +                       Xml::element( 'element', null, null ),
> +                       'Opening element with no attributes'
> +               );
> +       }
> +
> +       function testElementEmpty() {
> +               $this->assertEquals(
> +                       '<element />',
> +                       Xml::element( 'element', null, '' ),
> +                       'Terminated empty element'
> +               );
> +       }
> +
> +       function testElementEscaping() {
> +               $this->assertEquals(
> +                       '<element>hello &lt;there&gt; you &amp; 
> you</element>',
> +                       Xml::element( 'element', null, 'hello <there> you & 
> you' ),
> +                       'Element with no attributes and content that needs 
> escaping'
> +               );
> +       }
> +
> +       function testElementAttributes() {
> +               $this->assertEquals(
> +                       '<element key="value" <>="&lt;&gt;">',
> +                       Xml::element( 'element', array( 'key' => 'value', 
> '<>' => '<>' ), null ),
> +                       'Element attributes, keys are not escaped'
> +               );
> +       }
> +
> +       function testOpenElement() {
> +               $this->assertEquals(
> +                       '<element k="v">',
> +                       Xml::openElement( 'element', array( 'k' => 'v' ) ),
> +                       'openElement() shortcut'
> +               );
> +       }
> +
> +       function testCloseElement() {
> +               $this->assertEquals( '</element>', Xml::closeElement( 
> 'element' ), 'closeElement() shortcut' );
> +       }
> +
> +       #
> +       # textarea
> +       #
> +       function testTextareaNoContent() {
> +               $this->assertEquals(
> +                       '<textarea name="name" id="name" cols="40" 
> rows="5"></textarea>',
> +                       Xml::textarea( 'name', '' ),
> +                       'textarea() with not content'
> +               );
> +       }
> +
> +       function testTextareaAttribs() {
> +               $this->assertEquals(
> +                       '<textarea name="name" id="name" cols="20" 
> rows="10">&lt;txt&gt;</textarea>',
> +                       Xml::textarea( 'name', '<txt>', 20, 10 ),
> +                       'textarea() with custom attribs'
> +               );
> +       }
> +
> +       #
> +       # JS
> +       #
> +       function testEscapeJsStringSpecialChars() {
> +               $this->assertEquals(
> +                       '\\\\\r\n',
> +                       Xml::escapeJsString( "\\\r\n" ),
> +                       'escapeJsString() with special characters'
> +               );
> +       }
> +
> +       function testEncodeJsVarBoolean() {
> +               $this->assertEquals(
> +                       'true',
> +                       Xml::encodeJsVar( true ),
> +                       'encodeJsVar() with boolean'
> +               );
> +       }
> +
> +       function testEncodeJsVarNull() {
> +               $this->assertEquals(
> +                       'null',
> +                       Xml::encodeJsVar( null ),
> +                       'encodeJsVar() with null'
> +               );
> +       }
> +
> +       function testEncodeJsVarArray() {
> +               $this->assertEquals(
> +                       '["a", 1]',
> +                       Xml::encodeJsVar( array( 'a', 1 ) ),
> +                       'encodeJsVar() with array'
> +               );
> +               $this->assertEquals(
> +                       '{"a": "a", "b": 1}',
> +                       Xml::encodeJsVar( array( 'a' => 'a', 'b' => 1 ) ),
> +                       'encodeJsVar() with associative array'
> +               );
> +       }
> +
> +       function testEncodeJsVarObject() {
> +               $this->assertEquals(
> +                       '{"a": "a", "b": 1}',
> +                       Xml::encodeJsVar( (object)array( 'a' => 'a', 'b' => 1 
> ) ),
> +                       'encodeJsVar() with object'
> +               );
> +       }
> +}
>
>
> Property changes on: trunk/phase3/tests/XmlTest.php
> ___________________________________________________________________
> Added: svn:eol-style
>   + native
>
>
>
> _______________________________________________
> MediaWiki-CVS mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs
>
_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to