mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 12:20:22 +00:00
Move PHPUnit tests into a tests/phpunit directory.
wp-tests-config.php can/should reside in the root of a develop checkout. `phpunit` should be run from the root. see #25088. git-svn-id: https://develop.svn.wordpress.org/trunk@25165 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @group file
|
||||
*/
|
||||
class Tests_File extends WP_UnitTestCase {
|
||||
|
||||
function setUp() {
|
||||
parent::setUp();
|
||||
$this->dir = dirname(tempnam('/tmp', 'foo'));
|
||||
|
||||
$this->badchars = '"\'[]*&?$';
|
||||
}
|
||||
|
||||
/**
|
||||
* @group plugins
|
||||
* @group themes
|
||||
*/
|
||||
function test_get_file_data() {
|
||||
$theme_headers = array(
|
||||
'Name' => 'Theme Name',
|
||||
'ThemeURI' => 'Theme URI',
|
||||
'Description' => 'Description',
|
||||
'Version' => 'Version',
|
||||
'Author' => 'Author',
|
||||
'AuthorURI' => 'Author URI',
|
||||
);
|
||||
|
||||
$actual = get_file_data( DIR_TESTDATA . '/themedir1/default/style.css', $theme_headers );
|
||||
|
||||
$expected = array(
|
||||
'Name' => 'WordPress Default',
|
||||
'ThemeURI' => 'http://wordpress.org/',
|
||||
'Description' => 'The default WordPress theme based on the famous <a href="http://binarybonsai.com/kubrick/">Kubrick</a>.',
|
||||
'Version' => '1.6',
|
||||
'Author' => 'Michael Heilemann',
|
||||
'AuthorURI' => 'http://binarybonsai.com/',
|
||||
);
|
||||
|
||||
foreach ( $actual as $header => $value )
|
||||
$this->assertEquals( $expected[ $header ], $value, $header );
|
||||
}
|
||||
|
||||
/**
|
||||
* @group plugins
|
||||
* @group themes
|
||||
*/
|
||||
function test_get_file_data_cr_line_endings() {
|
||||
$headers = array( 'SomeHeader' => 'Some Header', 'Description' => 'Description', 'Author' => 'Author' );
|
||||
$actual = get_file_data( DIR_TESTDATA . '/formatting/cr-line-endings-file-header.php', $headers );
|
||||
$expected = array(
|
||||
'SomeHeader' => 'Some header value!',
|
||||
'Description' => 'This file is using CR line endings for a testcase.',
|
||||
'Author' => 'A Very Old Mac',
|
||||
);
|
||||
|
||||
foreach ( $actual as $header => $value )
|
||||
$this->assertEquals( $expected[ $header ], $value, $header );
|
||||
}
|
||||
|
||||
function is_unique_writable_file($path, $filename) {
|
||||
$fullpath = $path . DIRECTORY_SEPARATOR . $filename;
|
||||
|
||||
$fp = fopen( $fullpath, 'x' );
|
||||
// file already exists?
|
||||
if (!$fp)
|
||||
return false;
|
||||
|
||||
// write some random contents
|
||||
$c = rand_str();
|
||||
fwrite($fp, $c);
|
||||
fclose($fp);
|
||||
|
||||
if ( file_get_contents($fullpath) === $c )
|
||||
$result = true;
|
||||
else
|
||||
$result = false;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function test_unique_filename_is_valid() {
|
||||
// make sure it produces a valid, writable, unique filename
|
||||
$filename = wp_unique_filename( $this->dir, rand_str() . '.txt' );
|
||||
|
||||
$this->assertTrue( $this->is_unique_writable_file($this->dir, $filename) );
|
||||
|
||||
unlink($this->dir . DIRECTORY_SEPARATOR . $filename);
|
||||
}
|
||||
|
||||
function test_unique_filename_is_unique() {
|
||||
// make sure it produces two unique filenames
|
||||
$name = rand_str();
|
||||
|
||||
$filename1 = wp_unique_filename( $this->dir, $name . '.txt' );
|
||||
$this->assertTrue( $this->is_unique_writable_file($this->dir, $filename1) );
|
||||
$filename2 = wp_unique_filename( $this->dir, $name . '.txt' );
|
||||
$this->assertTrue( $this->is_unique_writable_file($this->dir, $filename2) );
|
||||
|
||||
// the two should be different
|
||||
$this->assertNotEquals( $filename1, $filename2 );
|
||||
|
||||
unlink($this->dir . DIRECTORY_SEPARATOR . $filename1);
|
||||
unlink($this->dir . DIRECTORY_SEPARATOR . $filename2);
|
||||
}
|
||||
|
||||
function test_unique_filename_is_sanitized() {
|
||||
$name = rand_str();
|
||||
$filename = wp_unique_filename( $this->dir, $name . $this->badchars . '.txt' );
|
||||
|
||||
// make sure the bad characters were all stripped out
|
||||
$this->assertEquals( $name . '.txt', $filename );
|
||||
|
||||
$this->assertTrue( $this->is_unique_writable_file($this->dir, $filename) );
|
||||
|
||||
unlink($this->dir . DIRECTORY_SEPARATOR . $filename);
|
||||
}
|
||||
|
||||
function test_unique_filename_with_slashes() {
|
||||
$name = rand_str();
|
||||
// "foo/foo.txt"
|
||||
$filename = wp_unique_filename( $this->dir, $name . '/' . $name . '.txt' );
|
||||
|
||||
// the slash should be removed, i.e. "foofoo.txt"
|
||||
$this->assertEquals( $name . $name . '.txt', $filename );
|
||||
|
||||
$this->assertTrue( $this->is_unique_writable_file($this->dir, $filename) );
|
||||
|
||||
unlink($this->dir . DIRECTORY_SEPARATOR . $filename);
|
||||
}
|
||||
|
||||
function test_unique_filename_multiple_ext() {
|
||||
$name = rand_str();
|
||||
$filename = wp_unique_filename( $this->dir, $name . '.php.txt' );
|
||||
|
||||
// "foo.php.txt" becomes "foo.php_.txt"
|
||||
$this->assertEquals( $name . '.php_.txt', $filename );
|
||||
|
||||
$this->assertTrue( $this->is_unique_writable_file($this->dir, $filename) );
|
||||
|
||||
unlink($this->dir . DIRECTORY_SEPARATOR . $filename);
|
||||
}
|
||||
|
||||
function test_unique_filename_no_ext() {
|
||||
$name = rand_str();
|
||||
$filename = wp_unique_filename( $this->dir, $name );
|
||||
|
||||
$this->assertEquals( $name, $filename );
|
||||
|
||||
$this->assertTrue( $this->is_unique_writable_file($this->dir, $filename) );
|
||||
|
||||
unlink($this->dir . DIRECTORY_SEPARATOR . $filename);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user