/var/www/hkosl.com/imusiccircle/webadmin/libraies/phpseclib/phpseclib/tests/PhpseclibTestCase.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
/**
 * @author    Andreas Fischer <bantu@phpbb.com>
 * @copyright 2013 Andreas Fischer
 * @license   http://www.opensource.org/licenses/mit-license.html  MIT License
 */

abstract class PhpseclibTestCase extends PHPUnit_Framework_TestCase
{
    protected 
$tempFilesToUnlinkOnTearDown = array();

    public function 
tearDown()
    {
        foreach (
$this->tempFilesToUnlinkOnTearDown as $filename) {
            if (!
file_exists($filename) || unlink($filename)) {
                unset(
$this->tempFilesToUnlinkOnTearDown[$filename]);
            }
        }
        
parent::tearDown();
    }

    
/**
    * Creates a temporary file on the local filesystem and returns its path.
    * The $number_of_writes and $bytes_per_write parameters can be used to
    * write $number_of_writes * $bytes_per_write times the character 'a' to the
    * temporary file. All files created using this method will be deleted from
    * the filesystem on tearDown(), i.e. after each test method was run.
    *
    * @param int $number_of_writes
    * @param int $bytes_per_write
    *
    * @return string
    */
    
protected function createTempFile($number_of_writes 0$bytes_per_write 0)
    {
        
$filename tempnam(sys_get_temp_dir(), 'phpseclib-test-');
        
$this->assertTrue(file_exists($filename));
        
$this->tempFilesToUnlinkOnTearDown[] = $filename;
        if (
$number_of_writes && $bytes_per_write 0) {
            
$fp fopen($filename'wb');
            for (
$i 0$i $number_of_writes; ++$i) {
                
fwrite($fpstr_repeat('a'$bytes_per_write));
            }
            
fclose($fp);
            
$this->assertSame($number_of_writes $bytes_per_writefilesize($filename));
        }
        return 
$filename;
    }

    
/**
    * @param string $constant
    * @param mixed $expected
    *
    * @return null
    */
    
static protected function ensureConstant($constant$expected)
    {
        if (
defined($constant)) {
            
$value constant($constant);

            if (
$value !== $expected) {
                if (
function_exists('runkit_constant_redefine')) {
                    if (!
runkit_constant_redefine($constant$expected)) {
                        
self::markTestSkipped(sprintf(
                            
"Failed to redefine constant %s to %s",
                            
$constant,
                            
$expected
                        
));
                    }
                } else {
                    
self::markTestSkipped(sprintf(
                        
"Skipping test because constant %s is %s instead of %s",
                        
$constant,
                        
$value,
                        
$expected
                    
));
                }
            }
        } else {
            
define($constant$expected);
        }
    }

    
/**
    * @param string $filename
    *
    * @return null
    */
    
static protected function reRequireFile($filename)
    {
        if (
function_exists('runkit_import')) {
            
$result runkit_import(
                
$filename,
                
RUNKIT_IMPORT_FUNCTIONS |
                
RUNKIT_IMPORT_CLASS_METHODS |
                
RUNKIT_IMPORT_OVERRIDE
            
);

            if (!
$result) {
                
self::markTestSkipped("Failed to reimport file $filename");
            }
        }
    }
}