/** * Sets the global assets version * * @param CommandEvent $event A instance */ public static function setAssetsVersion(CommandEvent $event) { $options = self::getOptions($event); $parametersFile = self::getParametersFile($options); if (is_file($parametersFile) && is_writable($parametersFile)) { $values = self::loadParametersFile($parametersFile); $parametersKey = self::getParametersKey($options); $assetsVersionHandler = new AssetsVersionHandler($event->getIO()); if (isset($values[$parametersKey]) && $assetsVersionHandler->setAssetsVersion($values[$parametersKey], $options)) { self::saveParametersFile($parametersFile, $values); } } else { $event->getIO()->write(sprintf('<comment>Cannot set assets version because "%s" file does not exist or not writable</comment>', $parametersFile)); } }
/** * @dataProvider setAssetsVersionProvider */ public function testSetAssetsVersion(array $parameters, array $options, array $expectedParameters, $isAssetsVersionChanged, $isAssetsVersionStrategyChanged) { $io = $this->getMock('Composer\\IO\\IOInterface'); $writeIndex = 0; if ($isAssetsVersionChanged) { $io->expects($this->at($writeIndex))->method('write')->with('<info>Updating the "assets_version" parameter</info>'); $writeIndex++; } if ($isAssetsVersionStrategyChanged) { $io->expects($this->at($writeIndex))->method('write')->with('<info>Initializing the "assets_version_strategy" parameter</info>'); } $handler = new AssetsVersionHandler($io); $result = $handler->setAssetsVersion($parameters, $options); $expectedResult = $isAssetsVersionChanged || $isAssetsVersionStrategyChanged; // set expected assets_version for the time_hash strategy // we cannot set it in the data provider because this value depends on the current time if (isset($expectedParameters['assets_version_strategy']) && 'time_hash' === $expectedParameters['assets_version_strategy'] && isset($parameters['assets_version']) && 8 === strlen($parameters['assets_version'])) { $expectedParameters['assets_version'] = $parameters['assets_version']; } $this->assertEquals($expectedResult, $result); $this->assertEquals($expectedParameters, $parameters); }