diff --git a/tests/Composer/Test/Downloader/XzDownloaderTest.php b/tests/Composer/Test/Downloader/XzDownloaderTest.php new file mode 100644 index 000000000..02e6701a0 --- /dev/null +++ b/tests/Composer/Test/Downloader/XzDownloaderTest.php @@ -0,0 +1,57 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Test\Downloader; + +use Composer\Downloader\XzDownloader; + +class XzDownloaderTest extends \PHPUnit_Framework_TestCase +{ + public function setUp() + { + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + $this->markTestSkipped('Skip test on Windows'); + } + } + + public function testErrorMessages() + { + $packageMock = $this->getMock('Composer\Package\PackageInterface'); + $packageMock->expects($this->any()) + ->method('getDistUrl') + ->will($this->returnValue($distUrl = 'file://'.__FILE__)) + ; + $packageMock->expects($this->any()) + ->method('getDistUrls') + ->will($this->returnValue(array($distUrl))) + ; + $packageMock->expects($this->atLeastOnce()) + ->method('getTransportOptions') + ->will($this->returnValue(array())) + ; + + $io = $this->getMock('Composer\IO\IOInterface'); + $config = $this->getMock('Composer\Config'); + $config->expects($this->any()) + ->method('get') + ->with('vendor-dir') + ->will($this->returnValue(sys_get_temp_dir().'/composer-xz-test-vendor')); + $downloader = new XzDownloader($io, $config); + + try { + $downloader->download($packageMock, sys_get_temp_dir().'/composer-xz-test'); + $this->fail('Download of invalid tarball should throw an exception'); + } catch (\RuntimeException $e) { + $this->assertContains('File format not recognized', $e->getMessage()); + } + } +}