* Package: www-misc/buku-3.7 * Repository: gentoo * Maintainer: davidroman96@gmail.com proxy-maint@gentoo.org * USE: abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python3_6 test userland_GNU * FEATURES: network-sandbox preserve-libs sandbox test userpriv usersandbox >>> Unpacking source... >>> Unpacking buku-3.7.tar.gz to /var/tmp/portage/www-misc/buku-3.7/work >>> Source unpacked in /var/tmp/portage/www-misc/buku-3.7/work >>> Preparing source in /var/tmp/portage/www-misc/buku-3.7/work/buku-3.7 ... >>> Source prepared. >>> Configuring source in /var/tmp/portage/www-misc/buku-3.7/work/buku-3.7 ... >>> Source configured. >>> Compiling source in /var/tmp/portage/www-misc/buku-3.7/work/buku-3.7 ... * python3_6: running distutils-r1_run_phase distutils-r1_python_compile python3.6 setup.py build Error::No module named 'pypandoc' NOT REFRESHING README.rst running build running build_py copying buku.py -> /var/tmp/portage/www-misc/buku-3.7/work/buku-3.7-python3_6/lib warning: build_py: byte-compiling is disabled, skipping. >>> Source compiled. >>> Test phase: www-misc/buku-3.7 * python3_6: running distutils-r1_run_phase python_test ============================= test session starts ============================== platform linux -- Python 3.6.6, pytest-4.1.0, py-1.5.4, pluggy-0.7.1 -- /usr/bin/python3.6 cachedir: .pytest_cache hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/var/tmp/portage/www-misc/buku-3.7/work/buku-3.7/.hypothesis/examples') rootdir: /var/tmp/portage/www-misc/buku-3.7/work/buku-3.7, inifile: plugins: cov-2.5.1, hypothesis-3.85.1 collecting ... collected 265 items tests/test_BukuCrypt.py::test_get_filehash PASSED [ 0%] tests/test_BukuCrypt.py::test_encrypt_decrypt PASSED [ 0%] tests/test_BukuHTMLParser.py::test_init PASSED [ 1%] tests/test_BukuHTMLParser.py::test_handle_starttag[] PASSED [ 1%] tests/test_BukuHTMLParser.py::test_handle_starttag[title] PASSED [ 1%] tests/test_BukuHTMLParser.py::test_handle_endtag[-None] PASSED [ 2%] tests/test_BukuHTMLParser.py::test_handle_endtag[-data] PASSED [ 2%] tests/test_BukuHTMLParser.py::test_handle_endtag[title-None] PASSED [ 3%] tests/test_BukuHTMLParser.py::test_handle_endtag[title-data] PASSED [ 3%] tests/test_BukuHTMLParser.py::test_handle_data[-None] PASSED [ 3%] tests/test_BukuHTMLParser.py::test_handle_data[-data] PASSED [ 4%] tests/test_BukuHTMLParser.py::test_handle_data[title-None] PASSED [ 4%] tests/test_BukuHTMLParser.py::test_handle_data[title-data] PASSED [ 4%] tests/test_BukuHTMLParser.py::test_error PASSED [ 5%] tests/test_ExtendedArgumentParser.py::test_program_info[win32-None] PASSED [ 5%] tests/test_ExtendedArgumentParser.py::test_program_info[win32-file1] PASSED [ 6%] tests/test_ExtendedArgumentParser.py::test_program_info[linux-None] PASSED [ 6%] tests/test_ExtendedArgumentParser.py::test_program_info[linux-file3] PASSED [ 6%] tests/test_ExtendedArgumentParser.py::test_prompt_help PASSED [ 7%] tests/test_ExtendedArgumentParser.py::test_print_help PASSED [ 7%] tests/test_buku.py::test_is_bad_url[http://example.com-False] PASSED [ 7%] tests/test_buku.py::test_is_bad_url[ftp://ftp.somedomain.org-False] PASSED [ 8%] tests/test_buku.py::test_is_bad_url[http://examplecom.-True] PASSED [ 8%] tests/test_buku.py::test_is_bad_url[http://.example.com-True] PASSED [ 9%] tests/test_buku.py::test_is_bad_url[http://example.com.-True] PASSED [ 9%] tests/test_buku.py::test_is_bad_url[about:newtab-True] PASSED [ 9%] tests/test_buku.py::test_is_bad_url[chrome://version/-True] PASSED [ 10%] tests/test_buku.py::test_is_ignored_mime[http://example.com/file.pdf-True] PASSED [ 10%] tests/test_buku.py::test_is_ignored_mime[http://example.com/file.txt-True] PASSED [ 10%] tests/test_buku.py::test_is_ignored_mime[http://example.com/file.jpg-False] PASSED [ 11%] tests/test_buku.py::test_get_page_title PASSED [ 11%] tests/test_buku.py::test_gen_headers PASSED [ 12%] tests/test_buku.py::test_get_PoolManager[None] PASSED [ 12%] tests/test_buku.py::test_get_PoolManager[m_myproxy1] PASSED [ 12%] tests/test_buku.py::test_parse_tags[None-None] PASSED [ 13%] tests/test_buku.py::test_parse_tags[keywords1-None] PASSED [ 13%] tests/test_buku.py::test_parse_tags[keywords2-,tag1 tag2,] PASSED [ 13%] tests/test_buku.py::test_parse_tags[keywords3-,tag1,tag2 tag3,] PASSED [ 14%] tests/test_buku.py::test_print_rec_with_filter[records0-1-exp_res0] PASSED [ 14%] tests/test_buku.py::test_print_rec_with_filter[records1-2-exp_res1] PASSED [ 15%] tests/test_buku.py::test_print_rec_with_filter[records2-3-exp_res2] PASSED [ 15%] tests/test_buku.py::test_print_rec_with_filter[records3-4-exp_res3] PASSED [ 15%] tests/test_buku.py::test_print_rec_with_filter[records4-10-exp_res4] PASSED [ 16%] tests/test_buku.py::test_print_rec_with_filter[records5-20-exp_res5] PASSED [ 16%] tests/test_buku.py::test_print_rec_with_filter[records6-30-exp_res6] PASSED [ 16%] tests/test_buku.py::test_print_rec_with_filter[records7-40-exp_res7] PASSED [ 17%] tests/test_buku.py::test_prep_tag_search[tag1, tag2+3-exp_res0] PASSED [ 17%] tests/test_buku.py::test_prep_tag_search[tag1 + tag2-3 + tag4-exp_res1] PASSED [ 18%] tests/test_buku.py::test_prep_tag_search[tag1, tag2-3 - tag4, tag5-exp_res2] PASSED [ 18%] tests/test_buku.py::test_edit_at_prompt[w-True-edit_rec_retval0] PASSED [ 18%] tests/test_buku.py::test_edit_at_prompt[w-True-None] PASSED [ 19%] tests/test_buku.py::test_edit_at_prompt[w-False-edit_rec_retval2] PASSED [ 19%] tests/test_buku.py::test_edit_at_prompt[w-False-None] PASSED [ 20%] tests/test_buku.py::test_edit_at_prompt[nav4-True-edit_rec_retval4] PASSED [ 20%] tests/test_buku.py::test_edit_at_prompt[nav5-True-None] PASSED [ 20%] tests/test_buku.py::test_edit_at_prompt[nav6-False-edit_rec_retval6] PASSED [ 21%] tests/test_buku.py::test_edit_at_prompt[nav7-False-None] PASSED [ 21%] tests/test_buku.py::test_edit_at_prompt[nav8-True-edit_rec_retval8] PASSED [ 21%] tests/test_buku.py::test_edit_at_prompt[nav9-True-None] PASSED [ 22%] tests/test_buku.py::test_edit_at_prompt[nav10-False-edit_rec_retval10] PASSED [ 22%] tests/test_buku.py::test_edit_at_prompt[nav11-False-None] PASSED [ 23%] tests/test_buku.py::test_format_json[0-True] PASSED [ 23%] tests/test_buku.py::test_format_json[0-False] PASSED [ 23%] tests/test_buku.py::test_format_json[1-True] PASSED [ 24%] tests/test_buku.py::test_format_json[1-False] PASSED [ 24%] tests/test_buku.py::test_format_json[2-True] PASSED [ 24%] tests/test_buku.py::test_format_json[2-False] PASSED [ 25%] tests/test_buku.py::test_format_json[3-True] PASSED [ 25%] tests/test_buku.py::test_format_json[3-False] PASSED [ 26%] tests/test_buku.py::test_is_int[string-False] PASSED [ 26%] tests/test_buku.py::test_is_int[12-True] PASSED [ 26%] tests/test_buku.py::test_is_int[12.1-False] PASSED [ 27%] tests/test_buku.py::test_browse[http://example.com-http://example.com-linux] PASSED [ 27%] tests/test_buku.py::test_browse[example.com-http://example.com-linux] PASSED [ 27%] tests/test_buku.py::test_browse[http://example.com-http://example.com-win32] PASSED [ 28%] tests/test_buku.py::test_check_upstream_release[200-True] PASSED [ 28%] tests/test_buku.py::test_check_upstream_release[200-False] PASSED [ 29%] tests/test_buku.py::test_check_upstream_release[404-True] PASSED [ 29%] tests/test_buku.py::test_check_upstream_release[404-False] PASSED [ 29%] tests/test_buku.py::test_regexp[cat.y-catty-True] PASSED [ 30%] tests/test_buku.py::test_regexp[cat.y-caty-False] PASSED [ 30%] tests/test_buku.py::test_delim_wrap[text-,text,] PASSED [ 30%] tests/test_buku.py::test_read_in PASSED [ 31%] tests/test_buku.py::test_sigint_handler_with_mock PASSED [ 31%] tests/test_buku.py::test_get_system_editor PASSED [ 32%] tests/test_buku.py::test_is_editor_valid[none-False] PASSED [ 32%] tests/test_buku.py::test_is_editor_valid[0-False] PASSED [ 32%] tests/test_buku.py::test_is_editor_valid[random_editor-True] PASSED [ 33%] tests/test_buku.py::test_to_temp_file_content[None-None--None] PASSED [ 33%] tests/test_buku.py::test_to_temp_file_content[None-None--] PASSED [ 33%] tests/test_buku.py::test_to_temp_file_content[None-None--description] PASSED [ 34%] tests/test_buku.py::test_to_temp_file_content[None-None-tag1,tag2-None] PASSED [ 34%] tests/test_buku.py::test_to_temp_file_content[None-None-tag1,tag2-] PASSED [ 35%] tests/test_buku.py::test_to_temp_file_content[None-None-tag1,tag2-description] PASSED [ 35%] tests/test_buku.py::test_to_temp_file_content[None-None-,tag1,tag2,-None] PASSED [ 35%] tests/test_buku.py::test_to_temp_file_content[None-None-,tag1,tag2,-] PASSED [ 36%] tests/test_buku.py::test_to_temp_file_content[None-None-,tag1,tag2,-description] PASSED [ 36%] tests/test_buku.py::test_to_temp_file_content[None---None] PASSED [ 36%] tests/test_buku.py::test_to_temp_file_content[None---] PASSED [ 37%] tests/test_buku.py::test_to_temp_file_content[None---description] PASSED [ 37%] tests/test_buku.py::test_to_temp_file_content[None--tag1,tag2-None] PASSED [ 38%] tests/test_buku.py::test_to_temp_file_content[None--tag1,tag2-] PASSED [ 38%] tests/test_buku.py::test_to_temp_file_content[None--tag1,tag2-description] PASSED [ 38%] tests/test_buku.py::test_to_temp_file_content[None--,tag1,tag2,-None] PASSED [ 39%] tests/test_buku.py::test_to_temp_file_content[None--,tag1,tag2,-] PASSED [ 39%] tests/test_buku.py::test_to_temp_file_content[None--,tag1,tag2,-description] PASSED [ 40%] tests/test_buku.py::test_to_temp_file_content[None-title--None] PASSED [ 40%] tests/test_buku.py::test_to_temp_file_content[None-title--] PASSED [ 40%] tests/test_buku.py::test_to_temp_file_content[None-title--description] PASSED [ 41%] tests/test_buku.py::test_to_temp_file_content[None-title-tag1,tag2-None] PASSED [ 41%] tests/test_buku.py::test_to_temp_file_content[None-title-tag1,tag2-] PASSED [ 41%] tests/test_buku.py::test_to_temp_file_content[None-title-tag1,tag2-description] PASSED [ 42%] tests/test_buku.py::test_to_temp_file_content[None-title-,tag1,tag2,-None] PASSED [ 42%] tests/test_buku.py::test_to_temp_file_content[None-title-,tag1,tag2,-] PASSED [ 43%] tests/test_buku.py::test_to_temp_file_content[None-title-,tag1,tag2,-description] PASSED [ 43%] tests/test_buku.py::test_to_temp_file_content[example.com-None--None] PASSED [ 43%] tests/test_buku.py::test_to_temp_file_content[example.com-None--] PASSED [ 44%] tests/test_buku.py::test_to_temp_file_content[example.com-None--description] PASSED [ 44%] tests/test_buku.py::test_to_temp_file_content[example.com-None-tag1,tag2-None] PASSED [ 44%] tests/test_buku.py::test_to_temp_file_content[example.com-None-tag1,tag2-] PASSED [ 45%] tests/test_buku.py::test_to_temp_file_content[example.com-None-tag1,tag2-description] PASSED [ 45%] tests/test_buku.py::test_to_temp_file_content[example.com-None-,tag1,tag2,-None] PASSED [ 46%] tests/test_buku.py::test_to_temp_file_content[example.com-None-,tag1,tag2,-] PASSED [ 46%] tests/test_buku.py::test_to_temp_file_content[example.com-None-,tag1,tag2,-description] PASSED [ 46%] tests/test_buku.py::test_to_temp_file_content[example.com---None] PASSED [ 47%] tests/test_buku.py::test_to_temp_file_content[example.com---] PASSED [ 47%] tests/test_buku.py::test_to_temp_file_content[example.com---description] PASSED [ 47%] tests/test_buku.py::test_to_temp_file_content[example.com--tag1,tag2-None] PASSED [ 48%] tests/test_buku.py::test_to_temp_file_content[example.com--tag1,tag2-] PASSED [ 48%] tests/test_buku.py::test_to_temp_file_content[example.com--tag1,tag2-description] PASSED [ 49%] tests/test_buku.py::test_to_temp_file_content[example.com--,tag1,tag2,-None] PASSED [ 49%] tests/test_buku.py::test_to_temp_file_content[example.com--,tag1,tag2,-] PASSED [ 49%] tests/test_buku.py::test_to_temp_file_content[example.com--,tag1,tag2,-description] PASSED [ 50%] tests/test_buku.py::test_to_temp_file_content[example.com-title--None] PASSED [ 50%] tests/test_buku.py::test_to_temp_file_content[example.com-title--] PASSED [ 50%] tests/test_buku.py::test_to_temp_file_content[example.com-title--description] PASSED [ 51%] tests/test_buku.py::test_to_temp_file_content[example.com-title-tag1,tag2-None] PASSED [ 51%] tests/test_buku.py::test_to_temp_file_content[example.com-title-tag1,tag2-] PASSED [ 52%] tests/test_buku.py::test_to_temp_file_content[example.com-title-tag1,tag2-description] PASSED [ 52%] tests/test_buku.py::test_to_temp_file_content[example.com-title-,tag1,tag2,-None] PASSED [ 52%] tests/test_buku.py::test_to_temp_file_content[example.com-title-,tag1,tag2,-] PASSED [ 53%] tests/test_buku.py::test_to_temp_file_content[example.com-title-,tag1,tag2,-description] PASSED [ 53%] tests/test_buku.py::test_parse_temp_file_content[-None] PASSED [ 53%] tests/test_buku.py::test_parse_temp_file_content[#line1\n#line2-None] PASSED [ 54%] tests/test_buku.py::test_parse_temp_file_content[example.com\ntitle\ntags\ndesc-exp_res2] PASSED [ 54%] tests/test_buku.py::test_edit_rec SKIPPED [ 55%] tests/test_buku.py::test_piped_input[argv-None-True] PASSED [ 55%] tests/test_buku.py::test_piped_input[argv-None-False] PASSED [ 55%] tests/test_buku.py::test_piped_input[argv-pipeargs2-True] PASSED [ 56%] tests/test_buku.py::test_piped_input[argv-pipeargs3-False] PASSED [ 56%] tests/test_buku.py::TestHelpers::test_is_int PASSED [ 56%] tests/test_buku.py::TestHelpers::test_parse_tags PASSED [ 57%] tests/test_buku.py::test_sigint_handler SKIPPED [ 57%] tests/test_buku.py::test_network_handler_with_url[http://example.com.-exp_res0] PASSED [ 58%] tests/test_buku.py::test_network_handler_with_url[http://example.com-exp_res1] FAILED [ 58%] tests/test_buku.py::test_network_handler_with_url[http://example.com/page1.txt-exp_res2] PASSED [ 58%] tests/test_buku.py::test_network_handler_with_url[about:new_page-exp_res3] PASSED [ 59%] tests/test_buku.py::test_network_handler_with_url[chrome://version/-exp_res4] PASSED [ 59%] tests/test_buku.py::test_is_nongeneric_url[http://example.com-False] PASSED [ 60%] tests/test_buku.py::test_is_nongeneric_url[apt:package1,package2,package3-True] PASSED [ 60%] tests/test_buku.py::test_is_nongeneric_url[apt://firefox-True] PASSED [ 60%] tests/test_buku.py::test_is_nongeneric_url[file:///tmp/vim-markdown-preview.html-True] PASSED [ 61%] tests/test_buku.py::test_is_nongeneric_url[place:sort=8&maxResults=10-True] PASSED [ 61%] tests/test_buku.py::test_import_md[None-exp_res0] PASSED [ 61%] tests/test_buku.py::test_import_md[tag1-exp_res1] PASSED [ 62%] tests/test_buku.py::test_import_html[
GitHub\n
comment for the bookmark here\n -exp_res0] PASSED [ 62%] tests/test_buku.py::test_import_html[DT>GitHub\n
comment for the bookmark here\n second line of the comment here-exp_res1] PASSED [ 63%] tests/test_buku.py::test_import_html[DT>GitHub\n
comment for the bookmark here\n second line of the comment here\n third line of the comment here\n
News-exp_res2] PASSED [ 63%] tests/test_buku.py::test_import_html[DT>GitHub\n
comment for the bookmark here-exp_res3] PASSED [ 63%] tests/test_buku.py::test_import_html_and_add_parent PASSED [ 64%] tests/test_buku.py::test_import_html_and_new_tag PASSED [ 64%] tests/test_buku.py::test_copy_to_clipboard[linux-params0] PASSED [ 64%] tests/test_buku.py::test_copy_to_clipboard[freebsd-params1] PASSED [ 65%] tests/test_buku.py::test_copy_to_clipboard[openbsd-params2] PASSED [ 65%] tests/test_buku.py::test_copy_to_clipboard[darwin-params3] PASSED [ 66%] tests/test_buku.py::test_copy_to_clipboard[win32-params4] PASSED [ 66%] tests/test_buku.py::test_copy_to_clipboard[random-None] PASSED [ 66%] tests/test_bukuDb.py::TestBukuDb::test_add_rec PASSED [ 67%] tests/test_bukuDb.py::TestBukuDb::test_append_tag_at_all_indices PASSED [ 67%] tests/test_bukuDb.py::TestBukuDb::test_append_tag_at_index PASSED [ 67%] tests/test_bukuDb.py::TestBukuDb::test_cleardb PASSED [ 68%] tests/test_bukuDb.py::TestBukuDb::test_close_quit PASSED [ 68%] tests/test_bukuDb.py::TestBukuDb::test_delete_rec PASSED [ 69%] tests/test_bukuDb.py::TestBukuDb::test_delete_rec_no PASSED [ 69%] tests/test_bukuDb.py::TestBukuDb::test_delete_rec_yes PASSED [ 69%] tests/test_bukuDb.py::TestBukuDb::test_delete_tag_at_index PASSED [ 70%] tests/test_bukuDb.py::TestBukuDb::test_get_default_dbdir PASSED [ 70%] tests/test_bukuDb.py::TestBukuDb::test_get_rec_by_id PASSED [ 70%] tests/test_bukuDb.py::TestBukuDb::test_get_rec_id PASSED [ 71%] tests/test_bukuDb.py::TestBukuDb::test_initdb PASSED [ 71%] tests/test_bukuDb.py::TestBukuDb::test_refreshdb FAILED [ 72%] tests/test_bukuDb.py::TestBukuDb::test_replace_tag PASSED [ 72%] tests/test_bukuDb.py::TestBukuDb::test_search_and_open_all_in_browser PASSED [ 72%] tests/test_bukuDb.py::TestBukuDb::test_search_and_open_in_broswer_by_range PASSED [ 73%] tests/test_bukuDb.py::TestBukuDb::test_search_by_multiple_tags_search_all PASSED [ 73%] tests/test_bukuDb.py::TestBukuDb::test_search_by_multiple_tags_search_any PASSED [ 73%] tests/test_bukuDb.py::TestBukuDb::test_search_by_tag PASSED [ 74%] tests/test_bukuDb.py::TestBukuDb::test_search_by_tags_enforces_space_seprations_exclusion PASSED [ 74%] tests/test_bukuDb.py::TestBukuDb::test_search_by_tags_enforces_space_seprations_search_all PASSED [ 75%] tests/test_bukuDb.py::TestBukuDb::test_search_by_tags_exclusion PASSED [ 75%] tests/test_bukuDb.py::TestBukuDb::test_search_keywords_and_filter_by_tags PASSED [ 75%] tests/test_bukuDb.py::TestBukuDb::test_searchdb PASSED [ 76%] tests/test_bukuDb.py::TestBukuDb::test_suggest_tags PASSED [ 76%] tests/test_bukuDb.py::TestBukuDb::test_tnyfy_url FAILED [ 76%] tests/test_bukuDb.py::TestBukuDb::test_update_rec PASSED [ 77%] tests/test_bukuDb.py::test_print_rec_hypothesis PASSED [ 77%] tests/test_bukuDb.py::test_list_tags PASSED [ 78%] tests/test_bukuDb.py::test_compactdb PASSED [ 78%] tests/test_bukuDb.py::test_delete_rec_range_and_delay_commit PASSED [ 78%] tests/test_bukuDb.py::test_delete_rec_range_and_big_int[1-1] SKIPPED [ 79%] tests/test_bukuDb.py::test_delete_rec_range_and_big_int[1-9223372036854775809] SKIPPED [ 79%] tests/test_bukuDb.py::test_delete_rec_range_and_big_int[9223372036854775809-1] SKIPPED [ 80%] tests/test_bukuDb.py::test_delete_rec_range_and_big_int[9223372036854775809-9223372036854775809] SKIPPED [ 80%] tests/test_bukuDb.py::test_delete_rec_index_and_delay_commit PASSED [ 80%] tests/test_bukuDb.py::test_delete_rec_on_empty_database[0-True-1-1] PASSED [ 81%] tests/test_bukuDb.py::test_delete_rec_on_empty_database[0-True-0-0] PASSED [ 81%] tests/test_bukuDb.py::test_delete_rec_on_empty_database[0-False-0-0] PASSED [ 81%] tests/test_bukuDb.py::test_delete_rec_on_non_interger[a-a-1-True] PASSED [ 82%] tests/test_bukuDb.py::test_delete_rec_on_non_interger[a-a-1-False] PASSED [ 82%] tests/test_bukuDb.py::test_delete_rec_on_non_interger[a-1-a-True] PASSED [ 83%] tests/test_bukuDb.py::test_add_rec_add_invalid_url[] PASSED [ 83%] tests/test_bukuDb.py::test_add_rec_add_invalid_url[False] PASSED [ 83%] tests/test_bukuDb.py::test_add_rec_add_invalid_url[None] PASSED [ 84%] tests/test_bukuDb.py::test_add_rec_add_invalid_url[0] PASSED [ 84%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs0-exp_arg0] FAILED [ 84%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs1-exp_arg1] FAILED [ 85%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs2-exp_arg2] FAILED [ 85%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs3-exp_arg3] FAILED [ 86%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs4-exp_arg4] PASSED [ 86%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs5-exp_arg5] FAILED [ 86%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs6-exp_arg6] FAILED [ 87%] tests/test_bukuDb.py::test_add_rec_exec_arg[kwargs7-exp_arg7] FAILED [ 87%] tests/test_bukuDb.py::test_update_rec_index_0 PASSED [ 87%] tests/test_bukuDb.py::test_update_rec_exec_arg[kwargs0-UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?-exp_arguments0] FAILED [ 88%] tests/test_bukuDb.py::test_update_rec_exec_arg[kwargs1-UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?-exp_arguments1] PASSED [ 88%] tests/test_bukuDb.py::test_update_rec_exec_arg[kwargs2-UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?-exp_arguments2] FAILED [ 89%] tests/test_bukuDb.py::test_update_rec_exec_arg[kwargs3-UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?-exp_arguments3] FAILED [ 89%] tests/test_bukuDb.py::test_update_rec_exec_arg[kwargs4-UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?-exp_arguments4] FAILED [ 89%] tests/test_bukuDb.py::test_update_rec_exec_arg[kwargs5-UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?-exp_arguments5] FAILED [ 90%] tests/test_bukuDb.py::test_search_by_tag_query[tag1, tag2-SELECT id, url, metadata, tags, desc FROM bookmarks WHERE tags LIKE '%' || ? || '%' OR tags LIKE '%' || ? || '%' ORDER BY id ASC-exp_arguments0] PASSED [ 90%] tests/test_bukuDb.py::test_search_by_tag_query[tag1+tag2,tag3, tag4-SELECT id, url, metadata, tags, desc FROM bookmarks WHERE tags LIKE '%' || ? || '%' OR tags LIKE '%' || ? || '%' OR tags LIKE '%' || ? || '%' ORDER BY id ASC-exp_arguments1] PASSED [ 90%] tests/test_bukuDb.py::test_search_by_tag_query[tag1 + tag2+tag3-SELECT id, url, metadata, tags, desc FROM bookmarks WHERE tags LIKE '%' || ? || '%' AND tags LIKE '%' || ? || '%' ORDER BY id ASC-exp_arguments2] PASSED [ 91%] tests/test_bukuDb.py::test_search_by_tag_query[tag1-tag2 + tag 3 - tag4-SELECT id, url, metadata, tags, desc FROM bookmarks WHERE (tags LIKE '%' || ? || '%' AND tags LIKE '%' || ? || '%' ) AND tags NOT REGEXP ? ORDER BY id ASC-exp_arguments3] PASSED [ 91%] tests/test_bukuDb.py::test_update_rec_only_index PASSED [ 92%] tests/test_bukuDb.py::test_update_rec_invalid_url[None] PASSED [ 92%] tests/test_bukuDb.py::test_update_rec_invalid_url[] PASSED [ 92%] tests/test_bukuDb.py::test_update_rec_invalid_tag[+,] PASSED [ 93%] tests/test_bukuDb.py::test_update_rec_invalid_tag[-,] PASSED [ 93%] tests/test_bukuDb.py::test_update_rec_update_all_bookmark[y] PASSED [ 93%] tests/test_bukuDb.py::test_update_rec_update_all_bookmark[n] PASSED [ 94%] tests/test_bukuDb.py::test_update_rec_update_all_bookmark[] PASSED [ 94%] tests/test_bukuDb.py::test_edit_update_rec_with_invalid_input[none-0-False] PASSED [ 95%] tests/test_bukuDb.py::test_edit_update_rec_with_invalid_input[nano--2-False] PASSED [ 95%] tests/test_bukuDb.py::test_browse_by_index PASSED [ 95%] tests/test_bukuDb.py::test_load_chrome_database[True] ERROR [ 96%] tests/test_bukuDb.py::test_load_chrome_database[False] ERROR [ 96%] tests/test_bukuDb.py::test_load_firefox_database[True] ERROR [ 96%] tests/test_bukuDb.py::test_load_firefox_database[False] ERROR [ 97%] tests/test_bukuDb.py::test_search_keywords_and_filter_by_tags[keyword_results0-stag_results0-exp_res0] PASSED [ 97%] tests/test_bukuDb.py::test_search_keywords_and_filter_by_tags[keyword_results1-stag_results1-exp_res1] PASSED [ 98%] tests/test_bukuDb.py::test_search_keywords_and_filter_by_tags[keyword_results2-stag_results2-exp_res2] PASSED [ 98%] tests/test_bukuDb.py::test_exclude_results_from_search[search_results0-exclude_results0-exp_res0] PASSED [ 98%] tests/test_bukuDb.py::test_exclude_results_from_search[search_results1-exclude_results1-exp_res1] PASSED [ 99%] tests/test_bukuDb.py::test_exclude_results_from_search[search_results2-exclude_results2-exp_res2] PASSED [ 99%] tests/test_bukuDb.py::test_exclude_results_from_search[search_results3-exclude_results3-exp_res3] PASSED [100%] ==================================== ERRORS ==================================== ______________ ERROR at setup of test_load_chrome_database[True] _______________ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, > encode_chunked=req.has_header('Transfer-encoding')) /usr/lib64/python3.6/urllib/request.py:1318: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} def request(self, method, url, body=None, headers={}, *, encode_chunked=False): """Send a complete request to the server.""" > self._send_request(method, url, body, headers, encode_chunked) /usr/lib64/python3.6/http/client.py:1239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} encode_chunked = False def _send_request(self, method, url, body, headers, encode_chunked): # Honor explicitly requested Host: and Accept-Encoding: headers. header_names = frozenset(k.lower() for k in headers) skips = {} if 'host' in header_names: skips['skip_host'] = 1 if 'accept-encoding' in header_names: skips['skip_accept_encoding'] = 1 self.putrequest(method, url, **skips) # chunked encoding will happen if HTTP/1.1 is used and either # the caller passes encode_chunked=True or the following # conditions hold: # 1. content-length has not been explicitly set # 2. the body is a file or iterable, but not a str or bytes-like # 3. Transfer-Encoding has NOT been explicitly set by the caller if 'content-length' not in header_names: # only chunk body if not explicitly set for backwards # compatibility, assuming the client code is already handling the # chunking if 'transfer-encoding' not in header_names: # if content-length cannot be automatically determined, fall # back to chunked encoding encode_chunked = False content_length = self._get_content_length(body, method) if content_length is None: if body is not None: if self.debuglevel > 0: print('Unable to determine size of %r' % body) encode_chunked = True self.putheader('Transfer-Encoding', 'chunked') else: self.putheader('Content-Length', str(content_length)) else: encode_chunked = False for hdr, value in headers.items(): self.putheader(hdr, value) if isinstance(body, str): # RFC 2616 Section 3.7.1 says that text default has a # default charset of iso-8859-1. body = _encode(body, 'body') > self.endheaders(body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1285: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None def endheaders(self, message_body=None, *, encode_chunked=False): """Indicate that the last header line has been sent to the server. This method sends the request to the server. The optional message_body argument can be used to pass a message body associated with the request. """ if self.__state == _CS_REQ_STARTED: self.__state = _CS_REQ_SENT else: raise CannotSendHeader() > self._send_output(message_body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1234: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None, encode_chunked = False def _send_output(self, message_body=None, encode_chunked=False): """Send the currently buffered request and clear the buffer. Appends an extra \\r\\n to the buffer. A message_body may be specified, to be appended to the request. """ self._buffer.extend((b"", b"")) msg = b"\r\n".join(self._buffer) del self._buffer[:] > self.send(msg) /usr/lib64/python3.6/http/client.py:1026: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = data = b'GET /jarun/Buku/files/1319933/bookmarks.zip HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: github.com\r\nUser-Agent: Python-urllib/3.6\r\nConnection: close\r\n\r\n' def send(self, data): """Send `data' to the server. ``data`` can be a string object, a bytes object, an array object, a file-like object that supports a .read() method, or an iterable object. """ if self.sock is None: if self.auto_open: > self.connect() /usr/lib64/python3.6/http/client.py:964: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): "Connect to a host on a given (SSL) port." > super().connect() /usr/lib64/python3.6/http/client.py:1392: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): """Connect to the host and port specified in __init__.""" self.sock = self._create_connection( > (self.host,self.port), self.timeout, self.source_address) /usr/lib64/python3.6/http/client.py:936: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('github.com', 443), timeout = source_address = None def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, source_address=None): """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. A host of '' or port 0 tells the OS to use the default. """ host, port = address err = None > for res in getaddrinfo(host, port, 0, SOCK_STREAM): /usr/lib64/python3.6/socket.py:704: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 'github.com', port = 443, family = 0, type = proto = 0, flags = 0 def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): """Resolve host and port into list of address info entries. Translate the host/port argument into a sequence of 5-tuples that contain all the necessary arguments for creating a socket connected to that service. host is a domain name, a string representation of an IPv4/v6 address or None. port is a string service name such as 'http', a numeric port number or None. By passing None as the value of host and port, you can pass NULL to the underlying C API. The family, type and proto arguments can be optionally specified in order to narrow the list of addresses returned. Passing zero as a value for each of these arguments selects the full range of results. """ # We override this function since we want to translate the numeric family # and socket type values to enum constants. addrlist = [] > for res in _socket.getaddrinfo(host, port, family, type, proto, flags): E socket.gaierror: [Errno -3] Temporary failure in name resolution /usr/lib64/python3.6/socket.py:745: gaierror During handling of the above exception, another exception occurred: tmpdir = local('/var/tmp/portage/www-misc/buku-3.7/temp/pytest-of-portage/pytest-0/test_load_chrome_database_True0') @pytest.fixture() def bookmark_folder(tmpdir): # database zip_url = 'https://github.com/jarun/Buku/files/1319933/bookmarks.zip' tmp_zip = tmpdir.join('bookmarks.zip') > extract_all_from_zip_url(zip_url, tmp_zip, tmpdir) tests/test_bukuDb.py:1242: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_bukuDb.py:1365: in extract_all_from_zip_url with urllib.request.urlopen(zip_url) as response, open(tmp_zip.strpath, 'wb') as out_file: /usr/lib64/python3.6/urllib/request.py:223: in urlopen return opener.open(url, data, timeout) /usr/lib64/python3.6/urllib/request.py:526: in open response = self._open(req, data) /usr/lib64/python3.6/urllib/request.py:544: in _open '_open', req) /usr/lib64/python3.6/urllib/request.py:504: in _call_chain result = func(*args) /usr/lib64/python3.6/urllib/request.py:1361: in https_open context=self._context, check_hostname=self._check_hostname) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, encode_chunked=req.has_header('Transfer-encoding')) except OSError as err: # timeout error > raise URLError(err) E urllib.error.URLError: /usr/lib64/python3.6/urllib/request.py:1320: URLError ______________ ERROR at setup of test_load_chrome_database[False] ______________ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, > encode_chunked=req.has_header('Transfer-encoding')) /usr/lib64/python3.6/urllib/request.py:1318: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} def request(self, method, url, body=None, headers={}, *, encode_chunked=False): """Send a complete request to the server.""" > self._send_request(method, url, body, headers, encode_chunked) /usr/lib64/python3.6/http/client.py:1239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} encode_chunked = False def _send_request(self, method, url, body, headers, encode_chunked): # Honor explicitly requested Host: and Accept-Encoding: headers. header_names = frozenset(k.lower() for k in headers) skips = {} if 'host' in header_names: skips['skip_host'] = 1 if 'accept-encoding' in header_names: skips['skip_accept_encoding'] = 1 self.putrequest(method, url, **skips) # chunked encoding will happen if HTTP/1.1 is used and either # the caller passes encode_chunked=True or the following # conditions hold: # 1. content-length has not been explicitly set # 2. the body is a file or iterable, but not a str or bytes-like # 3. Transfer-Encoding has NOT been explicitly set by the caller if 'content-length' not in header_names: # only chunk body if not explicitly set for backwards # compatibility, assuming the client code is already handling the # chunking if 'transfer-encoding' not in header_names: # if content-length cannot be automatically determined, fall # back to chunked encoding encode_chunked = False content_length = self._get_content_length(body, method) if content_length is None: if body is not None: if self.debuglevel > 0: print('Unable to determine size of %r' % body) encode_chunked = True self.putheader('Transfer-Encoding', 'chunked') else: self.putheader('Content-Length', str(content_length)) else: encode_chunked = False for hdr, value in headers.items(): self.putheader(hdr, value) if isinstance(body, str): # RFC 2616 Section 3.7.1 says that text default has a # default charset of iso-8859-1. body = _encode(body, 'body') > self.endheaders(body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1285: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None def endheaders(self, message_body=None, *, encode_chunked=False): """Indicate that the last header line has been sent to the server. This method sends the request to the server. The optional message_body argument can be used to pass a message body associated with the request. """ if self.__state == _CS_REQ_STARTED: self.__state = _CS_REQ_SENT else: raise CannotSendHeader() > self._send_output(message_body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1234: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None, encode_chunked = False def _send_output(self, message_body=None, encode_chunked=False): """Send the currently buffered request and clear the buffer. Appends an extra \\r\\n to the buffer. A message_body may be specified, to be appended to the request. """ self._buffer.extend((b"", b"")) msg = b"\r\n".join(self._buffer) del self._buffer[:] > self.send(msg) /usr/lib64/python3.6/http/client.py:1026: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = data = b'GET /jarun/Buku/files/1319933/bookmarks.zip HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: github.com\r\nUser-Agent: Python-urllib/3.6\r\nConnection: close\r\n\r\n' def send(self, data): """Send `data' to the server. ``data`` can be a string object, a bytes object, an array object, a file-like object that supports a .read() method, or an iterable object. """ if self.sock is None: if self.auto_open: > self.connect() /usr/lib64/python3.6/http/client.py:964: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): "Connect to a host on a given (SSL) port." > super().connect() /usr/lib64/python3.6/http/client.py:1392: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): """Connect to the host and port specified in __init__.""" self.sock = self._create_connection( > (self.host,self.port), self.timeout, self.source_address) /usr/lib64/python3.6/http/client.py:936: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('github.com', 443), timeout = source_address = None def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, source_address=None): """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. A host of '' or port 0 tells the OS to use the default. """ host, port = address err = None > for res in getaddrinfo(host, port, 0, SOCK_STREAM): /usr/lib64/python3.6/socket.py:704: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 'github.com', port = 443, family = 0, type = proto = 0, flags = 0 def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): """Resolve host and port into list of address info entries. Translate the host/port argument into a sequence of 5-tuples that contain all the necessary arguments for creating a socket connected to that service. host is a domain name, a string representation of an IPv4/v6 address or None. port is a string service name such as 'http', a numeric port number or None. By passing None as the value of host and port, you can pass NULL to the underlying C API. The family, type and proto arguments can be optionally specified in order to narrow the list of addresses returned. Passing zero as a value for each of these arguments selects the full range of results. """ # We override this function since we want to translate the numeric family # and socket type values to enum constants. addrlist = [] > for res in _socket.getaddrinfo(host, port, family, type, proto, flags): E socket.gaierror: [Errno -3] Temporary failure in name resolution /usr/lib64/python3.6/socket.py:745: gaierror During handling of the above exception, another exception occurred: tmpdir = local('/var/tmp/portage/www-misc/buku-3.7/temp/pytest-of-portage/pytest-0/test_load_chrome_database_Fals0') @pytest.fixture() def bookmark_folder(tmpdir): # database zip_url = 'https://github.com/jarun/Buku/files/1319933/bookmarks.zip' tmp_zip = tmpdir.join('bookmarks.zip') > extract_all_from_zip_url(zip_url, tmp_zip, tmpdir) tests/test_bukuDb.py:1242: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_bukuDb.py:1365: in extract_all_from_zip_url with urllib.request.urlopen(zip_url) as response, open(tmp_zip.strpath, 'wb') as out_file: /usr/lib64/python3.6/urllib/request.py:223: in urlopen return opener.open(url, data, timeout) /usr/lib64/python3.6/urllib/request.py:526: in open response = self._open(req, data) /usr/lib64/python3.6/urllib/request.py:544: in _open '_open', req) /usr/lib64/python3.6/urllib/request.py:504: in _call_chain result = func(*args) /usr/lib64/python3.6/urllib/request.py:1361: in https_open context=self._context, check_hostname=self._check_hostname) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, encode_chunked=req.has_header('Transfer-encoding')) except OSError as err: # timeout error > raise URLError(err) E urllib.error.URLError: /usr/lib64/python3.6/urllib/request.py:1320: URLError ______________ ERROR at setup of test_load_firefox_database[True] ______________ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, > encode_chunked=req.has_header('Transfer-encoding')) /usr/lib64/python3.6/urllib/request.py:1318: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} def request(self, method, url, body=None, headers={}, *, encode_chunked=False): """Send a complete request to the server.""" > self._send_request(method, url, body, headers, encode_chunked) /usr/lib64/python3.6/http/client.py:1239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} encode_chunked = False def _send_request(self, method, url, body, headers, encode_chunked): # Honor explicitly requested Host: and Accept-Encoding: headers. header_names = frozenset(k.lower() for k in headers) skips = {} if 'host' in header_names: skips['skip_host'] = 1 if 'accept-encoding' in header_names: skips['skip_accept_encoding'] = 1 self.putrequest(method, url, **skips) # chunked encoding will happen if HTTP/1.1 is used and either # the caller passes encode_chunked=True or the following # conditions hold: # 1. content-length has not been explicitly set # 2. the body is a file or iterable, but not a str or bytes-like # 3. Transfer-Encoding has NOT been explicitly set by the caller if 'content-length' not in header_names: # only chunk body if not explicitly set for backwards # compatibility, assuming the client code is already handling the # chunking if 'transfer-encoding' not in header_names: # if content-length cannot be automatically determined, fall # back to chunked encoding encode_chunked = False content_length = self._get_content_length(body, method) if content_length is None: if body is not None: if self.debuglevel > 0: print('Unable to determine size of %r' % body) encode_chunked = True self.putheader('Transfer-Encoding', 'chunked') else: self.putheader('Content-Length', str(content_length)) else: encode_chunked = False for hdr, value in headers.items(): self.putheader(hdr, value) if isinstance(body, str): # RFC 2616 Section 3.7.1 says that text default has a # default charset of iso-8859-1. body = _encode(body, 'body') > self.endheaders(body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1285: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None def endheaders(self, message_body=None, *, encode_chunked=False): """Indicate that the last header line has been sent to the server. This method sends the request to the server. The optional message_body argument can be used to pass a message body associated with the request. """ if self.__state == _CS_REQ_STARTED: self.__state = _CS_REQ_SENT else: raise CannotSendHeader() > self._send_output(message_body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1234: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None, encode_chunked = False def _send_output(self, message_body=None, encode_chunked=False): """Send the currently buffered request and clear the buffer. Appends an extra \\r\\n to the buffer. A message_body may be specified, to be appended to the request. """ self._buffer.extend((b"", b"")) msg = b"\r\n".join(self._buffer) del self._buffer[:] > self.send(msg) /usr/lib64/python3.6/http/client.py:1026: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = data = b'GET /jarun/Buku/files/1319933/bookmarks.zip HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: github.com\r\nUser-Agent: Python-urllib/3.6\r\nConnection: close\r\n\r\n' def send(self, data): """Send `data' to the server. ``data`` can be a string object, a bytes object, an array object, a file-like object that supports a .read() method, or an iterable object. """ if self.sock is None: if self.auto_open: > self.connect() /usr/lib64/python3.6/http/client.py:964: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): "Connect to a host on a given (SSL) port." > super().connect() /usr/lib64/python3.6/http/client.py:1392: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): """Connect to the host and port specified in __init__.""" self.sock = self._create_connection( > (self.host,self.port), self.timeout, self.source_address) /usr/lib64/python3.6/http/client.py:936: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('github.com', 443), timeout = source_address = None def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, source_address=None): """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. A host of '' or port 0 tells the OS to use the default. """ host, port = address err = None > for res in getaddrinfo(host, port, 0, SOCK_STREAM): /usr/lib64/python3.6/socket.py:704: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 'github.com', port = 443, family = 0, type = proto = 0, flags = 0 def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): """Resolve host and port into list of address info entries. Translate the host/port argument into a sequence of 5-tuples that contain all the necessary arguments for creating a socket connected to that service. host is a domain name, a string representation of an IPv4/v6 address or None. port is a string service name such as 'http', a numeric port number or None. By passing None as the value of host and port, you can pass NULL to the underlying C API. The family, type and proto arguments can be optionally specified in order to narrow the list of addresses returned. Passing zero as a value for each of these arguments selects the full range of results. """ # We override this function since we want to translate the numeric family # and socket type values to enum constants. addrlist = [] > for res in _socket.getaddrinfo(host, port, family, type, proto, flags): E socket.gaierror: [Errno -3] Temporary failure in name resolution /usr/lib64/python3.6/socket.py:745: gaierror During handling of the above exception, another exception occurred: tmpdir = local('/var/tmp/portage/www-misc/buku-3.7/temp/pytest-of-portage/pytest-0/test_load_firefox_database_Tru0') @pytest.fixture() def bookmark_folder(tmpdir): # database zip_url = 'https://github.com/jarun/Buku/files/1319933/bookmarks.zip' tmp_zip = tmpdir.join('bookmarks.zip') > extract_all_from_zip_url(zip_url, tmp_zip, tmpdir) tests/test_bukuDb.py:1242: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_bukuDb.py:1365: in extract_all_from_zip_url with urllib.request.urlopen(zip_url) as response, open(tmp_zip.strpath, 'wb') as out_file: /usr/lib64/python3.6/urllib/request.py:223: in urlopen return opener.open(url, data, timeout) /usr/lib64/python3.6/urllib/request.py:526: in open response = self._open(req, data) /usr/lib64/python3.6/urllib/request.py:544: in _open '_open', req) /usr/lib64/python3.6/urllib/request.py:504: in _call_chain result = func(*args) /usr/lib64/python3.6/urllib/request.py:1361: in https_open context=self._context, check_hostname=self._check_hostname) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, encode_chunked=req.has_header('Transfer-encoding')) except OSError as err: # timeout error > raise URLError(err) E urllib.error.URLError: /usr/lib64/python3.6/urllib/request.py:1320: URLError _____________ ERROR at setup of test_load_firefox_database[False] ______________ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, > encode_chunked=req.has_header('Transfer-encoding')) /usr/lib64/python3.6/urllib/request.py:1318: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} def request(self, method, url, body=None, headers={}, *, encode_chunked=False): """Send a complete request to the server.""" > self._send_request(method, url, body, headers, encode_chunked) /usr/lib64/python3.6/http/client.py:1239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET' url = '/jarun/Buku/files/1319933/bookmarks.zip', body = None headers = {'Connection': 'close', 'Host': 'github.com', 'User-Agent': 'Python-urllib/3.6'} encode_chunked = False def _send_request(self, method, url, body, headers, encode_chunked): # Honor explicitly requested Host: and Accept-Encoding: headers. header_names = frozenset(k.lower() for k in headers) skips = {} if 'host' in header_names: skips['skip_host'] = 1 if 'accept-encoding' in header_names: skips['skip_accept_encoding'] = 1 self.putrequest(method, url, **skips) # chunked encoding will happen if HTTP/1.1 is used and either # the caller passes encode_chunked=True or the following # conditions hold: # 1. content-length has not been explicitly set # 2. the body is a file or iterable, but not a str or bytes-like # 3. Transfer-Encoding has NOT been explicitly set by the caller if 'content-length' not in header_names: # only chunk body if not explicitly set for backwards # compatibility, assuming the client code is already handling the # chunking if 'transfer-encoding' not in header_names: # if content-length cannot be automatically determined, fall # back to chunked encoding encode_chunked = False content_length = self._get_content_length(body, method) if content_length is None: if body is not None: if self.debuglevel > 0: print('Unable to determine size of %r' % body) encode_chunked = True self.putheader('Transfer-Encoding', 'chunked') else: self.putheader('Content-Length', str(content_length)) else: encode_chunked = False for hdr, value in headers.items(): self.putheader(hdr, value) if isinstance(body, str): # RFC 2616 Section 3.7.1 says that text default has a # default charset of iso-8859-1. body = _encode(body, 'body') > self.endheaders(body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1285: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None def endheaders(self, message_body=None, *, encode_chunked=False): """Indicate that the last header line has been sent to the server. This method sends the request to the server. The optional message_body argument can be used to pass a message body associated with the request. """ if self.__state == _CS_REQ_STARTED: self.__state = _CS_REQ_SENT else: raise CannotSendHeader() > self._send_output(message_body, encode_chunked=encode_chunked) /usr/lib64/python3.6/http/client.py:1234: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = message_body = None, encode_chunked = False def _send_output(self, message_body=None, encode_chunked=False): """Send the currently buffered request and clear the buffer. Appends an extra \\r\\n to the buffer. A message_body may be specified, to be appended to the request. """ self._buffer.extend((b"", b"")) msg = b"\r\n".join(self._buffer) del self._buffer[:] > self.send(msg) /usr/lib64/python3.6/http/client.py:1026: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = data = b'GET /jarun/Buku/files/1319933/bookmarks.zip HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: github.com\r\nUser-Agent: Python-urllib/3.6\r\nConnection: close\r\n\r\n' def send(self, data): """Send `data' to the server. ``data`` can be a string object, a bytes object, an array object, a file-like object that supports a .read() method, or an iterable object. """ if self.sock is None: if self.auto_open: > self.connect() /usr/lib64/python3.6/http/client.py:964: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): "Connect to a host on a given (SSL) port." > super().connect() /usr/lib64/python3.6/http/client.py:1392: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): """Connect to the host and port specified in __init__.""" self.sock = self._create_connection( > (self.host,self.port), self.timeout, self.source_address) /usr/lib64/python3.6/http/client.py:936: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('github.com', 443), timeout = source_address = None def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, source_address=None): """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. A host of '' or port 0 tells the OS to use the default. """ host, port = address err = None > for res in getaddrinfo(host, port, 0, SOCK_STREAM): /usr/lib64/python3.6/socket.py:704: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 'github.com', port = 443, family = 0, type = proto = 0, flags = 0 def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): """Resolve host and port into list of address info entries. Translate the host/port argument into a sequence of 5-tuples that contain all the necessary arguments for creating a socket connected to that service. host is a domain name, a string representation of an IPv4/v6 address or None. port is a string service name such as 'http', a numeric port number or None. By passing None as the value of host and port, you can pass NULL to the underlying C API. The family, type and proto arguments can be optionally specified in order to narrow the list of addresses returned. Passing zero as a value for each of these arguments selects the full range of results. """ # We override this function since we want to translate the numeric family # and socket type values to enum constants. addrlist = [] > for res in _socket.getaddrinfo(host, port, family, type, proto, flags): E socket.gaierror: [Errno -3] Temporary failure in name resolution /usr/lib64/python3.6/socket.py:745: gaierror During handling of the above exception, another exception occurred: tmpdir = local('/var/tmp/portage/www-misc/buku-3.7/temp/pytest-of-portage/pytest-0/test_load_firefox_database_Fal0') @pytest.fixture() def bookmark_folder(tmpdir): # database zip_url = 'https://github.com/jarun/Buku/files/1319933/bookmarks.zip' tmp_zip = tmpdir.join('bookmarks.zip') > extract_all_from_zip_url(zip_url, tmp_zip, tmpdir) tests/test_bukuDb.py:1242: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_bukuDb.py:1365: in extract_all_from_zip_url with urllib.request.urlopen(zip_url) as response, open(tmp_zip.strpath, 'wb') as out_file: /usr/lib64/python3.6/urllib/request.py:223: in urlopen return opener.open(url, data, timeout) /usr/lib64/python3.6/urllib/request.py:526: in open response = self._open(req, data) /usr/lib64/python3.6/urllib/request.py:544: in _open '_open', req) /usr/lib64/python3.6/urllib/request.py:504: in _call_chain result = func(*args) /usr/lib64/python3.6/urllib/request.py:1361: in https_open context=self._context, check_hostname=self._check_hostname) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = http_class = req = http_conn_args = {'check_hostname': None, 'context': None}, host = 'github.com' h = def do_open(self, http_class, req, **http_conn_args): """Return an HTTPResponse object for the request, using http_class. http_class must implement the HTTPConnection API from http.client. """ host = req.host if not host: raise URLError('no host given') # will parse host:port h = http_class(host, timeout=req.timeout, **http_conn_args) h.set_debuglevel(self._debuglevel) headers = dict(req.unredirected_hdrs) headers.update(dict((k, v) for k, v in req.headers.items() if k not in headers)) # TODO(jhylton): Should this be redesigned to handle # persistent connections? # We want to make an HTTP/1.1 request, but the addinfourl # class isn't prepared to deal with a persistent connection. # It will try to read all remaining data from the socket, # which will block while the server waits for the next request. # So make sure the connection gets closed after the (only) # request. headers["Connection"] = "close" headers = dict((name.title(), val) for name, val in headers.items()) if req._tunnel_host: tunnel_headers = {} proxy_auth_hdr = "Proxy-Authorization" if proxy_auth_hdr in headers: tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr] # Proxy-Authorization should not be sent to origin # server. del headers[proxy_auth_hdr] h.set_tunnel(req._tunnel_host, headers=tunnel_headers) try: try: h.request(req.get_method(), req.selector, req.data, headers, encode_chunked=req.has_header('Transfer-encoding')) except OSError as err: # timeout error > raise URLError(err) E urllib.error.URLError: /usr/lib64/python3.6/urllib/request.py:1320: URLError =================================== FAILURES =================================== __________ test_network_handler_with_url[http://example.com-exp_res1] __________ url = 'http://example.com', exp_res = ('Example Domain', 0, 0) @pytest.mark.parametrize( 'url, exp_res', [ ['http://example.com.', ('', 0, 1)], ['http://example.com', ('Example Domain', 0, 0)], ['http://example.com/page1.txt', (('', 1, 0))], ['about:new_page', (('', 0, 1))], ['chrome://version/', (('', 0, 1))], ] ) def test_network_handler_with_url(url, exp_res): """test func.""" import buku import urllib3 buku.urllib3 = urllib3 buku.myproxy = None res = buku.network_handler(url) > assert res == exp_res E AssertionError: assert ('', 0, 0) == ('Example Domain', 0, 0) E At index 0 diff: '' != 'Example Domain' E Full diff: E - ('', 0, 0) E + ('Example Domain', 0, 0) tests/test_buku.py:565: AssertionError ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) __________________________ TestBukuDb.test_refreshdb ___________________________ self = @pytest.mark.slowtest def test_refreshdb(self): self.bdb.add_rec("https://www.google.com/ncr", "?") self.bdb.refreshdb(1, 1) from_db = self.bdb.get_rec_by_id(1) > self.assertEqual(from_db[2], "Google") E AssertionError: '?' != 'Google' E - ? E + Google tests/test_bukuDb.py:256: AssertionError ----------------------------- Captured stdout call ----------------------------- Index 1: No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /ncr connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /ncr connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /ncr buku.py 2920 ERROR network_handler(): HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: /ncr (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) __________________________ TestBukuDb.test_tnyfy_url ___________________________ self = def test_tnyfy_url(self): # shorten a well-known url shorturl = self.bdb.tnyfy_url(url='https://www.google.com', shorten=True) > self.assertEqual(shorturl, 'http://tny.im/yt') E AssertionError: None != 'http://tny.im/yt' tests/test_bukuDb.py:638: AssertionError ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /yourls-api.php?action=shorturl&format=simple&url=https%3A%2F%2Fwww.google.com connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /yourls-api.php?action=shorturl&format=simple&url=https%3A%2F%2Fwww.google.com connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /yourls-api.php?action=shorturl&format=simple&url=https%3A%2F%2Fwww.google.com buku.py 2373 ERROR HTTPSConnectionPool(host='tny.im', port=443): Max retries exceeded with url: /yourls-api.php?action=shorturl&format=simple&url=https%3A%2F%2Fwww.google.com (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) ___________________ test_add_rec_exec_arg[kwargs0-exp_arg0] ____________________ kwargs = {'url': 'example.com'} exp_arg = ('example.com', 'Example Domain', ',', '', 0) @pytest.mark.parametrize( "kwargs, exp_arg", [ [ {'url': 'example.com'}, ('example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com'}, ('http://example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com', 'immutable': 1}, ('http://example.com', 'Example Domain', ',', '', 1) ], [ {'url': 'http://example.com', 'desc': 'randomdesc'}, ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) ], [ {'url': 'http://example.com', 'title_in': 'randomtitle'}, ('http://example.com', 'randomtitle', ',', '', 0) ], [ {'url': 'http://example.com', 'tags_in': 'tag1'}, ('http://example.com', 'Example Domain', ',tag1', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1,'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], ] ) def test_add_rec_exec_arg(kwargs, exp_arg): """test func.""" bdb = BukuDb() bdb.cur = mock.Mock() bdb.get_rec_id = mock.Mock(return_value=-1) bdb.add_rec(**kwargs) > assert bdb.cur.execute.call_args[0][1] == exp_arg E AssertionError: assert ('example.com...', ',', '', 0) == ('example.com'...', ',', '', 0) E At index 1 diff: '' != 'Example Domain' E Full diff: E - ('example.com', '', ',', '', 0) E + ('example.com', 'Example Domain', ',', '', 0) E ? ++++++++++++++ tests/test_bukuDb.py:999: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) ___________________ test_add_rec_exec_arg[kwargs1-exp_arg1] ____________________ kwargs = {'url': 'http://example.com'} exp_arg = ('http://example.com', 'Example Domain', ',', '', 0) @pytest.mark.parametrize( "kwargs, exp_arg", [ [ {'url': 'example.com'}, ('example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com'}, ('http://example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com', 'immutable': 1}, ('http://example.com', 'Example Domain', ',', '', 1) ], [ {'url': 'http://example.com', 'desc': 'randomdesc'}, ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) ], [ {'url': 'http://example.com', 'title_in': 'randomtitle'}, ('http://example.com', 'randomtitle', ',', '', 0) ], [ {'url': 'http://example.com', 'tags_in': 'tag1'}, ('http://example.com', 'Example Domain', ',tag1', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1,'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], ] ) def test_add_rec_exec_arg(kwargs, exp_arg): """test func.""" bdb = BukuDb() bdb.cur = mock.Mock() bdb.get_rec_id = mock.Mock(return_value=-1) bdb.add_rec(**kwargs) > assert bdb.cur.execute.call_args[0][1] == exp_arg E AssertionError: assert ('http://exam...', ',', '', 0) == ('http://examp...', ',', '', 0) E At index 1 diff: '' != 'Example Domain' E Full diff: E - ('http://example.com', '', ',', '', 0) E + ('http://example.com', 'Example Domain', ',', '', 0) E ? ++++++++++++++ tests/test_bukuDb.py:999: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) ___________________ test_add_rec_exec_arg[kwargs2-exp_arg2] ____________________ kwargs = {'immutable': 1, 'url': 'http://example.com'} exp_arg = ('http://example.com', 'Example Domain', ',', '', 1) @pytest.mark.parametrize( "kwargs, exp_arg", [ [ {'url': 'example.com'}, ('example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com'}, ('http://example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com', 'immutable': 1}, ('http://example.com', 'Example Domain', ',', '', 1) ], [ {'url': 'http://example.com', 'desc': 'randomdesc'}, ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) ], [ {'url': 'http://example.com', 'title_in': 'randomtitle'}, ('http://example.com', 'randomtitle', ',', '', 0) ], [ {'url': 'http://example.com', 'tags_in': 'tag1'}, ('http://example.com', 'Example Domain', ',tag1', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1,'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], ] ) def test_add_rec_exec_arg(kwargs, exp_arg): """test func.""" bdb = BukuDb() bdb.cur = mock.Mock() bdb.get_rec_id = mock.Mock(return_value=-1) bdb.add_rec(**kwargs) > assert bdb.cur.execute.call_args[0][1] == exp_arg E AssertionError: assert ('http://exam...', ',', '', 1) == ('http://examp...', ',', '', 1) E At index 1 diff: '' != 'Example Domain' E Full diff: E - ('http://example.com', '', ',', '', 1) E + ('http://example.com', 'Example Domain', ',', '', 1) E ? ++++++++++++++ tests/test_bukuDb.py:999: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) ___________________ test_add_rec_exec_arg[kwargs3-exp_arg3] ____________________ kwargs = {'desc': 'randomdesc', 'url': 'http://example.com'} exp_arg = ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) @pytest.mark.parametrize( "kwargs, exp_arg", [ [ {'url': 'example.com'}, ('example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com'}, ('http://example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com', 'immutable': 1}, ('http://example.com', 'Example Domain', ',', '', 1) ], [ {'url': 'http://example.com', 'desc': 'randomdesc'}, ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) ], [ {'url': 'http://example.com', 'title_in': 'randomtitle'}, ('http://example.com', 'randomtitle', ',', '', 0) ], [ {'url': 'http://example.com', 'tags_in': 'tag1'}, ('http://example.com', 'Example Domain', ',tag1', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1,'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], ] ) def test_add_rec_exec_arg(kwargs, exp_arg): """test func.""" bdb = BukuDb() bdb.cur = mock.Mock() bdb.get_rec_id = mock.Mock(return_value=-1) bdb.add_rec(**kwargs) > assert bdb.cur.execute.call_args[0][1] == exp_arg E AssertionError: assert ('http://exam...andomdesc', 0) == ('http://examp...andomdesc', 0) E At index 1 diff: '' != 'Example Domain' E Full diff: E - ('http://example.com', '', ',', 'randomdesc', 0) E + ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) E ? ++++++++++++++ tests/test_bukuDb.py:999: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) ___________________ test_add_rec_exec_arg[kwargs5-exp_arg5] ____________________ kwargs = {'tags_in': 'tag1', 'url': 'http://example.com'} exp_arg = ('http://example.com', 'Example Domain', ',tag1', '', 0) @pytest.mark.parametrize( "kwargs, exp_arg", [ [ {'url': 'example.com'}, ('example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com'}, ('http://example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com', 'immutable': 1}, ('http://example.com', 'Example Domain', ',', '', 1) ], [ {'url': 'http://example.com', 'desc': 'randomdesc'}, ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) ], [ {'url': 'http://example.com', 'title_in': 'randomtitle'}, ('http://example.com', 'randomtitle', ',', '', 0) ], [ {'url': 'http://example.com', 'tags_in': 'tag1'}, ('http://example.com', 'Example Domain', ',tag1', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1,'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], ] ) def test_add_rec_exec_arg(kwargs, exp_arg): """test func.""" bdb = BukuDb() bdb.cur = mock.Mock() bdb.get_rec_id = mock.Mock(return_value=-1) bdb.add_rec(**kwargs) > assert bdb.cur.execute.call_args[0][1] == exp_arg E AssertionError: assert ('http://exam...,tag1', '', 0) == ('http://examp...,tag1', '', 0) E At index 1 diff: '' != 'Example Domain' E Full diff: E - ('http://example.com', '', ',tag1', '', 0) E + ('http://example.com', 'Example Domain', ',tag1', '', 0) E ? ++++++++++++++ tests/test_bukuDb.py:999: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) ___________________ test_add_rec_exec_arg[kwargs6-exp_arg6] ____________________ kwargs = {'tags_in': ',tag1', 'url': 'http://example.com'} exp_arg = ('http://example.com', 'Example Domain', ',tag1,', '', 0) @pytest.mark.parametrize( "kwargs, exp_arg", [ [ {'url': 'example.com'}, ('example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com'}, ('http://example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com', 'immutable': 1}, ('http://example.com', 'Example Domain', ',', '', 1) ], [ {'url': 'http://example.com', 'desc': 'randomdesc'}, ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) ], [ {'url': 'http://example.com', 'title_in': 'randomtitle'}, ('http://example.com', 'randomtitle', ',', '', 0) ], [ {'url': 'http://example.com', 'tags_in': 'tag1'}, ('http://example.com', 'Example Domain', ',tag1', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1,'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], ] ) def test_add_rec_exec_arg(kwargs, exp_arg): """test func.""" bdb = BukuDb() bdb.cur = mock.Mock() bdb.get_rec_id = mock.Mock(return_value=-1) bdb.add_rec(**kwargs) > assert bdb.cur.execute.call_args[0][1] == exp_arg E AssertionError: assert ('http://exam...tag1,', '', 0) == ('http://examp...tag1,', '', 0) E At index 1 diff: '' != 'Example Domain' E Full diff: E - ('http://example.com', '', ',tag1,', '', 0) E + ('http://example.com', 'Example Domain', ',tag1,', '', 0) E ? ++++++++++++++ tests/test_bukuDb.py:999: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) ___________________ test_add_rec_exec_arg[kwargs7-exp_arg7] ____________________ kwargs = {'tags_in': ',tag1,', 'url': 'http://example.com'} exp_arg = ('http://example.com', 'Example Domain', ',tag1,', '', 0) @pytest.mark.parametrize( "kwargs, exp_arg", [ [ {'url': 'example.com'}, ('example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com'}, ('http://example.com', 'Example Domain', ',', '', 0) ], [ {'url': 'http://example.com', 'immutable': 1}, ('http://example.com', 'Example Domain', ',', '', 1) ], [ {'url': 'http://example.com', 'desc': 'randomdesc'}, ('http://example.com', 'Example Domain', ',', 'randomdesc', 0) ], [ {'url': 'http://example.com', 'title_in': 'randomtitle'}, ('http://example.com', 'randomtitle', ',', '', 0) ], [ {'url': 'http://example.com', 'tags_in': 'tag1'}, ('http://example.com', 'Example Domain', ',tag1', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], [ {'url': 'http://example.com', 'tags_in': ',tag1,'}, ('http://example.com', 'Example Domain', ',tag1,', '', 0), ], ] ) def test_add_rec_exec_arg(kwargs, exp_arg): """test func.""" bdb = BukuDb() bdb.cur = mock.Mock() bdb.get_rec_id = mock.Mock(return_value=-1) bdb.add_rec(**kwargs) > assert bdb.cur.execute.call_args[0][1] == exp_arg E AssertionError: assert ('http://exam...tag1,', '', 0) == ('http://examp...tag1,', '', 0) E At index 1 diff: '' != 'Example Domain' E Full diff: E - ('http://example.com', '', ',tag1,', '', 0) E + ('http://example.com', 'Example Domain', ',tag1,', '', 0) E ? ++++++++++++++ tests/test_bukuDb.py:999: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) test_update_rec_exec_arg[kwargs0-UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?-exp_arguments0] caplog = <_pytest.logging.LogCaptureFixture object at 0x7f0290b0c080> kwargs = {'index': 1, 'url': 'http://example.com'} exp_query = 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?' exp_arguments = ['http://example.com', 'Example Domain', 1] @pytest.mark.parametrize( 'kwargs, exp_query, exp_arguments', [ [ {'index': 1, 'url': 'http://example.com'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'title_in': 'randomtitle'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomtitle', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': 'tag1'}, 'UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?', ['http://example.com', ',tag1', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '+,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '-,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'desc': 'randomdesc'}, 'UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomdesc', 'Example Domain', 1] ], ] ) def test_update_rec_exec_arg(caplog, kwargs, exp_query, exp_arguments): """test method.""" bdb = BukuDb() res = bdb.update_rec(**kwargs) assert res exp_log = 'query: "{}", args: {}'.format(exp_query, exp_arguments) try: > assert caplog.records[-1].getMessage() == exp_log E assert "network_hand...esolution',))" == 'query: "UPDAT... Domain\', 1]' E - network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) E + query: "UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?", args: ['http://example.com', 'Example Domain', 1] tests/test_bukuDb.py:1059: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) test_update_rec_exec_arg[kwargs2-UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?-exp_arguments2] caplog = <_pytest.logging.LogCaptureFixture object at 0x7f0293bb5160> kwargs = {'index': 1, 'tags_in': 'tag1', 'url': 'http://example.com'} exp_query = 'UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?' exp_arguments = ['http://example.com', ',tag1', 'Example Domain', 1] @pytest.mark.parametrize( 'kwargs, exp_query, exp_arguments', [ [ {'index': 1, 'url': 'http://example.com'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'title_in': 'randomtitle'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomtitle', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': 'tag1'}, 'UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?', ['http://example.com', ',tag1', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '+,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '-,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'desc': 'randomdesc'}, 'UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomdesc', 'Example Domain', 1] ], ] ) def test_update_rec_exec_arg(caplog, kwargs, exp_query, exp_arguments): """test method.""" bdb = BukuDb() res = bdb.update_rec(**kwargs) assert res exp_log = 'query: "{}", args: {}'.format(exp_query, exp_arguments) try: > assert caplog.records[-1].getMessage() == exp_log E assert "network_hand...esolution',))" == 'query: "UPDAT... Domain\', 1]' E - network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) E + query: "UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?", args: ['http://example.com', ',tag1', 'Example Domain', 1] tests/test_bukuDb.py:1059: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) test_update_rec_exec_arg[kwargs3-UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?-exp_arguments3] caplog = <_pytest.logging.LogCaptureFixture object at 0x7f0293bd6438> kwargs = {'index': 1, 'tags_in': '+,tag1', 'url': 'http://example.com'} exp_query = 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?' exp_arguments = ['http://example.com', 'Example Domain', 1] @pytest.mark.parametrize( 'kwargs, exp_query, exp_arguments', [ [ {'index': 1, 'url': 'http://example.com'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'title_in': 'randomtitle'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomtitle', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': 'tag1'}, 'UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?', ['http://example.com', ',tag1', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '+,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '-,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'desc': 'randomdesc'}, 'UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomdesc', 'Example Domain', 1] ], ] ) def test_update_rec_exec_arg(caplog, kwargs, exp_query, exp_arguments): """test method.""" bdb = BukuDb() res = bdb.update_rec(**kwargs) assert res exp_log = 'query: "{}", args: {}'.format(exp_query, exp_arguments) try: > assert caplog.records[-1].getMessage() == exp_log E assert "network_hand...esolution',))" == 'query: "UPDAT... Domain\', 1]' E - network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) E + query: "UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?", args: ['http://example.com', 'Example Domain', 1] tests/test_bukuDb.py:1059: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) test_update_rec_exec_arg[kwargs4-UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?-exp_arguments4] caplog = <_pytest.logging.LogCaptureFixture object at 0x7f0293bf4898> kwargs = {'index': 1, 'tags_in': '-,tag1', 'url': 'http://example.com'} exp_query = 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?' exp_arguments = ['http://example.com', 'Example Domain', 1] @pytest.mark.parametrize( 'kwargs, exp_query, exp_arguments', [ [ {'index': 1, 'url': 'http://example.com'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'title_in': 'randomtitle'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomtitle', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': 'tag1'}, 'UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?', ['http://example.com', ',tag1', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '+,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '-,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'desc': 'randomdesc'}, 'UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomdesc', 'Example Domain', 1] ], ] ) def test_update_rec_exec_arg(caplog, kwargs, exp_query, exp_arguments): """test method.""" bdb = BukuDb() res = bdb.update_rec(**kwargs) assert res exp_log = 'query: "{}", args: {}'.format(exp_query, exp_arguments) try: > assert caplog.records[-1].getMessage() == exp_log E assert "network_hand...esolution',))" == 'query: "UPDAT... Domain\', 1]' E - network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) E + query: "UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?", args: ['http://example.com', 'Example Domain', 1] tests/test_bukuDb.py:1059: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) test_update_rec_exec_arg[kwargs5-UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?-exp_arguments5] caplog = <_pytest.logging.LogCaptureFixture object at 0x7f0293cd5e80> kwargs = {'desc': 'randomdesc', 'index': 1, 'url': 'http://example.com'} exp_query = 'UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?' exp_arguments = ['http://example.com', 'randomdesc', 'Example Domain', 1] @pytest.mark.parametrize( 'kwargs, exp_query, exp_arguments', [ [ {'index': 1, 'url': 'http://example.com'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'title_in': 'randomtitle'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomtitle', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': 'tag1'}, 'UPDATE bookmarks SET URL = ?, tags = ?, metadata = ? WHERE id = ?', ['http://example.com', ',tag1', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '+,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'tags_in': '-,tag1'}, 'UPDATE bookmarks SET URL = ?, metadata = ? WHERE id = ?', ['http://example.com', 'Example Domain', 1] ], [ {'index': 1, 'url': 'http://example.com', 'desc': 'randomdesc'}, 'UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?', ['http://example.com', 'randomdesc', 'Example Domain', 1] ], ] ) def test_update_rec_exec_arg(caplog, kwargs, exp_query, exp_arguments): """test method.""" bdb = BukuDb() res = bdb.update_rec(**kwargs) assert res exp_log = 'query: "{}", args: {}'.format(exp_query, exp_arguments) try: > assert caplog.records[-1].getMessage() == exp_log E assert "network_hand...esolution',))" == 'query: "UPDAT... Domain\', 1]' E - network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) E + query: "UPDATE bookmarks SET URL = ?, desc = ?, metadata = ? WHERE id = ?", args: ['http://example.com', 'randomdesc', 'Example Domain', 1] tests/test_bukuDb.py:1059: AssertionError ----------------------------- Captured stdout call ----------------------------- No title ------------------------------ Captured log call ------------------------------- connectionpool.py 662 WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / connectionpool.py 662 WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': / buku.py 2920 ERROR network_handler(): HTTPConnectionPool(host='example.com', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)) =============================== warnings summary =============================== tests/test_bukuDb.py:308 /var/tmp/portage/www-misc/buku-3.7/work/buku-3.7/tests/test_bukuDb.py:308: DeprecationWarning: invalid escape sequence \. url_search = re.match('https?://(.*)?\..*', bookmark[0]).group(1) -- Docs: https://docs.pytest.org/en/latest/warnings.html ==== 15 failed, 240 passed, 6 skipped, 1 warnings, 4 error in 9.62 seconds ===== * ERROR: www-misc/buku-3.7::gentoo failed (test phase): * (no error message) * * Call stack: * ebuild.sh, line 124: Called src_test * environment, line 2707: Called distutils-r1_src_test * environment, line 926: Called _distutils-r1_run_foreach_impl 'python_test' * environment, line 365: Called python_foreach_impl 'distutils-r1_run_phase' 'python_test' * environment, line 2232: Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' * environment, line 1597: Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' * environment, line 1595: Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test' * environment, line 577: Called distutils-r1_run_phase 'python_test' * environment, line 857: Called python_test * environment, line 2609: Called die * The specific snippet of code: * py.test -v tests/test_* || die * * If you need support, post the output of `emerge --info '=www-misc/buku-3.7::gentoo'`, * the complete build log and the output of `emerge -pqv '=www-misc/buku-3.7::gentoo'`. * The complete build log is located at '/var/log/portage/www-misc:buku-3.7:20190115-225525.log'. * For convenience, a symlink to the build log is located at '/var/tmp/portage/www-misc/buku-3.7/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/www-misc/buku-3.7/temp/environment'. * Working directory: '/var/tmp/portage/www-misc/buku-3.7/work/buku-3.7' * S: '/var/tmp/portage/www-misc/buku-3.7/work/buku-3.7'