Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-03-10 08:55:39 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-03-10 08:55:39 +0300
commitd27158aae9bc48b2a07760a2dbe8e642fcecbe57 (patch)
tree7ecfe898e53f07e589ee4be0ea5b297153d7dfcf /tests
parentf3161bd2abe4bcc41f0e9169275be315ecc6b054 (diff)
parent8a76f8dac3475b1d24956e0d384d65295f15c76a (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'tests')
-rw-r--r--tests/python/CMakeLists.txt12
-rwxr-xr-xtests/python/ffmpeg_tests.py86
-rwxr-xr-xtests/python/modules/test_utils.py12
3 files changed, 106 insertions, 4 deletions
diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt
index 20b65889c2b..568f66eb270 100644
--- a/tests/python/CMakeLists.txt
+++ b/tests/python/CMakeLists.txt
@@ -27,6 +27,7 @@
set(USE_EXPERIMENTAL_TESTS FALSE)
set(TEST_SRC_DIR ${CMAKE_SOURCE_DIR}/../lib/tests)
+set(TEST_DATA_SRC_DIR ${CMAKE_SOURCE_DIR}/../lib/tests_data)
set(TEST_OUT_DIR ${CMAKE_BINARY_DIR}/tests)
# ugh, any better way to do this on testing only?
@@ -617,5 +618,14 @@ if(WITH_ALEMBIC)
)
endif()
-add_subdirectory(view_layer)
+if(WITH_CODEC_FFMPEG)
+ add_python_test(
+ ffmpeg_tests
+ ${CMAKE_CURRENT_LIST_DIR}/ffmpeg_tests.py
+ --blender "$<TARGET_FILE:blender>"
+ --testdir "${TEST_DATA_SRC_DIR}/ffmpeg"
+ )
+endif()
+
add_subdirectory(collada)
+add_subdirectory(view_layer)
diff --git a/tests/python/ffmpeg_tests.py b/tests/python/ffmpeg_tests.py
new file mode 100755
index 00000000000..9493d6f7a17
--- /dev/null
+++ b/tests/python/ffmpeg_tests.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python3
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+import argparse
+import functools
+import shutil
+import pathlib
+import subprocess
+import sys
+import tempfile
+import unittest
+
+from modules.test_utils import AbstractBlenderRunnerTest
+
+
+class AbstractFFmpegTest(AbstractBlenderRunnerTest):
+ @classmethod
+ def setUpClass(cls):
+ cls.blender = args.blender
+ cls.testdir = pathlib.Path(args.testdir)
+
+
+class AbstractFFmpegSequencerTest(AbstractFFmpegTest):
+ def get_script_for_file(self, filename: pathlib.Path) -> str:
+ movie = self.testdir / filename
+ return \
+ "import bpy; " \
+ "bpy.context.scene.sequence_editor_create(); " \
+ "strip = bpy.context.scene.sequence_editor.sequences.new_movie(" \
+ "'test_movie', %r, channel=1, frame_start=1); " \
+ "print(f'fps:{strip.fps}')" % movie.as_posix()
+
+ def get_movie_file_fps(self, filename: pathlib.Path) -> float:
+ script = self.get_script_for_file(filename)
+ output = self.run_blender('', script)
+ for line in output.splitlines():
+ if line.startswith('fps:'):
+ return float(line.split(':')[1])
+ return 0.0
+
+
+class FPSDetectionTest(AbstractFFmpegSequencerTest):
+ def test_T51153(self):
+ self.assertAlmostEqual(
+ self.get_movie_file_fps('T51153_bad_clip_2.mts'),
+ 29.97,
+ places=2)
+
+ def test_T53857(self):
+ self.assertAlmostEqual(
+ self.get_movie_file_fps('T53857_2018-01-22_15-30-49.mkv'),
+ 30.0,
+ places=2)
+
+ def test_T54148(self):
+ self.assertAlmostEqual(
+ self.get_movie_file_fps('T54148_magn_0.mkv'),
+ 1.0,
+ places=2)
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--blender', required=True)
+ parser.add_argument('--testdir', required=True)
+ args, remaining = parser.parse_known_args()
+
+ unittest.main(argv=sys.argv[0:1] + remaining)
diff --git a/tests/python/modules/test_utils.py b/tests/python/modules/test_utils.py
index 6ca498d8cdf..55ef882c49c 100755
--- a/tests/python/modules/test_utils.py
+++ b/tests/python/modules/test_utils.py
@@ -75,18 +75,24 @@ class AbstractBlenderRunnerTest(unittest.TestCase):
assert self.blender, "Path to Blender binary is to be set in setUpClass()"
assert self.testdir, "Path to tests binary is to be set in setUpClass()"
- blendfile = self.testdir / filepath
+ blendfile = self.testdir / filepath if filepath else ""
- command = (
+ command = [
self.blender,
'--background',
'-noaudio',
'--factory-startup',
'--enable-autoexec',
- str(blendfile),
+ ]
+
+ if blendfile:
+ command.append(str(blendfile))
+
+ command.extend([
'-E', 'CYCLES',
'--python-exit-code', '47',
'--python-expr', python_script,
+ ]
)
proc = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,