Skip to content

Commit

Permalink
Merge pull request #11 from ahawtho/master
Browse files Browse the repository at this point in the history
Adds ability to specify relative mapping by using a null or empty str…
  • Loading branch information
jwentworth committed Mar 15, 2021
2 parents bb48792 + bc86650 commit a099f4c
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/Assetic/SourceMapFilter.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,11 @@ protected function doFilterDump(CHAssetBag $assetBag, string $tmpOutput, array $
{
$assetCollectionTargetPath = $assetBag->getAssetCollectionTargetPath();
$targetPathForSourceMap = $assetCollectionTargetPath . '.map';
$sourceMapURL = "{$this->siteUrl}/$targetPathForSourceMap";
if ($this->siteUrl === null || $this->siteUrl === '') {
$sourceMapURL = pathinfo($targetPathForSourceMap, PATHINFO_BASENAME);
} else {
$sourceMapURL = "{$this->siteUrl}/$targetPathForSourceMap";
}

$cmd = "{$this->uglifyBin} {$this->uglifyOpts} --source-map \"content=auto,root='{$this->sourceMapRoot}',includeSources,url='$sourceMapURL',filename='$assetCollectionTargetPath'\" -o $tmpOutput " . implode(' ', $inputs);

Expand Down
62 changes: 62 additions & 0 deletions tests/SourceMapFilterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,68 @@ public function testSourceMapFilterSimple()
$this->assertEquals($this->loadSourceMap('tests/simple/expected.js.map'), $sourceMap);
}

public function testSourceMapFilterSimpleRelativeMapPathEmpty()
{
$asseticWriteTo = sys_get_temp_dir();
$worker = new FlattenWorker([
[
'match' => '/\.js$/',
'class' => SourceMapFilter::class,
'args' => [[
'site_url' => '', // empty siteURL
'assetic_write_to' => $asseticWriteTo,
'source_map_source_path_trim' => dirname(__DIR__)
]]
]
]);

$factory = $this->createMock(AssetFactory::class);

$collection = new AssetCollection();
$collection->setTargetPath('asset.js');
$collection->add($this->makeStringAsset(__DIR__ . '/relative', 'asset1.js'));
$collection->add($this->makeStringAsset(__DIR__ . '/relative', 'asset2.js'));
$collection->add($this->makeStringAsset(__DIR__ . '/relative', 'asset3.js'));
$collection->add($this->makeStringAsset('/../..', 'climb-above-root.js'));
$collection = $worker->process($collection, $factory);

$this->assertEquals(file_get_contents('tests/relative/expected.js'), $collection->dump());

$sourceMap = $this->loadSourceMap("$asseticWriteTo/asset.js.map");
$this->assertEquals($this->loadSourceMap('tests/relative/expected.js.map'), $sourceMap);
}

public function testSourceMapFilterSimpleRelativeMapPathNull()
{
$asseticWriteTo = sys_get_temp_dir();
$worker = new FlattenWorker([
[
'match' => '/\.js$/',
'class' => SourceMapFilter::class,
'args' => [[
'site_url' => null, // empty siteURL
'assetic_write_to' => $asseticWriteTo,
'source_map_source_path_trim' => dirname(__DIR__)
]]
]
]);

$factory = $this->createMock(AssetFactory::class);

$collection = new AssetCollection();
$collection->setTargetPath('asset.js');
$collection->add($this->makeStringAsset(__DIR__ . '/relative', 'asset1.js'));
$collection->add($this->makeStringAsset(__DIR__ . '/relative', 'asset2.js'));
$collection->add($this->makeStringAsset(__DIR__ . '/relative', 'asset3.js'));
$collection->add($this->makeStringAsset('/../..', 'climb-above-root.js'));
$collection = $worker->process($collection, $factory);

$this->assertEquals(file_get_contents('tests/relative/expected.js'), $collection->dump());

$sourceMap = $this->loadSourceMap("$asseticWriteTo/asset.js.map");
$this->assertEquals($this->loadSourceMap('tests/relative/expected.js.map'), $sourceMap);
}

public function testSourceMapFilterComplex()
{
$asseticWriteTo = sys_get_temp_dir();
Expand Down
2 changes: 2 additions & 0 deletions tests/relative/expected.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions tests/relative/expected.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit a099f4c

Please sign in to comment.