Best Python code snippet using localstack_python
test_download_integration.py
Source:test_download_integration.py
1#!/usr/bin/env python32# coding=utf-83import shutil4from pathlib import Path5import pytest6from click.testing import CliRunner7from bdfr.__main__ import cli8does_test_config_exist = Path('../test_config.cfg').exists()9def copy_test_config(run_path: Path):10 shutil.copy(Path('../test_config.cfg'), Path(run_path, '../test_config.cfg'))11def create_basic_args_for_download_runner(test_args: list[str], run_path: Path):12 copy_test_config(run_path)13 out = [14 'download', str(run_path),15 '-v',16 '--config', str(Path(run_path, '../test_config.cfg')),17 '--log', str(Path(run_path, 'test_log.txt')),18 ] + test_args19 return out20@pytest.mark.online21@pytest.mark.reddit22@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')23@pytest.mark.parametrize('test_args', (24 ['-s', 'Mindustry', '-L', 1],25 ['-s', 'r/Mindustry', '-L', 1],26 ['-s', 'r/mindustry', '-L', 1],27 ['-s', 'mindustry', '-L', 1],28 ['-s', 'https://www.reddit.com/r/TrollXChromosomes/', '-L', 1],29 ['-s', 'r/TrollXChromosomes/', '-L', 1],30 ['-s', 'TrollXChromosomes/', '-L', 1],31 ['-s', 'trollxchromosomes', '-L', 1],32 ['-s', 'trollxchromosomes,mindustry,python', '-L', 1],33 ['-s', 'trollxchromosomes, mindustry, python', '-L', 1],34 ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day'],35 ['-s', 'trollxchromosomes', '-L', 1, '--sort', 'new'],36 ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day', '--sort', 'new'],37 ['-s', 'trollxchromosomes', '-L', 1, '--search', 'women'],38 ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day', '--search', 'women'],39 ['-s', 'trollxchromosomes', '-L', 1, '--sort', 'new', '--search', 'women'],40 ['-s', 'trollxchromosomes', '-L', 1, '--time', 'day', '--sort', 'new', '--search', 'women'],41))42def test_cli_download_subreddits(test_args: list[str], tmp_path: Path):43 runner = CliRunner()44 test_args = create_basic_args_for_download_runner(test_args, tmp_path)45 result = runner.invoke(cli, test_args)46 assert result.exit_code == 047 assert 'Added submissions from subreddit ' in result.output48 assert 'Downloaded submission' in result.output49@pytest.mark.online50@pytest.mark.reddit51@pytest.mark.authenticated52@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')53@pytest.mark.parametrize('test_args', (54 ['-s', 'hentai', '-L', 10, '--search', 'red', '--authenticate'],55))56def test_cli_download_search_subreddits_authenticated(test_args: list[str], tmp_path: Path):57 runner = CliRunner()58 test_args = create_basic_args_for_download_runner(test_args, tmp_path)59 result = runner.invoke(cli, test_args)60 assert result.exit_code == 061 assert 'Added submissions from subreddit ' in result.output62 assert 'Downloaded submission' in result.output63@pytest.mark.online64@pytest.mark.reddit65@pytest.mark.authenticated66@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')67@pytest.mark.parametrize('test_args', (68 ['--subreddit', 'friends', '-L', 10, '--authenticate'],69))70def test_cli_download_user_specific_subreddits(test_args: list[str], tmp_path: Path):71 runner = CliRunner()72 test_args = create_basic_args_for_download_runner(test_args, tmp_path)73 result = runner.invoke(cli, test_args)74 assert result.exit_code == 075 assert 'Added submissions from subreddit ' in result.output76@pytest.mark.online77@pytest.mark.reddit78@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')79@pytest.mark.parametrize('test_args', (80 ['-l', 'm2601g'],81 ['-l', 'https://www.reddit.com/r/TrollXChromosomes/comments/m2601g/its_a_step_in_the_right_direction/'],82 ['-l', 'm3hxzd'], # Really long title used to overflow filename limit83 ['-l', 'm3kua3'], # Has a deleted user84 ['-l', 'm5bqkf'], # Resource leading to a 40485))86def test_cli_download_links(test_args: list[str], tmp_path: Path):87 runner = CliRunner()88 test_args = create_basic_args_for_download_runner(test_args, tmp_path)89 result = runner.invoke(cli, test_args)90 assert result.exit_code == 091@pytest.mark.online92@pytest.mark.reddit93@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')94@pytest.mark.parametrize('test_args', (95 ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10],96 ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10, '--sort', 'rising'],97 ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10, '--time', 'week'],98 ['--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10, '--time', 'week', '--sort', 'rising'],99))100def test_cli_download_multireddit(test_args: list[str], tmp_path: Path):101 runner = CliRunner()102 test_args = create_basic_args_for_download_runner(test_args, tmp_path)103 result = runner.invoke(cli, test_args)104 assert result.exit_code == 0105 assert 'Added submissions from multireddit ' in result.output106@pytest.mark.online107@pytest.mark.reddit108@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')109@pytest.mark.parametrize('test_args', (110 ['--user', 'helen_darten', '-m', 'xxyyzzqwerty', '-L', 10],111))112def test_cli_download_multireddit_nonexistent(test_args: list[str], tmp_path: Path):113 runner = CliRunner()114 test_args = create_basic_args_for_download_runner(test_args, tmp_path)115 result = runner.invoke(cli, test_args)116 assert result.exit_code == 0117 assert 'Failed to get submissions for multireddit' in result.output118 assert 'received 404 HTTP response' in result.output119@pytest.mark.online120@pytest.mark.reddit121@pytest.mark.authenticated122@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')123@pytest.mark.parametrize('test_args', (124 ['--user', 'djnish', '--submitted', '--user', 'FriesWithThat', '-L', 10],125 ['--user', 'me', '--upvoted', '--authenticate', '-L', 10],126 ['--user', 'me', '--saved', '--authenticate', '-L', 10],127 ['--user', 'me', '--submitted', '--authenticate', '-L', 10],128 ['--user', 'djnish', '--submitted', '-L', 10],129 ['--user', 'djnish', '--submitted', '-L', 10, '--time', 'month'],130 ['--user', 'djnish', '--submitted', '-L', 10, '--sort', 'controversial'],131))132def test_cli_download_user_data_good(test_args: list[str], tmp_path: Path):133 runner = CliRunner()134 test_args = create_basic_args_for_download_runner(test_args, tmp_path)135 result = runner.invoke(cli, test_args)136 assert result.exit_code == 0137 assert 'Downloaded submission ' in result.output138@pytest.mark.online139@pytest.mark.reddit140@pytest.mark.authenticated141@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')142@pytest.mark.parametrize('test_args', (143 ['--user', 'me', '-L', 10, '--folder-scheme', ''],144))145def test_cli_download_user_data_bad_me_unauthenticated(test_args: list[str], tmp_path: Path):146 runner = CliRunner()147 test_args = create_basic_args_for_download_runner(test_args, tmp_path)148 result = runner.invoke(cli, test_args)149 assert result.exit_code == 0150 assert 'To use "me" as a user, an authenticated Reddit instance must be used' in result.output151@pytest.mark.online152@pytest.mark.reddit153@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')154@pytest.mark.parametrize('test_args', (155 ['--subreddit', 'python', '-L', 1, '--search-existing'],156))157def test_cli_download_search_existing(test_args: list[str], tmp_path: Path):158 Path(tmp_path, 'test.txt').touch()159 runner = CliRunner()160 test_args = create_basic_args_for_download_runner(test_args, tmp_path)161 result = runner.invoke(cli, test_args)162 assert result.exit_code == 0163 assert 'Calculating hashes for' in result.output164@pytest.mark.online165@pytest.mark.reddit166@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')167@pytest.mark.parametrize('test_args', (168 ['--subreddit', 'tumblr', '-L', '25', '--skip', 'png', '--skip', 'jpg'],169 ['--subreddit', 'MaliciousCompliance', '-L', '25', '--skip', 'txt'],170 ['--subreddit', 'tumblr', '-L', '10', '--skip-domain', 'i.redd.it'],171))172def test_cli_download_download_filters(test_args: list[str], tmp_path: Path):173 runner = CliRunner()174 test_args = create_basic_args_for_download_runner(test_args, tmp_path)175 result = runner.invoke(cli, test_args)176 assert result.exit_code == 0177 assert any((string in result.output for string in ('Download filter removed ', 'filtered due to URL')))178@pytest.mark.online179@pytest.mark.reddit180@pytest.mark.slow181@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')182@pytest.mark.parametrize('test_args', (183 ['--subreddit', 'all', '-L', '100', '--sort', 'new'],184))185def test_cli_download_long(test_args: list[str], tmp_path: Path):186 runner = CliRunner()187 test_args = create_basic_args_for_download_runner(test_args, tmp_path)188 result = runner.invoke(cli, test_args)189 assert result.exit_code == 0190@pytest.mark.online191@pytest.mark.reddit192@pytest.mark.slow193@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')194@pytest.mark.parametrize('test_args', (195 ['--user', 'sdclhgsolgjeroij', '--submitted', '-L', 10],196 ['--user', 'me', '--upvoted', '-L', 10],197 ['--user', 'sdclhgsolgjeroij', '--upvoted', '-L', 10],198 ['--subreddit', 'submitters', '-L', 10], # Private subreddit199 ['--subreddit', 'donaldtrump', '-L', 10], # Banned subreddit200 ['--user', 'djnish', '--user', 'helen_darten', '-m', 'cuteanimalpics', '-L', 10],201 ['--subreddit', 'friends', '-L', 10],202))203def test_cli_download_soft_fail(test_args: list[str], tmp_path: Path):204 runner = CliRunner()205 test_args = create_basic_args_for_download_runner(test_args, tmp_path)206 result = runner.invoke(cli, test_args)207 assert result.exit_code == 0208 assert 'Downloaded' not in result.output209@pytest.mark.online210@pytest.mark.reddit211@pytest.mark.slow212@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')213@pytest.mark.parametrize('test_args', (214 ['--time', 'random'],215 ['--sort', 'random'],216))217def test_cli_download_hard_fail(test_args: list[str], tmp_path: Path):218 runner = CliRunner()219 test_args = create_basic_args_for_download_runner(test_args, tmp_path)220 result = runner.invoke(cli, test_args)221 assert result.exit_code != 0222def test_cli_download_use_default_config(tmp_path: Path):223 runner = CliRunner()224 test_args = ['download', '-vv', str(tmp_path)]225 result = runner.invoke(cli, test_args)226 assert result.exit_code == 0227@pytest.mark.online228@pytest.mark.reddit229@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')230@pytest.mark.parametrize('test_args', (231 ['-l', 'm2601g', '--exclude-id', 'm2601g'],232))233def test_cli_download_links_exclusion(test_args: list[str], tmp_path: Path):234 runner = CliRunner()235 test_args = create_basic_args_for_download_runner(test_args, tmp_path)236 result = runner.invoke(cli, test_args)237 assert result.exit_code == 0238 assert 'in exclusion list' in result.output239 assert 'Downloaded submission ' not in result.output240@pytest.mark.online241@pytest.mark.reddit242@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')243@pytest.mark.parametrize('test_args', (244 ['-l', 'm2601g', '--skip-subreddit', 'trollxchromosomes'],245 ['-s', 'trollxchromosomes', '--skip-subreddit', 'trollxchromosomes', '-L', '3'],246))247def test_cli_download_subreddit_exclusion(test_args: list[str], tmp_path: Path):248 runner = CliRunner()249 test_args = create_basic_args_for_download_runner(test_args, tmp_path)250 result = runner.invoke(cli, test_args)251 assert result.exit_code == 0252 assert 'in skip list' in result.output253 assert 'Downloaded submission ' not in result.output254@pytest.mark.online255@pytest.mark.reddit256@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')257@pytest.mark.parametrize('test_args', (258 ['--file-scheme', '{TITLE}'],259 ['--file-scheme', '{TITLE}_test_{SUBREDDIT}'],260))261def test_cli_download_file_scheme_warning(test_args: list[str], tmp_path: Path):262 runner = CliRunner()263 test_args = create_basic_args_for_download_runner(test_args, tmp_path)264 result = runner.invoke(cli, test_args)265 assert result.exit_code == 0266 assert 'Some files might not be downloaded due to name conflicts' in result.output267@pytest.mark.online268@pytest.mark.reddit269@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')270@pytest.mark.parametrize('test_args', (271 ['-l', 'm2601g', '--disable-module', 'Direct'],272 ['-l', 'nnb9vs', '--disable-module', 'YoutubeDlFallback'],273 ['-l', 'nnb9vs', '--disable-module', 'youtubedlfallback'],274))275def test_cli_download_disable_modules(test_args: list[str], tmp_path: Path):276 runner = CliRunner()277 test_args = create_basic_args_for_download_runner(test_args, tmp_path)278 result = runner.invoke(cli, test_args)279 assert result.exit_code == 0280 assert 'skipped due to disabled module' in result.output281 assert 'Downloaded submission' not in result.output282@pytest.mark.online283@pytest.mark.reddit284@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')285def test_cli_download_include_id_file(tmp_path: Path):286 test_file = Path(tmp_path, 'include.txt')287 test_args = ['--include-id-file', str(test_file)]288 test_file.write_text('odr9wg\nody576')289 runner = CliRunner()290 test_args = create_basic_args_for_download_runner(test_args, tmp_path)291 result = runner.invoke(cli, test_args)292 assert result.exit_code == 0293 assert 'Downloaded submission' in result.output294@pytest.mark.online295@pytest.mark.reddit296@pytest.mark.skipif(not does_test_config_exist, reason='A test config file is required for integration tests')297@pytest.mark.parametrize('test_args', (298 ['--ignore-user', 'ArjanEgges', '-l', 'm3hxzd'],299))300def test_cli_download_ignore_user(test_args: list[str], tmp_path: Path):301 runner = CliRunner()302 test_args = create_basic_args_for_download_runner(test_args, tmp_path)303 result = runner.invoke(cli, test_args)304 assert result.exit_code == 0305 assert 'Downloaded submission' not in result.output...
core_arguments.py
Source:core_arguments.py
...13 code.append(";")14 t.write("file.jam", " ".join(code))15 t.run_build_system(["-ffile.jam"], status=status)16 t.expect_output_lines(output)17def test_args(t, *args, **kwargs):18 test(t, "args", *args, **kwargs)19def test_varargs(t, *args, **kwargs):20 test(t, "varargs", *args, **kwargs)21t = BoostBuild.Tester(pass_toolset=0)22t.write("echo_args.jam", """\23NOCARE all ;24rule echo_args ( a b ? c ? : d + : e * )25{26 ECHO a= $(a) b= $(b) c= $(c) ":" d= $(d) ":" e= $(e) ;27}28rule echo_varargs ( a b ? c ? : d + : e * : * )29{30 ECHO a= $(a) b= $(b) c= $(c) ":" d= $(d) ":" e= $(e)31 ": rest= "$(4[1]) $(4[2-])32 ": "$(5[1]) $(5[2-]) ": "$(6[1]) $(6[2-]) ": "$(7[1]) $(7[2-])33 ": "$(8[1]) $(8[2-]) ": "$(9[1]) $(9[2-]) ": "$(10[1]) $(10[2-])34 ": "$(11[1]) $(11[2-]) ": "$(12[1]) $(12[2-]) ": "$(13[1]) $(13[2-])35 ": "$(14[1]) $(14[2-]) ": "$(15[1]) $(15[2-]) ": "$(16[1]) $(16[2-])36 ": "$(17[1]) $(17[2-]) ": "$(18[1]) $(18[2-]) ": "$(19[1]) $(19[2-])37 ": "$(20[1]) $(20[2-]) ": "$(21[1]) $(21[2-]) ": "$(22[1]) $(22[2-])38 ": "$(23[1]) $(23[2-]) ": "$(24[1]) $(24[2-]) ": "$(25[1]) $(25[2-]) ;39}40""")41test_args(t, "", "* missing argument a", status=1)42test_args(t, "1 2 : 3 : 4 : 5", "* extra argument 5", status=1)43test_args(t, "a b c1 c2 : d", "* extra argument c2", status=1)44# Check modifier '?'45test_args(t, "1 2 3 : 4", "a= 1 b= 2 c= 3 : d= 4 : e=")46test_args(t, "1 2 : 3", "a= 1 b= 2 c= : d= 3 : e=")47test_args(t, "1 2 : 3", "a= 1 b= 2 c= : d= 3 : e=")48test_args(t, "1 : 2", "a= 1 b= c= : d= 2 : e=")49# Check modifier '+'50test_args(t, "1", "* missing argument d", status=1)51test_args(t, "1 : 2 3", "a= 1 b= c= : d= 2 3 : e=")52test_args(t, "1 : 2 3 4", "a= 1 b= c= : d= 2 3 4 : e=")53# Check modifier '*'54test_args(t, "1 : 2 : 3", "a= 1 b= c= : d= 2 : e= 3")55test_args(t, "1 : 2 : 3 4", "a= 1 b= c= : d= 2 : e= 3 4")56test_args(t, "1 : 2 : 3 4 5", "a= 1 b= c= : d= 2 : e= 3 4 5")57# Check varargs58test_varargs(t, "1 : 2 : 3 4 5", "a= 1 b= c= : d= 2 : e= 3 4 5")59test_varargs(t, "1 : 2 : 3 4 5 : 6", "a= 1 b= c= : d= 2 : e= 3 4 5 : rest= 6")60test_varargs(t, "1 : 2 : 3 4 5 : 6 7",61 "a= 1 b= c= : d= 2 : e= 3 4 5 : rest= 6 7")62test_varargs(t, "1 : 2 : 3 4 5 : 6 7 : 8",63 "a= 1 b= c= : d= 2 : e= 3 4 5 : rest= 6 7 : 8")64test_varargs(t, "1 : 2 : 3 4 5 : 6 7 : 8 : 9",65 "a= 1 b= c= : d= 2 : e= 3 4 5 : rest= 6 7 : 8 : 9")66test_varargs(t, "1 : 2 : 3 4 5 : 6 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : "67 "16 : 17 : 18 : 19a 19b", "a= 1 b= c= : d= 2 : e= 3 4 5 : rest= 6 7 : 8 : "68 "9 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19a 19b")69test_varargs(t, "1 : 2 : 3 4 5 : 6 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : "70 "16 : 17 : 18 : 19a 19b 19c : 20", "a= 1 b= c= : d= 2 : e= 3 4 5 : rest= "...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!