home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 June / ENTER.ISO / files / xampp-win32-1.4.5-installer.exe / xampp / PEAR_PackageFileManager_TestCase_setOptions.php < prev    next >
Encoding:
PHP Script  |  2004-03-24  |  12.0 KB  |  274 lines

  1. <?php
  2.  
  3. /**
  4.  * API Unit tests for PEAR_PackageFileManager package.
  5.  * 
  6.  * @version    $Id: PEAR_PackageFileManager_TestCase_setOptions.php,v 1.3 2003/10/16 04:04:27 cellog Exp $
  7.  * @author     Laurent Laville <pear@laurent-laville.org> portions from HTML_CSS
  8.  * @author     Greg Beaver
  9.  * @package    PEAR_PackageFileManager
  10.  */
  11.  
  12. /**
  13.  * @package PEAR_PackageFileManager
  14.  */
  15.  
  16. class PEAR_PackageFileManager_TestCase_setOptions extends PHPUnit_TestCase
  17. {
  18.     /**
  19.      * A PEAR_PackageFileManager object
  20.      * @var        object
  21.      */
  22.     var $packagexml;
  23.  
  24.     function PEAR_PackageFileManager_TestCase_setOptions($name)
  25.     {
  26.         $this->PHPUnit_TestCase($name);
  27.     }
  28.  
  29.     function setUp()
  30.     {
  31.         error_reporting(E_ALL);
  32.         $this->errorOccured = false;
  33.         set_error_handler(array(&$this, 'errorHandler'));
  34.  
  35.         $this->packagexml = new PEAR_PackageFileManager;
  36.         PEAR::pushErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'PEARerrorHandler'));
  37.         $this->errorThrown = false;
  38.         $this->_expectedMessage = 'NO ERROR TRIGGERED';
  39.         $this->_expectedCode = -1;
  40.         $this->_testMethod = 'unknown';
  41.     }
  42.  
  43.     function tearDown()
  44.     {
  45.         unset($this->packagexml);
  46.         PEAR::popErrorHandling();
  47.     }
  48.  
  49.     function errorCodeToString($code)
  50.     {
  51.         $codes = array_flip(array(
  52.             'OOPS' => -1,
  53.             'PEAR_PACKAGEFILEMANAGER_NOSTATE' => PEAR_PACKAGEFILEMANAGER_NOSTATE,
  54.             'PEAR_PACKAGEFILEMANAGER_NOVERSION' => PEAR_PACKAGEFILEMANAGER_NOVERSION,
  55.             'PEAR_PACKAGEFILEMANAGER_NOPKGDIR' => PEAR_PACKAGEFILEMANAGER_NOPKGDIR,
  56.             'PEAR_PACKAGEFILEMANAGER_NOBASEDIR' => PEAR_PACKAGEFILEMANAGER_NOBASEDIR,
  57.             'PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND' => PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND,
  58.             'PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND_ANYWHERE' => PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND_ANYWHERE,
  59.             'PEAR_PACKAGEFILEMANAGER_CANTWRITE_PKGFILE' => PEAR_PACKAGEFILEMANAGER_CANTWRITE_PKGFILE,
  60.             'PEAR_PACKAGEFILEMANAGER_DEST_UNWRITABLE' => PEAR_PACKAGEFILEMANAGER_DEST_UNWRITABLE,
  61.             'PEAR_PACKAGEFILEMANAGER_CANTCOPY_PKGFILE' => PEAR_PACKAGEFILEMANAGER_CANTCOPY_PKGFILE,
  62.             'PEAR_PACKAGEFILEMANAGER_CANTOPEN_TMPPKGFILE' => PEAR_PACKAGEFILEMANAGER_CANTOPEN_TMPPKGFILE,
  63.             'PEAR_PACKAGEFILEMANAGER_PATH_DOESNT_EXIST' => PEAR_PACKAGEFILEMANAGER_PATH_DOESNT_EXIST,
  64.             'PEAR_PACKAGEFILEMANAGER_NOCVSENTRIES' => PEAR_PACKAGEFILEMANAGER_NOCVSENTRIES,
  65.             'PEAR_PACKAGEFILEMANAGER_DIR_DOESNT_EXIST' => PEAR_PACKAGEFILEMANAGER_DIR_DOESNT_EXIST,
  66.             'PEAR_PACKAGEFILEMANAGER_RUN_SETOPTIONS' => PEAR_PACKAGEFILEMANAGER_RUN_SETOPTIONS,
  67.             'PEAR_PACKAGEFILEMANAGER_NOPACKAGE' => PEAR_PACKAGEFILEMANAGER_NOPACKAGE,
  68.             'PEAR_PACKAGEFILEMANAGER_WRONG_MROLE' => PEAR_PACKAGEFILEMANAGER_WRONG_MROLE,
  69.             'PEAR_PACKAGEFILEMANAGER_NOSUMMARY' => PEAR_PACKAGEFILEMANAGER_NOSUMMARY,
  70.             'PEAR_PACKAGEFILEMANAGER_NODESC' => PEAR_PACKAGEFILEMANAGER_NODESC,
  71.             'PEAR_PACKAGEFILEMANAGER_ADD_MAINTAINERS' => PEAR_PACKAGEFILEMANAGER_ADD_MAINTAINERS,
  72.             'PEAR_PACKAGEFILEMANAGER_NO_FILES' => PEAR_PACKAGEFILEMANAGER_NO_FILES,
  73.             'PEAR_PACKAGEFILEMANAGER_IGNORED_EVERYTHING' => PEAR_PACKAGEFILEMANAGER_IGNORED_EVERYTHING,
  74.             'PEAR_PACKAGEFILEMANAGER_INVALID_PACKAGE' => PEAR_PACKAGEFILEMANAGER_INVALID_PACKAGE,
  75.             'PEAR_PACKAGEFILEMANAGER_INVALID_REPLACETYPE' => PEAR_PACKAGEFILEMANAGER_INVALID_REPLACETYPE,
  76.             'PEAR_PACKAGEFILEMANAGER_INVALID_ROLE' => PEAR_PACKAGEFILEMANAGER_INVALID_ROLE,
  77.             'PEAR_PACKAGEFILEMANAGER_PHP_NOT_PACKAGE' => PEAR_PACKAGEFILEMANAGER_PHP_NOT_PACKAGE
  78.         ));
  79.         return $codes[$code];
  80.     }
  81.  
  82.     function _stripWhitespace($str)
  83.     {
  84.         return preg_replace('/\\s+/', '', $str);
  85.     }
  86.  
  87.     function _methodExists($name) 
  88.     {
  89.         if (in_array(strtolower($name), get_class_methods($this->packagexml))) {
  90.             return true;
  91.         }
  92.         $this->assertTrue(false, 'method '. $name . ' not implemented in ' . get_class($this->packagexml));
  93.         return false;
  94.     }
  95.  
  96.     function errorHandler($errno, $errstr, $errfile, $errline) {
  97.         //die("$errstr in $errfile at line $errline: $errstr");
  98.         $this->errorOccured = true;
  99.         $this->assertTrue(false, "$errstr at line $errline, $errfile");
  100.     }
  101.  
  102.     function PEARerrorHandler($error) {
  103.         $this->assertEquals($this->_expectedCode, $error->getCode(),
  104.             $this->_testMethod . ' ' . $this->errorCodeToString($this->_expectedCode)
  105.             . ' actual: ' . $this->errorCodeToString($error->getCode()));
  106.         $this->assertEquals($this->_expectedMessage, $error->getMessage(), $this->_testMethod);
  107.         $this->errorThrown = 'true';
  108.     }
  109.     
  110.     function expectPEARError($method, $msg, $code = null)
  111.     {
  112.         $this->_expectedMessage = $msg;
  113.         $this->_expectedCode = $code;
  114.         $this->_testMethod = $method;
  115.     }
  116.     
  117.     function test_invalid_nostate()
  118.     {
  119.         if (!$this->_methodExists('setOptions')) {
  120.             return;
  121.         }
  122.         $this->expectPEARError('invalid nostate',
  123.             'PEAR_PackageFileManager Error: Release State (option \'state\') ' .
  124.             'must by specified in PEAR_PackageFileManager setOptions (alpha|' .
  125.             'beta|stable)', PEAR_PACKAGEFILEMANAGER_NOSTATE);
  126.         $this->packagexml->setOptions(array());
  127.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  128.     }
  129.     
  130.     function test_invalid_noversion()
  131.     {
  132.         if (!$this->_methodExists('setOptions')) {
  133.             return;
  134.         }
  135.         $this->expectPEARError('invalid noversion',
  136.             'PEAR_PackageFileManager Error: Release Version (option \'version\')' .
  137.             ' must be specified in PEAR_PackageFileManager setOptions', PEAR_PACKAGEFILEMANAGER_NOVERSION);
  138.         $this->packagexml->setOptions(array('state' => 'alpha'));
  139.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  140.     }
  141.     
  142.     function test_invalid_nopackagedir()
  143.     {
  144.         if (!$this->_methodExists('setOptions')) {
  145.             return;
  146.         }
  147.         $this->expectPEARError('invalid nopackagedir',
  148.             'PEAR_PackageFileManager Error: Package source base directory (option \'packagedirectory\') must be ' .
  149.             'specified in PEAR_PackageFileManager setOptions', PEAR_PACKAGEFILEMANAGER_NOPKGDIR);
  150.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0'));
  151.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  152.     }
  153.     
  154.     function test_invalid_nobaseinstalldir()
  155.     {
  156.         if (!$this->_methodExists('setOptions')) {
  157.             return;
  158.         }
  159.         $this->expectPEARError('invalid nobaseinstalldir',
  160.             'PEAR_PackageFileManager Error: Package install base directory (option \'baseinstalldir\') must be ' .
  161.             'specified in PEAR_PackageFileManager setOptions', PEAR_PACKAGEFILEMANAGER_NOBASEDIR);
  162.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  163.             'packagedirectory' => dirname(__FILE__)));
  164.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  165.     }
  166.     
  167.     function test_invalid_badfilelistgenerator1()
  168.     {
  169.         if (!$this->_methodExists('setOptions')) {
  170.             return;
  171.         }
  172.         $this->expectPEARError('invalid badfilelistgenerator1',
  173.             'PEAR_PackageFileManager Error: Base class "PEAR_PackageFileManager_Gronk"' .
  174.             ' can\'t be located', PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND);
  175.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  176.             'packagedirectory' => dirname(__FILE__), 'baseinstalldir' => 'Foo',
  177.             'packagefile' => 'test1_package.xml',
  178.             'filelistgenerator' => 'Gronk'));
  179.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  180.     }
  181.     
  182.     function test_invalid_badfilelistgenerator2()
  183.     {
  184.         if (!$this->_methodExists('setOptions')) {
  185.             return;
  186.         }
  187.         $this->expectPEARError('invalid badfilelistgenerator2',
  188.             'PEAR_PackageFileManager Error: Base class "PEAR_PackageFileManager_Gronk"' .
  189.             ' can\'t be located in default or user-specified directories',
  190.             PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND_ANYWHERE);
  191.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  192.             'packagedirectory' => dirname(__FILE__), 'baseinstalldir' => 'Foo',
  193.             'packagefile' => 'test1_package.xml',
  194.             'filelistgenerator' => 'Gronk',
  195.             'usergeneratordir' => '\\onk'));
  196.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  197.     }
  198.     
  199.     function test_invalid_badfilelistgenerator3()
  200.     {
  201.         if (!$this->_methodExists('setOptions')) {
  202.             return;
  203.         }
  204.         $this->expectPEARError('invalid badfilelistgenerator3',
  205.             'PEAR_PackageFileManager Error: Base class "PEAR_PackageFileManager_Gronk"' .
  206.             ' can\'t be located in default or user-specified directories',
  207.             PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND_ANYWHERE);
  208.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  209.             'packagedirectory' => dirname(__FILE__), 'baseinstalldir' => 'Foo',
  210.             'packagefile' => 'test1_package.xml',
  211.             'filelistgenerator' => 'Gronk',
  212.             'usergeneratordir' => dirname(__FILE__)));
  213.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  214.     }
  215.     
  216.     function test_valid_filelistgeneratorfile()
  217.     {
  218.         if (!$this->_methodExists('setOptions')) {
  219.             return;
  220.         }
  221.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  222.             'packagedirectory' => dirname(__FILE__), 'baseinstalldir' => 'Foo',
  223.             'packagefile' => 'test1_package.xml',
  224.             'filelistgenerator' => 'File'));
  225.         $this->assertFalse($this->errorThrown, 'error thrown');
  226.     }
  227.     
  228.     function test_valid_filelistgeneratorcvs()
  229.     {
  230.         if (!$this->_methodExists('setOptions')) {
  231.             return;
  232.         }
  233.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  234.             'packagedirectory' => dirname(__FILE__), 'baseinstalldir' => 'Foo',
  235.             'packagefile' => 'test1_package.xml',
  236.             'filelistgenerator' => 'CVS'));
  237.         $this->assertFalse($this->errorThrown, 'error thrown');
  238.     }
  239.     
  240.     function test_valid_filelistgeneratorcustom()
  241.     {
  242.         if (!$this->_methodExists('setOptions')) {
  243.             return;
  244.         }
  245.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  246.             'packagedirectory' => dirname(__FILE__), 'baseinstalldir' => 'Foo',
  247.             'packagefile' => 'test1_package.xml',
  248.             'filelistgenerator' => 'Test_file',
  249.             'usergeneratordir' => dirname(__FILE__)
  250.             ));
  251.         $this->assertFalse($this->errorThrown, 'error thrown');
  252.     }
  253.     
  254.     function test_invalid_filelistgeneratorcustom()
  255.     {
  256.         if (!$this->_methodExists('setOptions')) {
  257.             return;
  258.         }
  259.         $this->expectPEARError('invalid badfilelistgenerator3',
  260.             'PEAR_PackageFileManager Error: Base class "PEAR_PackageFileManager_Bad_file"' .
  261.             ' can\'t be located in default or user-specified directories',
  262.             PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND_ANYWHERE);
  263.         $this->packagexml->setOptions(array('state' => 'alpha', 'version' => '1.0',
  264.             'packagedirectory' => dirname(__FILE__), 'baseinstalldir' => 'Foo',
  265.             'packagefile' => 'test1_package.xml',
  266.             'filelistgenerator' => 'Bad_file',
  267.             'usergeneratordir' => dirname(__FILE__)
  268.             ));
  269.         $this->assertEquals('true', $this->errorThrown, 'no error thrown');
  270.     }
  271. }
  272.  
  273. ?>
  274.