def mock_ytdl_get_all_extractors(include_generic): extractors = [EM('foo'), EM('bar'), EM('baz')] if include_generic: extractors.append(EM('generic')) return extractors
def mock_machinery_load_extractors_by_peqn(name): if name == 'ns1/plugin': return [EM('ns1/plugin:foo'), EM('ns1/plugin:bar')] return [EM(name)]
def mock_machinery_load_all_extractors(): return [EM('ns1/plugin:foo'), EM('ns1/plugin:bar'), EM('ns2/plugin')]
def mock_ytdl_get_extractors_by_name(name): return [EM(name)]
'dl_plus.ytdl.get_extractors_by_name', mock_ytdl_get_extractors_by_name, ) mp.setattr( 'dl_plus.extractor.machinery.load_all_extractors', mock_machinery_load_all_extractors, ) mp.setattr( 'dl_plus.extractor.machinery.load_extractors_by_peqn', mock_machinery_load_extractors_by_peqn, ) yield @pytest.mark.parametrize('names,expected', [ (['bar', 'bar', 'bar'], [EM('bar')]), (['baz', ':builtins:'], [EM('baz'), EM('foo'), EM('bar')]), (['ns2/plugin', ':plugins:', 'foo'], [ EM('ns2/plugin'), EM('ns1/plugin:foo'), EM('ns1/plugin:bar'), EM('foo'), ]), (['ns1/plugin', 'ns1/plugin:foo'], [ EM('ns1/plugin:foo'), EM('ns1/plugin:bar'), ]), ]) def test(mock_loaders, names, expected): assert get_extractors(names) == expected
try: extractors = request.getfixturevalue('extractors') except pytest.FixtureLookupError: marker = request.node.get_closest_marker('extractors') if marker: extractors = marker.args if extractors is not None: monkeypatch.setattr('dl_plus.ytdl.get_all_extractors', lambda **kw: extractors) @pytest.mark.parametrize( 'extractors,expected', [ # 0 ([EM('foo'), EM('bar')], { 'foo': EM('foo'), 'bar': EM('bar'), }), # 1 ([EM('foo:sub1'), EM('foo:sub2'), EM('bar')], { 'foo': { 'sub1': EM('foo:sub1'), 'sub2': EM('foo:sub2'), }, 'bar': EM('bar'), }), # 2 ([EM('foo'), EM('foo:sub'), EM('bar')], { 'foo': {