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;