forked from EasyEngine/easyengine
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-file-cache.php
More file actions
84 lines (66 loc) · 2.66 KB
/
test-file-cache.php
File metadata and controls
84 lines (66 loc) · 2.66 KB
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
<?php
use EE\FileCache;
use EE\Utils;
require_once dirname( __DIR__ ) . '/php/class-ee.php';
class FileCacheTest extends PHPUnit_Framework_TestCase {
/**
* Test get_root() deals with backslashed directory.
*/
public function testGetRoot() {
$max_size = 32;
$ttl = 60;
$cache_dir = Utils\get_temp_dir() . uniqid( 'ee-test-file-cache', true );
$cache = new FileCache( $cache_dir, $ttl, $max_size );
$this->assertSame( $cache_dir . '/', $cache->get_root() );
unset( $cache );
$cache = new FileCache( $cache_dir . '/', $ttl, $max_size );
$this->assertSame( $cache_dir . '/', $cache->get_root() );
unset( $cache );
$cache = new FileCache( $cache_dir . '\\', $ttl, $max_size );
$this->assertSame( $cache_dir . '/', $cache->get_root() );
unset( $cache );
rmdir( $cache_dir );
}
public function test_ensure_dir_exists() {
$class_ee_logger = new ReflectionProperty( 'EE', 'logger' );
$class_ee_logger->setAccessible( true );
$prev_logger = $class_ee_logger->getValue();
$logger = new EE\Loggers\Execution;
EE::set_logger( $logger );
$max_size = 32;
$ttl = 60;
$cache_dir = Utils\get_temp_dir() . uniqid( 'ee-test-file-cache', true );
$cache = new FileCache( $cache_dir, $ttl, $max_size );
$test_class = new ReflectionClass( $cache );
$method = $test_class->getMethod( 'ensure_dir_exists' );
$method->setAccessible( true );
// Cache directory should be created.
$result = $method->invokeArgs( $cache, array( $cache_dir . '/test1' ) );
$this->assertTrue( $result );
$this->assertTrue( is_dir( $cache_dir . '/test1' ) );
// Try to create the same directory again. it should return true.
$result = $method->invokeArgs( $cache, array( $cache_dir . '/test1' ) );
$this->assertTrue( $result );
// `chmod()` doesn't work on Windows.
if ( ! Utils\is_windows() ) {
// It should be failed because permission denied.
$logger->stderr = '';
chmod( $cache_dir . '/test1', 0000 );
$result = $method->invokeArgs( $cache, array( $cache_dir . '/test1/error' ) );
$expected = "/^Warning: Failed to create directory '.+': mkdir\(\): Permission denied\.$/";
$this->assertRegexp( $expected, $logger->stderr );
}
// It should be failed because file exists.
$logger->stderr = '';
file_put_contents( $cache_dir . '/test2', '' );
$result = $method->invokeArgs( $cache, array( $cache_dir . '/test2' ) );
$expected = "/^Warning: Failed to create directory '.+': mkdir\(\): File exists\.$/";
$this->assertRegexp( $expected, $logger->stderr );
// Restore
chmod( $cache_dir . '/test1', 0755 );
rmdir( $cache_dir . '/test1' );
unlink( $cache_dir . '/test2' );
rmdir( $cache_dir );
$class_ee_logger->setValue( $prev_logger );
}
}