Skip to content

Commit b8b0bf1

Browse files
committed
Merge branch 'ACP2E-2214' of https://github.com/magento-l3/magento2ce into PR-L3-08112023
2 parents 11b3612 + 491e34e commit b8b0bf1

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

app/code/Magento/Backend/Block/Widget/Grid/Extended.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,6 +1022,7 @@ public function getCsvFile()
10221022
$stream = $this->_directory->openFile($file, 'w+');
10231023

10241024
$stream->lock();
1025+
$stream->write(pack('CCC', 0xef, 0xbb, 0xbf));
10251026
$stream->writeCsv($this->_getExportHeaders());
10261027
$this->_exportIterateCollection('_exportCsvItem', [$stream]);
10271028

dev/tests/integration/testsuite/Magento/Backend/Block/Widget/Grid/ExtendedTest.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77

88
use Laminas\Stdlib\Parameters;
99
use Magento\Backend\Block\Template\Context;
10+
use Magento\Framework\App\Filesystem\DirectoryList;
1011
use Magento\Framework\Data\Collection;
12+
use Magento\Framework\Filesystem;
1113
use Magento\Framework\View\LayoutInterface;
1214
use Magento\TestFramework\Helper\Bootstrap;
1315
use PHPUnit\Framework\TestCase;
@@ -34,7 +36,7 @@ protected function setUp(): void
3436
{
3537
parent::setUp();
3638

37-
$this->_layoutMock = Bootstrap::getObjectManager()->get(
39+
$this->_layoutMock = Bootstrap::getObjectManager()->create(
3840
LayoutInterface::class
3941
);
4042
$context = Bootstrap::getObjectManager()->create(
@@ -122,4 +124,21 @@ public function testExtendedTemplateMarkup(): void
122124
$html = str_replace(["\n", " "], '', $html);
123125
$this->assertStringEndsWith("</table></div>", $html);
124126
}
127+
128+
public function testGetCsvFileStartsWithBOM(): void
129+
{
130+
$collection = Bootstrap::getObjectManager()->create(Collection::class);
131+
$this->_block->setCollection($collection);
132+
$data = $this->_block->getCsvFile();
133+
134+
$filesystem = Bootstrap::getObjectManager()->get(Filesystem::class);
135+
$directory = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
136+
self::assertTrue($directory->isFile($data['value']));
137+
self::assertStringStartsWith(
138+
pack('CCC', 0xef, 0xbb, 0xbf),
139+
$directory->readFile($data['value'])
140+
);
141+
142+
$directory->delete($data['value']);
143+
}
125144
}

dev/tests/integration/testsuite/Magento/OfflineShipping/Controller/Adminhtml/System/Config/ImportExportTableratesTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ private function getTablerateCsv(): string
125125
$exportCsv = $gridBlock->setWebsiteId($this->websiteId)->setConditionName('package_weight')->getCsvFile();
126126
$exportCsvContent = $varDirectory->openFile($exportCsv['value'], 'r')->readAll();
127127

128+
$bom = pack('CCC', 0xef, 0xbb, 0xbf);
129+
if (substr($exportCsvContent, 0, 3) === $bom) {
130+
$exportCsvContent = substr($exportCsvContent, 3);
131+
}
132+
128133
return $exportCsvContent;
129134
}
130135
}

0 commit comments

Comments
 (0)