diff --git a/tests/Spout/Reader/Wrapper/XMLReaderTest.php b/tests/Spout/Reader/Wrapper/XMLReaderTest.php index b16c648..3b22378 100644 --- a/tests/Spout/Reader/Wrapper/XMLReaderTest.php +++ b/tests/Spout/Reader/Wrapper/XMLReaderTest.php @@ -138,11 +138,12 @@ class XMLReaderTest extends \PHPUnit_Framework_TestCase public function dataProviderForTestGetRealPathURIForFileInZip() { $tempFolder = realpath(sys_get_temp_dir()); + $tempFolderName = basename($tempFolder); $expectedRealPathURI = 'zip://' . $tempFolder . '/test.xlsx#test.xml'; return [ [$tempFolder, "$tempFolder/test.xlsx", 'test.xml', $expectedRealPathURI], - [$tempFolder, "/../../../$tempFolder/test.xlsx", 'test.xml', $expectedRealPathURI], + [$tempFolder, "$tempFolder/../$tempFolderName/test.xlsx", 'test.xml', $expectedRealPathURI], ]; } @@ -162,7 +163,11 @@ class XMLReaderTest extends \PHPUnit_Framework_TestCase $xmlReader = new XMLReader(); $realPathURI = \ReflectionHelper::callMethodOnObject($xmlReader, 'getRealPathURIForFileInZip', $zipFilePath, $fileInsideZipPath); - $this->assertEquals($expectedRealPathURI, $realPathURI); + // Normalizing path separators for Windows support + $normalizedRealPathURI = str_replace('\\', '/', $realPathURI); + $normalizedExpectedRealPathURI = str_replace('\\', '/', $expectedRealPathURI); + + $this->assertEquals($normalizedExpectedRealPathURI, $normalizedRealPathURI); unlink($tempFolder . '/test.xlsx'); } diff --git a/tests/Spout/TestUsingResource.php b/tests/Spout/TestUsingResource.php index ec183b9..17c37b5 100644 --- a/tests/Spout/TestUsingResource.php +++ b/tests/Spout/TestUsingResource.php @@ -7,8 +7,8 @@ namespace Box\Spout; * * @package Box\Spout */ -trait TestUsingResource { - +trait TestUsingResource +{ /** @var string Path to the test resources folder */ private $resourcesPath = 'tests/resources'; @@ -70,6 +70,11 @@ trait TestUsingResource { */ protected function createUnwritableFolderIfNeeded() { + // On Windows, chmod() or the mkdir's mode is ignored + if ($this->isWindows()) { + $this->markTestSkipped('Skipping because Windows cannot create read-only folders through PHP'); + } + if (!file_exists($this->generatedUnwritableResourcesPath)) { // Make sure generated folder exists first if (!file_exists($this->generatedResourcesPath)) { @@ -80,4 +85,12 @@ trait TestUsingResource { mkdir($this->generatedUnwritableResourcesPath, 0444, true); } } + + /** + * @return bool Whether the OS on which PHP is installed is Windows + */ + protected function isWindows() + { + return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; + } } diff --git a/tests/Spout/Writer/CSV/WriterTest.php b/tests/Spout/Writer/CSV/WriterTest.php index 77a6638..1a95012 100644 --- a/tests/Spout/Writer/CSV/WriterTest.php +++ b/tests/Spout/Writer/CSV/WriterTest.php @@ -22,7 +22,7 @@ class WriterTest extends \PHPUnit_Framework_TestCase public function testWriteShouldThrowExceptionIfCannotOpenFileForWriting() { $fileName = 'file_that_wont_be_written.csv'; - $this->createUnwritableFolderIfNeeded($fileName); + $this->createUnwritableFolderIfNeeded(); $filePath = $this->getGeneratedUnwritableResourcePath($fileName); $writer = WriterFactory::create(Type::CSV);