Merge branch 'master' into travis-code-style-short-diff
This commit is contained in:
commit
addb16da9a
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,3 +6,4 @@
|
||||
/vendor
|
||||
/composer.lock
|
||||
/.php_cs.cache
|
||||
/.phpunit.result.cache
|
||||
|
@ -5,16 +5,16 @@ language: php
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 7.1
|
||||
env: WITH_CS=true
|
||||
- php: 7.1
|
||||
env: WITH_PHPUNIT=true WITH_COVERAGE=true
|
||||
- php: 7.2
|
||||
env: WITH_PHPUNIT=true
|
||||
- php: 7.3
|
||||
env: WITH_PHPUNIT=true
|
||||
- php: 7.3
|
||||
env: WITH_PHPUNIT=true WITH_COVERAGE=true
|
||||
- php: 7.4
|
||||
env: WITH_PHPUNIT=true
|
||||
- php: 8.0
|
||||
env: WITH_PHPUNIT=true
|
||||
|
||||
|
||||
cache:
|
||||
|
@ -20,7 +20,7 @@ Full documentation can be found at [https://opensource.box.com/spout/](https://o
|
||||
|
||||
## Requirements
|
||||
|
||||
* PHP version 7.1 or higher
|
||||
* PHP version 7.2 or higher
|
||||
* PHP extension `php_zip` enabled
|
||||
* PHP extension `php_xmlreader` enabled
|
||||
|
||||
|
@ -11,7 +11,7 @@ With the 3.0 version, this is now possible: each cell can have its own style.
|
||||
|
||||
Spout 3.0 tries to enforce better typing. For instance, instead of using/returning generic arrays, Spout now makes use of specific `Row` and `Cell` objects that can encapsulate more data such as type, style, value.
|
||||
|
||||
Finally, **_Spout 3.0 only supports PHP 7.1 and above_**, as other PHP versions are no longer supported by the community.
|
||||
Finally, **_Spout 3.2 only supports PHP 7.2 and above_**, as other PHP versions are no longer supported by the community.
|
||||
|
||||
Reader changes
|
||||
--------------
|
||||
|
@ -12,12 +12,12 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.1.0",
|
||||
"php": ">=7.2.0",
|
||||
"ext-zip": "*",
|
||||
"ext-xmlreader" : "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7",
|
||||
"phpunit/phpunit": "^8",
|
||||
"friendsofphp/php-cs-fixer": "^2"
|
||||
},
|
||||
"suggest": {
|
||||
@ -36,7 +36,7 @@
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.1"
|
||||
"php": "7.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ This guide will help you install {{ site.spout_html }} and teach you how to use
|
||||
|
||||
## Requirements
|
||||
|
||||
* PHP version 7.1 or higher
|
||||
* PHP version 7.2 or higher
|
||||
* PHP extension `ext-zip` enabled
|
||||
* PHP extension `ext-xmlreader` enabled
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.5/phpunit.xsd"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.5/phpunit.xsd"
|
||||
bootstrap="tests/bootstrap.php"
|
||||
colors="true"
|
||||
convertErrorsToExceptions="false"
|
||||
|
@ -28,13 +28,13 @@ class SheetIterator implements IteratorInterface
|
||||
const XML_ATTRIBUTE_TABLE_STYLE_NAME = 'table:style-name';
|
||||
const XML_ATTRIBUTE_TABLE_DISPLAY = 'table:display';
|
||||
|
||||
/** @var string $filePath Path of the file to be read */
|
||||
/** @var string Path of the file to be read */
|
||||
protected $filePath;
|
||||
|
||||
/** @var \Box\Spout\Common\Manager\OptionsManagerInterface Reader's options manager */
|
||||
protected $optionsManager;
|
||||
|
||||
/** @var InternalEntityFactory $entityFactory Factory to create entities */
|
||||
/** @var InternalEntityFactory Factory to create entities */
|
||||
protected $entityFactory;
|
||||
|
||||
/** @var XMLReader The XMLReader object that will help read sheet's XML data */
|
||||
|
@ -43,7 +43,7 @@ class SharedStringsManager
|
||||
/** @var InternalEntityFactory Factory to create entities */
|
||||
protected $entityFactory;
|
||||
|
||||
/** @var HelperFactory $helperFactory Factory to create helpers */
|
||||
/** @var HelperFactory Factory to create helpers */
|
||||
protected $helperFactory;
|
||||
|
||||
/** @var CachingStrategyFactory Factory to create shared strings caching strategies */
|
||||
|
@ -35,7 +35,7 @@ class RowIterator implements IteratorInterface
|
||||
/** @var string Path of the XLSX file being read */
|
||||
protected $filePath;
|
||||
|
||||
/** @var string $sheetDataXMLFilePath Path of the sheet data XML file as in [Content_Types].xml */
|
||||
/** @var string Path of the sheet data XML file as in [Content_Types].xml */
|
||||
protected $sheetDataXMLFilePath;
|
||||
|
||||
/** @var \Box\Spout\Reader\Wrapper\XMLReader The XMLReader object that will help read sheet's XML data */
|
||||
|
@ -44,7 +44,7 @@ abstract class WorkbookManagerAbstract implements WorkbookManagerInterface
|
||||
/** @var InternalEntityFactory Factory to create entities */
|
||||
protected $entityFactory;
|
||||
|
||||
/** @var ManagerFactoryInterface $managerFactory Factory to create managers */
|
||||
/** @var ManagerFactoryInterface Factory to create managers */
|
||||
protected $managerFactory;
|
||||
|
||||
/** @var Worksheet The worksheet where data will be written to */
|
||||
|
@ -22,7 +22,7 @@ class ManagerFactory implements ManagerFactoryInterface
|
||||
/** @var InternalEntityFactory */
|
||||
protected $entityFactory;
|
||||
|
||||
/** @var HelperFactory $helperFactory */
|
||||
/** @var HelperFactory */
|
||||
protected $helperFactory;
|
||||
|
||||
/**
|
||||
|
@ -197,7 +197,8 @@ class WorksheetManager implements WorksheetManagerInterface
|
||||
|
||||
$data .= '</table:table-cell>';
|
||||
} elseif ($cell->isBoolean()) {
|
||||
$data .= ' office:value-type="boolean" calcext:value-type="boolean" office:boolean-value="' . $cell->getValue() . '">';
|
||||
$value = $cell->getValue() ? 'true' : 'false'; // boolean-value spec: http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#datatype-boolean
|
||||
$data .= ' office:value-type="boolean" calcext:value-type="boolean" office:boolean-value="' . $value . '">';
|
||||
$data .= '<text:p>' . $cell->getValue() . '</text:p>';
|
||||
$data .= '</table:table-cell>';
|
||||
} elseif ($cell->isNumeric()) {
|
||||
|
@ -33,7 +33,7 @@ abstract class WriterAbstract implements WriterInterface
|
||||
/** @var GlobalFunctionsHelper Helper to work with global functions */
|
||||
protected $globalFunctionsHelper;
|
||||
|
||||
/** @var HelperFactory $helperFactory */
|
||||
/** @var HelperFactory */
|
||||
protected $helperFactory;
|
||||
|
||||
/** @var OptionsManagerInterface Writer options manager */
|
||||
|
@ -24,7 +24,7 @@ class ManagerFactory implements ManagerFactoryInterface
|
||||
/** @var InternalEntityFactory */
|
||||
protected $entityFactory;
|
||||
|
||||
/** @var HelperFactory $helperFactory */
|
||||
/** @var HelperFactory */
|
||||
protected $helperFactory;
|
||||
|
||||
/**
|
||||
|
@ -122,6 +122,6 @@ class RowTest extends \PHPUnit\Framework\TestCase
|
||||
->setStyle($this->getStyleMock())
|
||||
->setCells([]);
|
||||
|
||||
$this->assertInternalType('object', $row);
|
||||
$this->assertInstanceOf(Row::class, $row);
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ class FileSystemHelperTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
public function setUp() : void
|
||||
{
|
||||
$baseFolder = \sys_get_temp_dir();
|
||||
$this->fileSystemHelper = new FileSystemHelper($baseFolder);
|
||||
|
@ -14,7 +14,7 @@ class OptionsManagerTest extends TestCase
|
||||
*/
|
||||
protected $optionsManager;
|
||||
|
||||
protected function setUp()
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->optionsManager = new class() extends OptionsManagerAbstract {
|
||||
protected function getSupportedOptions()
|
||||
|
@ -14,10 +14,10 @@ class SpoutTestStream
|
||||
const PATH_TO_CSV_RESOURCES = 'tests/resources/csv/';
|
||||
const CSV_EXTENSION = '.csv';
|
||||
|
||||
/** @var int $position */
|
||||
/** @var int */
|
||||
private $position;
|
||||
|
||||
/** @var resource $fileHandle */
|
||||
/** @var resource */
|
||||
private $fileHandle;
|
||||
|
||||
/**
|
||||
|
@ -295,6 +295,10 @@ class ReaderTest extends TestCase
|
||||
*/
|
||||
public function testReadShouldBeProtectedAgainstBillionLaughsAttack()
|
||||
{
|
||||
if (function_exists('xdebug_code_coverage_started') && xdebug_code_coverage_started()) {
|
||||
$this->markTestSkipped('test not compatible with code coverage');
|
||||
}
|
||||
|
||||
$startTime = microtime(true);
|
||||
$fileName = 'attack_billion_laughs.ods';
|
||||
|
||||
@ -318,6 +322,10 @@ class ReaderTest extends TestCase
|
||||
*/
|
||||
public function testReadShouldBeProtectedAgainstQuadraticBlowupAttack()
|
||||
{
|
||||
if (function_exists('xdebug_code_coverage_started') && xdebug_code_coverage_started()) {
|
||||
$this->markTestSkipped('test not compatible with code coverage');
|
||||
}
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
$fileName = 'attack_quadratic_blowup.ods';
|
||||
|
@ -25,7 +25,7 @@ class SharedStringsManagerTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->sharedStringsManager = null;
|
||||
}
|
||||
@ -33,7 +33,7 @@ class SharedStringsManagerTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function tearDown()
|
||||
public function tearDown(): void
|
||||
{
|
||||
if ($this->sharedStringsManager !== null) {
|
||||
$this->sharedStringsManager->cleanup();
|
||||
|
@ -539,6 +539,10 @@ class ReaderTest extends TestCase
|
||||
*/
|
||||
public function testReadShouldBeProtectedAgainstQuadraticBlowupAttack()
|
||||
{
|
||||
if (function_exists('xdebug_code_coverage_started') && xdebug_code_coverage_started()) {
|
||||
$this->markTestSkipped('test not compatible with code coverage');
|
||||
}
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
$this->getAllRowsForFile('attack_quadratic_blowup.xlsx');
|
||||
|
@ -101,7 +101,7 @@ class WriterTest extends TestCase
|
||||
]);
|
||||
$writtenContent = $this->writeToCsvFileAndReturnWrittenContent($allRows, 'csv_with_utf8_bom.csv');
|
||||
|
||||
$this->assertContains(EncodingHelper::BOM_UTF8, $writtenContent, 'The CSV file should contain a UTF-8 BOM');
|
||||
$this->assertStringStartsWith(EncodingHelper::BOM_UTF8, $writtenContent, 'The CSV file should contain a UTF-8 BOM');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,7 +114,7 @@ class WriterTest extends TestCase
|
||||
]);
|
||||
$writtenContent = $this->writeToCsvFileAndReturnWrittenContent($allRows, 'csv_no_bom.csv', ',', '"', false);
|
||||
|
||||
$this->assertNotContains(EncodingHelper::BOM_UTF8, $writtenContent, 'The CSV file should not contain a UTF-8 BOM');
|
||||
$this->assertStringNotContainsString(EncodingHelper::BOM_UTF8, $writtenContent, 'The CSV file should not contain a UTF-8 BOM');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -18,7 +18,7 @@ class SheetTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->sheetManager = new SheetManager(new StringHelper());
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ class StyleMergerTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->styleMerger = new StyleMerger();
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ class StyleRegistryTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->defaultStyle = (new StyleBuilder())->build();
|
||||
$this->styleRegistry = new StyleRegistry($this->defaultStyle);
|
||||
|
@ -89,7 +89,7 @@ class SheetTest extends TestCase
|
||||
$pathToContentFile = $resourcePath . '#content.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToContentFile);
|
||||
|
||||
$this->assertContains(' table:display="false"', $xmlContents, 'The sheet visibility should have been changed to "hidden"');
|
||||
$this->assertStringContainsString(' table:display="false"', $xmlContents, 'The sheet visibility should have been changed to "hidden"');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -164,6 +164,6 @@ class SheetTest extends TestCase
|
||||
$pathToWorkbookFile = $resourcePath . '#content.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToWorkbookFile);
|
||||
|
||||
$this->assertContains("table:name=\"$expectedName\"", $xmlContents, $message);
|
||||
$this->assertStringContainsString("table:name=\"$expectedName\"", $xmlContents, $message);
|
||||
}
|
||||
}
|
||||
|
@ -547,7 +547,7 @@ class WriterTest extends TestCase
|
||||
$pathToContentFile = $resourcePath . '#content.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToContentFile);
|
||||
|
||||
$this->assertContains($value, $xmlContents, $message);
|
||||
$this->assertStringContainsString($value, $xmlContents, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -562,7 +562,7 @@ class WriterTest extends TestCase
|
||||
$sheetXmlAsString = $this->getSheetXmlNodeAsString($fileName, $sheetIndex);
|
||||
$valueAsXmlString = "<text:p>$value</text:p>";
|
||||
|
||||
$this->assertContains($valueAsXmlString, $sheetXmlAsString, $message);
|
||||
$this->assertStringContainsString($valueAsXmlString, $sheetXmlAsString, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -577,7 +577,7 @@ class WriterTest extends TestCase
|
||||
$sheetXmlAsString = $this->getSheetXmlNodeAsString($fileName, $sheetIndex);
|
||||
$valueAsXmlString = "<text:p>$value</text:p>";
|
||||
|
||||
$this->assertNotContains($valueAsXmlString, $sheetXmlAsString, $message);
|
||||
$this->assertStringNotContainsString($valueAsXmlString, $sheetXmlAsString, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -30,7 +30,7 @@ class WriterWithStyleTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->defaultStyle = (new StyleBuilder())->build();
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ class SheetTest extends TestCase
|
||||
$pathToWorkbookFile = $resourcePath . '#xl/workbook.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToWorkbookFile);
|
||||
|
||||
$this->assertContains(' state="hidden"', $xmlContents, 'The sheet visibility should have been changed to "hidden"');
|
||||
$this->assertStringContainsString(' state="hidden"', $xmlContents, 'The sheet visibility should have been changed to "hidden"');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -166,6 +166,6 @@ class SheetTest extends TestCase
|
||||
$pathToWorkbookFile = $resourcePath . '#xl/workbook.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToWorkbookFile);
|
||||
|
||||
$this->assertContains("<sheet name=\"$expectedName\"", $xmlContents, $message);
|
||||
$this->assertStringContainsString("<sheet name=\"$expectedName\"", $xmlContents, $message);
|
||||
}
|
||||
}
|
||||
|
@ -608,7 +608,7 @@ class WriterTest extends TestCase
|
||||
$pathToSheetFile = $resourcePath . '#xl/worksheets/sheet' . $sheetIndex . '.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToSheetFile);
|
||||
|
||||
$this->assertContains((string) $inlineData, $xmlContents, $message);
|
||||
$this->assertStringContainsString((string) $inlineData, $xmlContents, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -624,7 +624,7 @@ class WriterTest extends TestCase
|
||||
$pathToSheetFile = $resourcePath . '#xl/worksheets/sheet' . $sheetIndex . '.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToSheetFile);
|
||||
|
||||
$this->assertNotContains((string) $inlineData, $xmlContents, $message);
|
||||
$this->assertStringNotContainsString((string) $inlineData, $xmlContents, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -639,6 +639,6 @@ class WriterTest extends TestCase
|
||||
$pathToSharedStringsFile = $resourcePath . '#xl/sharedStrings.xml';
|
||||
$xmlContents = file_get_contents('zip://' . $pathToSharedStringsFile);
|
||||
|
||||
$this->assertContains($sharedString, $xmlContents, $message);
|
||||
$this->assertStringContainsString($sharedString, $xmlContents, $message);
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ class WriterWithStyleTest extends TestCase
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->defaultStyle = (new StyleBuilder())->build();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user