diff --git a/.travis.yml b/.travis.yml index e4bc51a..852dc1e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,32 @@ language: php -before_script: - - sudo apt-get update - - sudo apt-get install -y ffmpeg libavcodec-extra-53 - - composer self-update - - composer install --no-interaction --prefer-source --dev +branches: + only: + - master php: - - 5.3.3 - 5.3 - 5.4 - 5.5 - 5.6 + - 7.0 + - hhvm + +matrix: + allow_failures: + - php: hhvm + include: + - php: 5.3 + env: COMPOSER_FLAGS="--prefer-lowest" + +before_install: + - sudo apt-get update + - composer self-update + - if [ "$COMPOSER_FLAGS" == "--prefer-lowest" ]; then composer require "roave/security-advisories" dev-master --no-update; fi; + +install: + - sudo apt-get install -y ffmpeg libavcodec-extra-53 + - composer update --prefer-source $COMPOSER_FLAGS script: - vendor/bin/phpunit --verbose - - vendor/bin/phpunit --verbose -c phpunit-functional.xml.dist diff --git a/composer.json b/composer.json index 8fa6a0e..6527383 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ } ], "require": { - "php": ">=5.3.3", + "php": "^5.3.9 || ^7.0", "alchemy/binary-driver": "^1.5", "doctrine/cache": "^1.0", "evenement/evenement": "^2.0 || ^1.0", @@ -34,13 +34,18 @@ "require-dev": { "sami/sami": "~1.0", "silex/silex": "~1.0", - "phpunit/phpunit": "~3.7" + "phpunit/phpunit": "^4.8" }, "autoload": { "psr-0": { "FFMpeg": "src" } }, + "autoload-dev": { + "psr-4": { + "Tests\\FFMpeg\\": "tests" + } + }, "extra": { "branch-alias": { "dev-master": "0.6-dev" diff --git a/phpunit-functional.xml.dist b/phpunit-functional.xml.dist deleted file mode 100644 index 3f0f738..0000000 --- a/phpunit-functional.xml.dist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - tests/FFMpeg/Functional - - - - - vendor - tests - - - - - diff --git a/phpunit.xml.dist b/phpunit.xml.dist index f36c568..3027d1f 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -12,16 +12,19 @@ bootstrap="tests/bootstrap.php" > - - tests/FFMpeg/Tests + + tests/Unit + + + tests/Functional + vendor tests - diff --git a/tests/FFMpeg/Functional/FFProbeTest.php b/tests/Functional/FFProbeTest.php similarity index 90% rename from tests/FFMpeg/Functional/FFProbeTest.php rename to tests/Functional/FFProbeTest.php index 5f7bb03..10a98c0 100644 --- a/tests/FFMpeg/Functional/FFProbeTest.php +++ b/tests/Functional/FFProbeTest.php @@ -1,6 +1,6 @@ assertGreaterThan(0, count($ffprobe->streams(__DIR__ . '/../../files/Audio.mp3'))); + $this->assertGreaterThan(0, count($ffprobe->streams(__DIR__ . '/../files/Audio.mp3'))); } /** diff --git a/tests/FFMpeg/Functional/FunctionalTestCase.php b/tests/Functional/FunctionalTestCase.php similarity index 87% rename from tests/FFMpeg/Functional/FunctionalTestCase.php rename to tests/Functional/FunctionalTestCase.php index 25e6461..02556ea 100644 --- a/tests/FFMpeg/Functional/FunctionalTestCase.php +++ b/tests/Functional/FunctionalTestCase.php @@ -1,6 +1,6 @@ getFFMpeg(); - $video = $ffmpeg->open(__DIR__ . '/../../files/Test.ogv'); + $video = $ffmpeg->open(__DIR__ . '/../files/Test.ogv'); $this->assertInstanceOf('FFMpeg\Media\Video', $video); @@ -46,13 +46,13 @@ class VideoTranscodeTest extends FunctionalTestCase public function testTranscodeInvalidFile() { $ffmpeg = $this->getFFMpeg(); - $ffmpeg->open(__DIR__ . '/../../files/UnknownFileTest.ogv'); + $ffmpeg->open(__DIR__ . '/../files/UnknownFileTest.ogv'); } public function testSaveInvalidForgedVideo() { $ffmpeg = $this->getFFMpeg(); - $video = new Video(__DIR__ . '/../../files/UnknownFileTest.ogv', $ffmpeg->getFFMpegDriver(), $ffmpeg->getFFProbe()); + $video = new Video(__DIR__ . '/../files/UnknownFileTest.ogv', $ffmpeg->getFFMpegDriver(), $ffmpeg->getFFProbe()); $this->setExpectedException('FFMpeg\Exception\RuntimeException'); $video->save(new X264('libvo_aacenc'), __DIR__ . '/output/output-x264.mp4'); @@ -72,7 +72,7 @@ class VideoTranscodeTest extends FunctionalTestCase } $ffmpeg = $this->getFFMpeg(); - $video = $ffmpeg->open(__DIR__ . '/../../files/portrait.MOV'); + $video = $ffmpeg->open(__DIR__ . '/../files/portrait.MOV'); $video->filters() ->resize(new Dimension(320, 240), ResizeFilter::RESIZEMODE_INSET) diff --git a/tests/FFMpeg/Functional/output/.placeholder b/tests/Functional/output/.placeholder similarity index 100% rename from tests/FFMpeg/Functional/output/.placeholder rename to tests/Functional/output/.placeholder diff --git a/tests/FFMpeg/Tests/Coordinate/AspectRatioTest.php b/tests/Unit/Coordinate/AspectRatioTest.php similarity index 97% rename from tests/FFMpeg/Tests/Coordinate/AspectRatioTest.php rename to tests/Unit/Coordinate/AspectRatioTest.php index 49e703c..100b6b7 100644 --- a/tests/FFMpeg/Tests/Coordinate/AspectRatioTest.php +++ b/tests/Unit/Coordinate/AspectRatioTest.php @@ -1,9 +1,9 @@ getMock('FFMpeg\Format\VideoInterface'); - $filter = new WatermarkFilter(__DIR__ . '/../../../../files/watermark.png'); - $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../../files/watermark.png [watermark]; [in][watermark] overlay=0:0 [out]'), $filter->apply($video, $format)); + $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png'); + $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=0:0 [out]'), $filter->apply($video, $format)); // check size of video is unchanged $this->assertEquals(320, $stream->get('width')); @@ -33,31 +33,31 @@ class WatermarkFilterTest extends TestCase $format = $this->getMock('FFMpeg\Format\VideoInterface'); // test position absolute - $filter = new WatermarkFilter(__DIR__ . '/../../../../files/watermark.png', array( + $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array( 'position' => 'absolute', 'x' => 10, 'y' => 5 )); - $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../../files/watermark.png [watermark]; [in][watermark] overlay=10:5 [out]'), $filter->apply($video, $format)); + $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=10:5 [out]'), $filter->apply($video, $format)); // test position relative - $filter = new WatermarkFilter(__DIR__ . '/../../../../files/watermark.png', array( + $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array( 'position' => 'relative', 'bottom' => 10, 'left' => 5 )); - $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../../files/watermark.png [watermark]; [in][watermark] overlay=5:main_h - 10 - overlay_h [out]'), $filter->apply($video, $format)); + $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=5:main_h - 10 - overlay_h [out]'), $filter->apply($video, $format)); // test position relative - $filter = new WatermarkFilter(__DIR__ . '/../../../../files/watermark.png', array( + $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array( 'position' => 'relative', 'bottom' => 5, 'right' => 4 )); - $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../../files/watermark.png [watermark]; [in][watermark] overlay=main_w - 4 - overlay_w:main_h - 5 - overlay_h [out]'), $filter->apply($video, $format)); + $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=main_w - 4 - overlay_w:main_h - 5 - overlay_h [out]'), $filter->apply($video, $format)); // test position relative - $filter = new WatermarkFilter(__DIR__ . '/../../../../files/watermark.png', array( + $filter = new WatermarkFilter(__DIR__ . '/../../../files/watermark.png', array( 'position' => 'relative', 'left' => 5, 'top' => 11 )); - $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../../files/watermark.png [watermark]; [in][watermark] overlay=5:11 [out]'), $filter->apply($video, $format)); + $this->assertEquals(array('-vf', 'movie='.__DIR__ .'/../../../files/watermark.png [watermark]; [in][watermark] overlay=5:11 [out]'), $filter->apply($video, $format)); } } diff --git a/tests/FFMpeg/Tests/Format/Audio/AacTest.php b/tests/Unit/Format/Audio/AacTest.php similarity index 77% rename from tests/FFMpeg/Tests/Format/Audio/AacTest.php rename to tests/Unit/Format/Audio/AacTest.php index 5e98e77..7c316b5 100644 --- a/tests/FFMpeg/Tests/Format/Audio/AacTest.php +++ b/tests/Unit/Format/Audio/AacTest.php @@ -1,6 +1,6 @@ getMock('Alchemy\BinaryDriver\Listeners\ListenerInterface')); - $progressableFormat = $this->getMockBuilder('FFMpeg\Tests\Media\AudioProg') + $progressableFormat = $this->getMockBuilder('Tests\FFMpeg\Unit\Media\AudioProg') ->disableOriginalConstructor()->getMock(); $progressableFormat->expects($this->any()) ->method('getExtraParams') diff --git a/tests/FFMpeg/Tests/Media/FrameTest.php b/tests/Unit/Media/FrameTest.php similarity index 98% rename from tests/FFMpeg/Tests/Media/FrameTest.php rename to tests/Unit/Media/FrameTest.php index 8f9af04..43f70c3 100644 --- a/tests/FFMpeg/Tests/Media/FrameTest.php +++ b/tests/Unit/Media/FrameTest.php @@ -1,6 +1,6 @@ getMock('Alchemy\BinaryDriver\Listeners\ListenerInterface')); - $progressableFormat = $this->getMockBuilder('FFMpeg\Tests\Media\Prog') + $progressableFormat = $this->getMockBuilder('Tests\FFMpeg\Unit\Media\Prog') ->disableOriginalConstructor()->getMock(); $progressableFormat->expects($this->any()) ->method('getExtraParams') @@ -353,7 +353,7 @@ class VideoTest extends AbstractStreamableTestCase ->method('getPasses') ->will($this->returnValue(2)); - $progressableAudioFormat = $this->getMockBuilder('FFMpeg\Tests\Media\AudioProg') + $progressableAudioFormat = $this->getMockBuilder('Tests\FFMpeg\Unit\Media\AudioProg') ->disableOriginalConstructor()->getMock(); $progressableAudioFormat->expects($this->any()) ->method('getExtraParams') diff --git a/tests/FFMpeg/Tests/TestCase.php b/tests/Unit/TestCase.php similarity index 99% rename from tests/FFMpeg/Tests/TestCase.php rename to tests/Unit/TestCase.php index 4757f95..5481599 100644 --- a/tests/FFMpeg/Tests/TestCase.php +++ b/tests/Unit/TestCase.php @@ -1,6 +1,6 @@ add('FFMpeg\Tests', __DIR__); -$loader->add('FFMpeg\Functional', __DIR__); +$file = __DIR__ . '/../vendor/autoload.php'; +if (!file_exists($file)) { + throw new RuntimeException('Install dependencies to run test suite.'); +} + +$autoload = require_once $file;