Skip to content
This repository has been archived by the owner on Nov 26, 2017. It is now read-only.

Commit

Permalink
Fixing #1220. This should also resolve the old JoomlaCode tracker item:
Browse files Browse the repository at this point in the history
  • Loading branch information
LouisLandry committed May 27, 2012
1 parent 7983df6 commit 9b9462c
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 81 deletions.
7 changes: 6 additions & 1 deletion libraries/joomla/filesystem/path.php
Expand Up @@ -200,9 +200,14 @@ public static function clean($path, $ds = DIRECTORY_SEPARATOR)
{
$path = JPATH_ROOT;
}
// Remove double slashes and backslashes and convert all slashes and backslashes to DIRECTORY_SEPARATOR
// If dealing with a UNC path don't forget to prepend the path with a backslash.
elseif (($ds == '\\') && ($path[0] == '\\' ) && ( $path[1] == '\\' ))
{
$path = "\\" . preg_replace('#[/\\\\]+#', $ds, $path);
}
else
{
// Remove double slashes and backslashes and convert all slashes and backslashes to DIRECTORY_SEPARATOR
$path = preg_replace('#[/\\\\]+#', $ds, $path);
}

Expand Down
162 changes: 82 additions & 80 deletions tests/suites/unit/joomla/filesystem/JPathTest.php
@@ -1,110 +1,112 @@
<?php
/**
* @package Joomla.UnitTest
* @subpackage Filesystem
*
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/

include_once JPATH_PLATFORM . '/joomla/filesystem/path.php';
JLoader::register('JPath', JPATH_PLATFORM . '/joomla/filesystem/path.php');

/**
* Test class for JPath.
* Generated by PHPUnit on 2011-10-26 at 19:32:34.
* Tests for the JPath class.
*
* @package Joomla.UnitTest
* @subpackage Filesystem
* @since 12.2
*/
class JPathTest extends PHPUnit_Framework_TestCase {

/**
* @var JPath
*/
protected $object;

/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp() {
$this->object = new JPath;
}
class JPathTest extends TestCase
{
/**
* Data provider for testClean() method.
*
* @return array
*
* @since 12.2
*/
public function getCleanData()
{
return array(
// Input Path, Directory Separator, Expected Output
'Nothing to do.' => array('/var/www/foo/bar/baz', '/', '/var/www/foo/bar/baz'),
'One backslash.' => array('/var/www/foo\\bar/baz', '/', '/var/www/foo/bar/baz'),
'Two and one backslashes.' => array('/var/www\\\\foo\\bar/baz', '/', '/var/www/foo/bar/baz'),
'Mixed backslashes and double forward slashes.' => array('/var\\/www//foo\\bar/baz', '/', '/var/www/foo/bar/baz'),
'UNC path.' => array('\\\\www\\docroot', '\\', '\\\\www\\docroot'),
'UNC path with forward slash.' => array('\\\\www/docroot', '\\', '\\\\www\\docroot'),
'UNC path with UNIX directory separator.' => array('\\\\www/docroot', '/', '/www/docroot'),
);
}

/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown() {

}

/**
/**
* @todo Implement testCanChmod().
*/
public function testCanChmod() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
public function testCanChmod()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}

/**
/**
* @todo Implement testSetPermissions().
*/
public function testSetPermissions() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
public function testSetPermissions()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}

/**
/**
* @todo Implement testGetPermissions().
*/
public function testGetPermissions() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
public function testGetPermissions()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}

/**
/**
* @todo Implement testCheck().
*/
public function testCheck() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
public function testCheck()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}

/**
* @todo Implement testClean().
*/
public function testClean() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* Tests the clean method.
*
* @return void
*
* @covers JPath::clean
* @dataProvider getCleanData
* @since 12.2
*/
public function testClean($input, $ds, $expected)
{
$this->assertEquals(
$expected,
JPath::clean($input, $ds)
);
}

/**
/**
* @todo Implement testIsOwner().
*/
public function testIsOwner() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
public function testIsOwner()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}

/**
/**
* @todo Implement testFind().
*/
public function testFind() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}

public function testFind()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}
}

?>

0 comments on commit 9b9462c

Please sign in to comment.