82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
# SPDX-FileCopyrightText: 2026 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# ./blender.bin --background --factory-startup --python tests/python/sequencer_strip_naming.py
|
|
|
|
import bpy
|
|
|
|
import sys
|
|
import unittest
|
|
|
|
|
|
class StripNamingTest(unittest.TestCase):
|
|
def setUp(self):
|
|
bpy.context.scene.sequence_editor_create()
|
|
self.strips = bpy.context.scene.sequence_editor.strips
|
|
|
|
def tearDown(self):
|
|
bpy.context.scene.sequence_editor_clear()
|
|
|
|
def test_duplicate_name_gets_numeric_suffix(self):
|
|
# identical names get .001, .002, ...
|
|
s1 = self.strips.new_meta("Meta", 1, 1)
|
|
s2 = self.strips.new_meta("Meta", 2, 1)
|
|
s3 = self.strips.new_meta("Meta", 3, 1)
|
|
self.assertEqual(s1.name, "Meta")
|
|
self.assertEqual(s2.name, "Meta.001")
|
|
self.assertEqual(s3.name, "Meta.002")
|
|
|
|
def test_purely_numeric_suffix_increments(self):
|
|
# strip name already ends in .###: the number should be increased
|
|
s1 = self.strips.new_meta("Clip.012", 1, 1)
|
|
s2 = self.strips.new_meta("Clip.012", 2, 1)
|
|
self.assertEqual(s1.name, "Clip.012")
|
|
self.assertEqual(s2.name, "Clip.013")
|
|
|
|
def test_dot_number_nonnumeric_suffix_not_stripped(self):
|
|
# a ".###" followed by more characters should not be stripped
|
|
name = "name.123_anything_456"
|
|
s1 = self.strips.new_meta(name, 1, 1)
|
|
s2 = self.strips.new_meta(name, 2, 1)
|
|
s3 = self.strips.new_meta(name, 3, 1)
|
|
self.assertEqual(s1.name, "name.123_anything_456")
|
|
self.assertEqual(s2.name, "name.123_anything_456.001")
|
|
self.assertEqual(s3.name, "name.123_anything_456.002")
|
|
|
|
def test_isoformat_name_not_stripped(self):
|
|
# naming case from #160144:
|
|
# datetime.isoformat() produces names like YYYY-MM-DDTHH:MM:SS.ffffff+HH:MM
|
|
# The ".ffffff+HH:MM" part must be preserved, not stripped
|
|
name = "2024-01-15T12:30:45.123456+02:00"
|
|
s1 = self.strips.new_meta(name, 1, 1)
|
|
s2 = self.strips.new_meta(name, 2, 1)
|
|
self.assertEqual(s1.name, name)
|
|
self.assertEqual(s2.name, name + ".001")
|
|
|
|
def test_multiple_dots_last_numeric_increments(self):
|
|
# "a.b.002": last suffix is purely numeric, so it should increment
|
|
s1 = self.strips.new_meta("a.b.002", 1, 1)
|
|
s2 = self.strips.new_meta("a.b.002", 2, 1)
|
|
self.assertEqual(s1.name, "a.b.002")
|
|
self.assertEqual(s2.name, "a.b.003")
|
|
|
|
def test_multiple_dots_last_nonnumeric_appends(self):
|
|
# "a.b.c": last suffix is non-numeric, whole name is the base
|
|
s1 = self.strips.new_meta("a.b.c", 1, 1)
|
|
s2 = self.strips.new_meta("a.b.c", 2, 1)
|
|
self.assertEqual(s1.name, "a.b.c")
|
|
self.assertEqual(s2.name, "a.b.c.001")
|
|
|
|
|
|
def main():
|
|
argv = [sys.argv[0]]
|
|
if '--' in sys.argv:
|
|
argv += sys.argv[sys.argv.index('--') + 1:]
|
|
|
|
unittest.main(argv=argv)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|