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

  1. <?php
  2.  
  3. /**
  4.  * API Unit tests for PEAR_PackageFileManager package.
  5.  * 
  6.  * @version    $Id: PEAR_PackageFileManager_Cvs_TestCase_general.php,v 1.2 2004/02/07 06:42:00 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_CVS_TestCase_general extends PHPUnit_TestCase
  17. {
  18.     /**
  19.      * A PEAR_PackageFileManager object
  20.      * @var        object
  21.      */
  22.     var $packagexml;
  23.  
  24.     function PEAR_PackageFileManager_CVS_TestCase_general($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.         $a = false;
  36.         $this->packagexml = new PEAR_PackageFileManager_Cvs($a, array('lang' => 'en'));
  37.         PEAR::pushErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'PEARerrorHandler'));
  38.         $this->errorThrown = false;
  39.         $this->_expectedMessage = 'NO ERROR TRIGGERED';
  40.         $this->_expectedCode = -1;
  41.         $this->_testMethod = 'unknown';
  42.         $this->_expected = array();
  43.     }
  44.  
  45.     function tearDown()
  46.     {
  47.         unset($this->packagexml);
  48.         PEAR::popErrorHandling();
  49.     }
  50.  
  51.     function errorCodeToString($code)
  52.     {
  53.         $codes = array_flip(array(
  54.             'OOPS' => -1,
  55.             'PEAR_PACKAGEFILEMANAGER_NOSTATE' => PEAR_PACKAGEFILEMANAGER_NOSTATE,
  56.             'PEAR_PACKAGEFILEMANAGER_NOVERSION' => PEAR_PACKAGEFILEMANAGER_NOVERSION,
  57.             'PEAR_PACKAGEFILEMANAGER_NOPKGDIR' => PEAR_PACKAGEFILEMANAGER_NOPKGDIR,
  58.             'PEAR_PACKAGEFILEMANAGER_NOBASEDIR' => PEAR_PACKAGEFILEMANAGER_NOBASEDIR,
  59.             'PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND' => PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND,
  60.             'PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND_ANYWHERE' => PEAR_PACKAGEFILEMANAGER_GENERATOR_NOTFOUND_ANYWHERE,
  61.             'PEAR_PACKAGEFILEMANAGER_CANTWRITE_PKGFILE' => PEAR_PACKAGEFILEMANAGER_CANTWRITE_PKGFILE,
  62.             'PEAR_PACKAGEFILEMANAGER_DEST_UNWRITABLE' => PEAR_PACKAGEFILEMANAGER_DEST_UNWRITABLE,
  63.             'PEAR_PACKAGEFILEMANAGER_CANTCOPY_PKGFILE' => PEAR_PACKAGEFILEMANAGER_CANTCOPY_PKGFILE,
  64.             'PEAR_PACKAGEFILEMANAGER_CANTOPEN_TMPPKGFILE' => PEAR_PACKAGEFILEMANAGER_CANTOPEN_TMPPKGFILE,
  65.             'PEAR_PACKAGEFILEMANAGER_PATH_DOESNT_EXIST' => PEAR_PACKAGEFILEMANAGER_PATH_DOESNT_EXIST,
  66.             'PEAR_PACKAGEFILEMANAGER_NOCVSENTRIES' => PEAR_PACKAGEFILEMANAGER_NOCVSENTRIES,
  67.             'PEAR_PACKAGEFILEMANAGER_DIR_DOESNT_EXIST' => PEAR_PACKAGEFILEMANAGER_DIR_DOESNT_EXIST,
  68.             'PEAR_PACKAGEFILEMANAGER_RUN_SETOPTIONS' => PEAR_PACKAGEFILEMANAGER_RUN_SETOPTIONS,
  69.             'PEAR_PACKAGEFILEMANAGER_NOPACKAGE' => PEAR_PACKAGEFILEMANAGER_NOPACKAGE,
  70.             'PEAR_PACKAGEFILEMANAGER_WRONG_MROLE' => PEAR_PACKAGEFILEMANAGER_WRONG_MROLE,
  71.             'PEAR_PACKAGEFILEMANAGER_NOSUMMARY' => PEAR_PACKAGEFILEMANAGER_NOSUMMARY,
  72.             'PEAR_PACKAGEFILEMANAGER_NODESC' => PEAR_PACKAGEFILEMANAGER_NODESC,
  73.             'PEAR_PACKAGEFILEMANAGER_ADD_MAINTAINERS' => PEAR_PACKAGEFILEMANAGER_ADD_MAINTAINERS,
  74.             'PEAR_PACKAGEFILEMANAGER_NO_FILES' => PEAR_PACKAGEFILEMANAGER_NO_FILES,
  75.             'PEAR_PACKAGEFILEMANAGER_IGNORED_EVERYTHING' => PEAR_PACKAGEFILEMANAGER_IGNORED_EVERYTHING,
  76.             'PEAR_PACKAGEFILEMANAGER_INVALID_PACKAGE' => PEAR_PACKAGEFILEMANAGER_INVALID_PACKAGE,
  77.             'PEAR_PACKAGEFILEMANAGER_INVALID_REPLACETYPE' => PEAR_PACKAGEFILEMANAGER_INVALID_REPLACETYPE,
  78.             'PEAR_PACKAGEFILEMANAGER_INVALID_ROLE' => PEAR_PACKAGEFILEMANAGER_INVALID_ROLE,
  79.             'PEAR_PACKAGEFILEMANAGER_PHP_NOT_PACKAGE' => PEAR_PACKAGEFILEMANAGER_PHP_NOT_PACKAGE
  80.         ));
  81.         return $codes[$code];
  82.     }
  83.  
  84.     function _stripWhitespace($str)
  85.     {
  86.         return preg_replace('/\\s+/', '', $str);
  87.     }
  88.  
  89.     function _methodExists($name) 
  90.     {
  91.         if (in_array(strtolower($name), get_class_methods($this->packagexml))) {
  92.             return true;
  93.         }
  94.         $this->assertTrue(false, 'method '. $name . ' not implemented in ' . get_class($this->packagexml));
  95.         return false;
  96.     }
  97.  
  98.     function errorHandler($errno, $errstr, $errfile, $errline) {
  99.         if (error_reporting() == 0) {
  100.             return;
  101.         }
  102.         //die("$errstr in $errfile at line $errline: $errstr");
  103.         $this->errorOccured = true;
  104.         $this->assertTrue(false, "$errstr at line $errline, $errfile");
  105.     }
  106.  
  107.     function PEARerrorHandler($error) {
  108.         if (count($this->_expected)) {
  109.             $err = array_pop($this->_expected);
  110.             $this->_expectedCode = $err[2];
  111.             $this->_expectedMessage = $err[1];
  112.             $this->_testMethod = $err[0];
  113.         }
  114.         $this->assertEquals($this->_expectedCode, $error->getCode(),
  115.             $this->_testMethod . ' ' . $this->errorCodeToString($this->_expectedCode)
  116.             . ' actual: ' . $this->errorCodeToString($error->getCode()));
  117.         $this->assertEquals($this->_expectedMessage, $error->getMessage(), $this->_testMethod);
  118.         $this->errorThrown = 'true';
  119.     }
  120.     
  121.     function expectPEARError($method, $msg, $code = null)
  122.     {
  123.         $this->_expected[] = array($method, $msg, $code);
  124.     }
  125.     
  126.     function test_valid1()
  127.     {
  128.         if (!$this->_methodExists('dirList')) {
  129.             return;
  130.         }
  131.         if (!$this->_methodExists('_setupIgnore')) {
  132.             return;
  133.         }
  134.         $this->packagexml->_options['addhiddenfiles'] = false;
  135.         $this->packagexml->_options['ignore'] = 
  136.         $this->packagexml->_options['include'] = false;
  137.         $this->packagexml->_options['packagefile'] = 'package.xml';
  138.         mkdir(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS');
  139.         copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'testCVS'
  140.             . DIRECTORY_SEPARATOR . 'testEntries',
  141.             
  142.             dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  143.             DIRECTORY_SEPARATOR . 'Entries');
  144.         copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'testCVS'
  145.             . DIRECTORY_SEPARATOR . 'testEntries.Extra',
  146.             
  147.             dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  148.             DIRECTORY_SEPARATOR . 'Entries.Extra');
  149.         touch(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  150.             DIRECTORY_SEPARATOR . 'unused');
  151.         $res = $this->packagexml->dirList(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest');
  152.         $this->assertEquals(
  153.             array(
  154.                 dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest/test1.txt',
  155.                 dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest/test2.txt',
  156.                 dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest/.test',
  157.             ),
  158.             $res,
  159.             'incorrect dir structure');
  160.         $this->assertFalse($this->errorThrown, 'error thrown');
  161.         unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  162.             DIRECTORY_SEPARATOR . 'Entries');
  163.         unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  164.             DIRECTORY_SEPARATOR . 'Entries.Extra');
  165.         unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  166.             DIRECTORY_SEPARATOR . 'unused');
  167.         rmdir(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS');
  168.     }
  169.     
  170.     function test_valid2()
  171.     {
  172.         if (!$this->_methodExists('dirList')) {
  173.             return;
  174.         }
  175.         if (!$this->_methodExists('_setupIgnore')) {
  176.             return;
  177.         }
  178.         $this->packagexml->_options['addhiddenfiles'] = false;
  179.         $this->packagexml->_options['ignore'] = 
  180.         $this->packagexml->_options['include'] = false;
  181.         $this->packagexml->_options['packagefile'] = 'package.xml';
  182.         mkdir(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS');
  183.         copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'testCVS'
  184.             . DIRECTORY_SEPARATOR . 'testEntries',
  185.             
  186.             dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  187.             DIRECTORY_SEPARATOR . 'Entries');
  188.         $z = fopen(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  189.             DIRECTORY_SEPARATOR . 'Entries', 'a');
  190.         fwrite($z, "\n/unused/1.16/dummy timestamp//");
  191.         fclose($z);
  192.         copy(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'testCVS'
  193.             . DIRECTORY_SEPARATOR . 'testEntries.Extra',
  194.             
  195.             dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  196.             DIRECTORY_SEPARATOR . 'Entries.Extra');
  197.         touch(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  198.             DIRECTORY_SEPARATOR . 'unused');
  199.         $res = $this->packagexml->dirList(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest');
  200.         $this->assertEquals(
  201.             array(
  202.                 dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest/test1.txt',
  203.                 dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest/test2.txt',
  204.                 dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest/.test',
  205.             ),
  206.             $res,
  207.             'incorrect dir structure');
  208.         $this->assertFalse($this->errorThrown, 'error thrown');
  209.         unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  210.             DIRECTORY_SEPARATOR . 'Entries');
  211.         unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  212.             DIRECTORY_SEPARATOR . 'Entries.Extra');
  213.         unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS' .
  214.             DIRECTORY_SEPARATOR . 'unused');
  215.         rmdir(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'footest' . DIRECTORY_SEPARATOR . 'CVS');
  216.     }
  217. }
  218.  
  219. ?>
  220.