]>
Raphaƫl G. Git Repositories - youtubedl/blob - test/test_swfinterp.py
3 # Allow direct execution
7 sys
.path
.insert(0, os
.path
.dirname(os
.path
.dirname(os
.path
.abspath(__file__
))))
16 from youtube_dl
.swfinterp
import SWFInterpreter
19 TEST_DIR
= os
.path
.join(
20 os
.path
.dirname(os
.path
.abspath(__file__
)), 'swftests')
23 class TestSWFInterpreter(unittest
.TestCase
):
27 def _make_testfunc(testfile
):
28 m
= re
.match(r
'^(.*)\.(as)$', testfile
)
34 as_file
= os
.path
.join(TEST_DIR
, testfile
)
35 swf_file
= os
.path
.join(TEST_DIR
, test_id
+ '.swf')
36 if ((not os
.path
.exists(swf_file
))
37 or os
.path
.getmtime(swf_file
) < os
.path
.getmtime(as_file
)):
40 subprocess
.check_call(['mxmlc', '-output', swf_file
, as_file
])
41 except OSError as ose
:
42 if ose
.errno
== errno
.ENOENT
:
43 print('mxmlc not found! Skipping test.')
47 with open(swf_file
, 'rb') as swf_f
:
48 swf_content
= swf_f
.read()
49 swfi
= SWFInterpreter(swf_content
)
51 with io
.open(as_file
, 'r', encoding
='utf-8') as as_f
:
52 as_content
= as_f
.read()
56 r
'(?m)^//\s*%s:\s*(.*?)\n' % re
.escape(key
), as_content
)
58 raise ValueError('Cannot find %s in %s' % (key
, testfile
))
59 return json
.loads(m
.group(1))
61 input_args
= _find_spec('input')
62 output
= _find_spec('output')
64 swf_class
= swfi
.extract_class(test_id
)
65 func
= swfi
.extract_function(swf_class
, 'main')
66 res
= func(input_args
)
67 self
.assertEqual(res
, output
)
69 test_func
.__name
__ = str('test_swf_' + test_id
)
70 setattr(TestSWFInterpreter
, test_func
.__name
__, test_func
)
73 for testfile
in os
.listdir(TEST_DIR
):
74 _make_testfunc(testfile
)
76 if __name__
== '__main__':