1<?php
2/**
3 * Test suite for PHP_CompatInfo
4 *
5 * PHP version 5
6 *
7 * @category PHP
8 * @package  PHP_CompatInfo
9 * @author   Laurent Laville <pear@laurent-laville.org>
10 * @license  http://www.opensource.org/licenses/bsd-license.php  BSD
11 * @version  CVS: $Id: AllTests.php,v 1.4 2008/07/22 20:27:11 farell Exp $
12 * @link     http://pear.php.net/package/PHP_CompatInfo
13 * @since    File available since Release 1.6.0
14 */
15
16if (!defined('PHPUnit_MAIN_METHOD')) {
17    define('PHPUnit_MAIN_METHOD', 'PHP_CompatInfo_AllTests::main');
18}
19
20require_once 'PHPUnit/Framework/TestSuite.php';
21require_once 'PHPUnit/TextUI/TestRunner.php';
22
23chdir(dirname(__FILE__));
24
25require_once 'PEAR/Config.php';
26require_once 'PHP_CompatInfo_TestSuite_Standard.php';
27require_once 'PHP_CompatInfo_TestSuite_Bugs.php';
28
29/**
30 * Class for running all test suites for PHP_CompatInfo package.
31 *
32 * @category PHP
33 * @package  PHP_CompatInfo
34 * @author   Laurent Laville <pear@laurent-laville.org>
35 * @license  http://www.opensource.org/licenses/bsd-license.php  BSD
36 * @version  Release: @package_version@
37 * @link     http://pear.php.net/package/PHP_CompatInfo
38 * @since    File available since Release 1.6.0
39 */
40
41class PHP_CompatInfo_AllTests
42{
43    /**
44     * Runs the test suite.
45     *
46     * @return void
47     */
48    public static function main()
49    {
50        PHPUnit_TextUI_TestRunner::run(self::suite());
51    }
52
53    /**
54     * Adds the PHP_CompatInfo test suite.
55     *
56     * @return object the PHPUnit_Framework_TestSuite object
57     */
58    public static function suite()
59    {
60        $suite = new PHPUnit_Framework_TestSuite('PHP_CompatInfo Test Suite');
61        $suite->addTestSuite('PHP_CompatInfo_TestSuite_Standard');
62        $suite->addTestSuite('PHP_CompatInfo_TestSuite_Bugs');
63
64        if (PHP_CompatInfo_AllTests::packageInstalled('Console_GetArgs', '1.3.3')
65            && PHP_CompatInfo_AllTests::packageInstalled('Console_Table', '1.0.5')) {
66            /* Add CLI test suite, only
67               if packages below are installed on your system :
68               - Console_GetArgs 1.3.3 or better
69               - Console_Table   1.0.5 or better
70             */
71            include_once 'PHP_CompatInfo_TestSuite_Cli.php';
72
73            $suite->addTestSuite('PHP_CompatInfo_TestSuite_Cli');
74        }
75        return $suite;
76    }
77
78    /**
79     * Check if a package is installed
80     *
81     * Simple function to check if a package is installed under user
82     * or system PEAR installation. Minimal version and channel info are supported.
83     *
84     * @param string $name        Package name
85     * @param string $version     (optional) The minimal version
86     *                            that should be installed
87     * @param string $channel     (optional) The package channel distribution
88     * @param string $user_file   (optional) file to read PEAR user-defined
89     *                            options from
90     * @param string $system_file (optional) file to read PEAR system-wide
91     *                            defaults from
92     *
93     * @static
94     * @return bool
95     * @since  PEAR_Info version 1.6.0 (2005-01-03)
96     * @see    PEAR_Info::packageInstalled()
97     */
98    public static function packageInstalled($name, $version = null, $channel = null,
99        $user_file = '', $system_file = '')
100    {
101        $config =& PEAR_Config::singleton($user_file, $system_file);
102        $reg    =& $config->getRegistry();
103
104        if (is_null($version)) {
105            return $reg->packageExists($name, $channel);
106        } else {
107            $info = &$reg->getPackage($name, $channel);
108            if (is_object($info)) {
109                $installed['version'] = $info->getVersion();
110            } else {
111                $installed = $info;
112            }
113            return version_compare($version, $installed['version'], '<=');
114        }
115    }
116}
117
118if (PHPUnit_MAIN_METHOD == 'PHP_CompatInfo_AllTests::main') {
119    PHP_CompatInfo_AllTests::main();
120}
121?>