Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing setuptools-build-hook Using setuptoolsBuildPhase Using setuptoolsShellHook Sourcing pip-install-hook Using pipInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-namespaces-hook Sourcing setuptools-check-hook Using setuptoolsCheckPhase Sourcing pytest-check-hook Using pytestCheckPhase Removing setuptoolsCheckPhase @nix { "action": "setPhase", "phase": "unpackPhase" } unpacking sources unpacking source archive /nix/store/jndlv70z4957bsvxzd3q65x3g9b51cx8-source source root is source setting SOURCE_DATE_EPOCH to timestamp 315619200 of file source/tox.ini @nix { "action": "setPhase", "phase": "patchPhase" } patching sources @nix { "action": "setPhase", "phase": "configurePhase" } configuring no configure script, doing nothing @nix { "action": "setPhase", "phase": "buildPhase" } building Executing setuptoolsBuildPhase running bdist_wheel The [wheel] section is deprecated. Use [bdist_wheel] instead. running build running build_py creating build creating build/lib creating build/lib/purl copying purl/__init__.py -> build/lib/purl copying purl/template.py -> build/lib/purl copying purl/url.py -> build/lib/purl running egg_info creating purl.egg-info writing purl.egg-info/PKG-INFO writing dependency_links to purl.egg-info/dependency_links.txt writing requirements to purl.egg-info/requires.txt writing top-level names to purl.egg-info/top_level.txt writing manifest file 'purl.egg-info/SOURCES.txt' reading manifest file 'purl.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' adding license file 'AUTHORS' writing manifest file 'purl.egg-info/SOURCES.txt' installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/purl copying build/lib/purl/__init__.py -> build/bdist.linux-x86_64/wheel/purl copying build/lib/purl/template.py -> build/bdist.linux-x86_64/wheel/purl copying build/lib/purl/url.py -> build/bdist.linux-x86_64/wheel/purl running install_egg_info Copying purl.egg-info to build/bdist.linux-x86_64/wheel/purl-1.6-py3.7.egg-info running install_scripts adding license file "LICENSE" (matched pattern "LICEN[CS]E*") adding license file "AUTHORS" (matched pattern "AUTHORS*") creating build/bdist.linux-x86_64/wheel/purl-1.6.dist-info/WHEEL creating 'dist/purl-1.6-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'purl/__init__.py' adding 'purl/template.py' adding 'purl/url.py' adding 'purl-1.6.dist-info/AUTHORS' adding 'purl-1.6.dist-info/LICENSE' adding 'purl-1.6.dist-info/METADATA' adding 'purl-1.6.dist-info/WHEEL' adding 'purl-1.6.dist-info/top_level.txt' adding 'purl-1.6.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Finished executing setuptoolsBuildPhase @nix { "action": "setPhase", "phase": "installPhase" } installing Executing pipInstallPhase /build/source/dist /build/source Processing ./purl-1.6-py2.py3-none-any.whl Requirement already satisfied: six in /nix/store/msvg5gfhdizybcv5cv3wjma5fsmc09ck-python3.7-six-1.16.0/lib/python3.7/site-packages (from purl==1.6) (1.16.0) Installing collected packages: purl Successfully installed purl-1.6 /build/source Finished executing pipInstallPhase @nix { "action": "setPhase", "phase": "fixupPhase" } post-installation fixup shrinking RPATHs of ELF executables and libraries in /nix/store/5ml6cg8cja2rlv1ny95mq49ygrhfwics-python3.7-purl-1.6 strip is /nix/store/fp2h123793bxln4cjxy0mz08sf4nx2m3-binutils-2.35.1/bin/strip stripping (with command strip and flags -S) in /nix/store/5ml6cg8cja2rlv1ny95mq49ygrhfwics-python3.7-purl-1.6/lib patching script interpreter paths in /nix/store/5ml6cg8cja2rlv1ny95mq49ygrhfwics-python3.7-purl-1.6 checking for references to /build/ in /nix/store/5ml6cg8cja2rlv1ny95mq49ygrhfwics-python3.7-purl-1.6... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir @nix { "action": "setPhase", "phase": "installCheckPhase" } running install tests no Makefile or custom installCheckPhase, doing nothing @nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" } pythonCatchConflictsPhase @nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" } pythonRemoveBinBytecodePhase @nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" } pythonImportsCheckPhase Executing pythonImportsCheckPhase @nix { "action": "setPhase", "phase": "pytestCheckPhase" } pytestCheckPhase Executing pytestCheckPhase ============================= test session starts ============================== platform linux -- Python 3.7.11, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- /nix/store/j2mj027fyzdhhppa8b99b5j3dvqrwxbg-python3-3.7.11/bin/python3.7 cachedir: .pytest_cache rootdir: /build/source, configfile: pytest.ini collecting ...  collected 171 items  README.rst::README.rst PASSED [ 0%] purl/url.py::purl.url.URL PASSED [ 1%] purl/url.py::purl.url.URL.add_path_segment PASSED [ 1%] tests/test_expansion.py::test_assert_expansion[{var}-fields0-value] PASSED [ 2%] tests/test_expansion.py::test_assert_expansion[{hello}-fields1-Hello%20World%21] PASSED [ 2%] tests/test_expansion.py::test_assert_expansion[{+var}-fields2-value] PASSED [ 3%] tests/test_expansion.py::test_assert_expansion[{+hello}-fields3-Hello%20World!] PASSED [ 4%] tests/test_expansion.py::test_assert_expansion[{+path}/here-fields4-/foo/bar/here] PASSED [ 4%] tests/test_expansion.py::test_assert_expansion[here?ref={+path}-fields5-here?ref=/foo/bar] PASSED [ 5%] tests/test_expansion.py::test_assert_expansion[X{#var}-fields6-X#value] PASSED [ 5%] tests/test_expansion.py::test_assert_expansion[X{#hello}-fields7-X#Hello%20World!] PASSED [ 6%] tests/test_expansion.py::test_assert_expansion[map?{x,y}-fields8-map?1024,768] PASSED [ 7%] tests/test_expansion.py::test_assert_expansion[{x,hello,y}-fields9-1024,Hello%20World%21,768] PASSED [ 7%] tests/test_expansion.py::test_assert_expansion[{+x,hello,y}-fields10-1024,Hello%20World!,768] PASSED [ 8%] tests/test_expansion.py::test_assert_expansion[{+path,x}/here-fields11-/foo/bar,1024/here] PASSED [ 8%] tests/test_expansion.py::test_assert_expansion[{#x,hello,y}-fields12-#1024,Hello%20World!,768] PASSED [ 9%] tests/test_expansion.py::test_assert_expansion[{#path,x}/here-fields13-#/foo/bar,1024/here] PASSED [ 9%] tests/test_expansion.py::test_assert_expansion[X{.var}-fields14-X.value] PASSED [ 10%] tests/test_expansion.py::test_assert_expansion[X{.x,y}-fields15-X.1024.768] PASSED [ 11%] tests/test_expansion.py::test_assert_expansion[{/var}-fields16-/value] PASSED [ 11%] tests/test_expansion.py::test_assert_expansion[{/nokey}-fields17-] PASSED [ 12%] tests/test_expansion.py::test_assert_expansion[{/var,x}/here-fields18-/value/1024/here] PASSED [ 12%] tests/test_expansion.py::test_assert_expansion[{;x,y}-fields19-;x=1024;y=768] PASSED [ 13%] tests/test_expansion.py::test_assert_expansion[{;x,y,empty}-fields20-;x=1024;y=768;empty] PASSED [ 14%] tests/test_expansion.py::test_assert_expansion[{?x,y}-fields21-?x=1024&y=768] PASSED [ 14%] tests/test_expansion.py::test_assert_expansion[{?x,y,empty}-fields22-?x=1024&y=768&empty=] PASSED [ 15%] tests/test_expansion.py::test_assert_expansion[?fixed=yes{&x}-fields23-?fixed=yes&x=1024] PASSED [ 15%] tests/test_expansion.py::test_assert_expansion[{&x,y,empty}-fields24-&x=1024&y=768&empty=] PASSED [ 16%] tests/test_expansion.py::test_assert_expansion[{var:3}-fields25-val] PASSED [ 16%] tests/test_expansion.py::test_assert_expansion[{var:30}-fields26-value] PASSED [ 17%] tests/test_expansion.py::test_assert_expansion[{list}-fields27-red,green,blue] PASSED [ 18%] tests/test_expansion.py::test_assert_expansion[{list*}-fields28-red,green,blue] PASSED [ 18%] tests/test_expansion.py::test_assert_expansion[{keys}-fields29-semi,%3B,dot,.,comma,%2C] PASSED [ 19%] tests/test_expansion.py::test_assert_expansion[{keys*}-fields30-semi=%3B,dot=.,comma=%2C] PASSED [ 19%] tests/test_expansion.py::test_assert_expansion[{+path:6}/here-fields31-/foo/b/here] PASSED [ 20%] tests/test_expansion.py::test_assert_expansion[{+list}-fields32-red,green,blue] PASSED [ 21%] tests/test_expansion.py::test_assert_expansion[{+list*}-fields33-red,green,blue] PASSED [ 21%] tests/test_expansion.py::test_assert_expansion[{+keys}-fields34-semi,;,dot,.,comma,,] PASSED [ 22%] tests/test_expansion.py::test_assert_expansion[{+keys*}-fields35-semi=;,dot=.,comma=,] PASSED [ 22%] tests/test_expansion.py::test_assert_expansion[{#path:6}/here-fields36-#/foo/b/here] PASSED [ 23%] tests/test_expansion.py::test_assert_expansion[{#list}-fields37-#red,green,blue] PASSED [ 23%] tests/test_expansion.py::test_assert_expansion[{#list*}-fields38-#red,green,blue] PASSED [ 24%] tests/test_expansion.py::test_assert_expansion[{#keys}-fields39-#semi,;,dot,.,comma,,] PASSED [ 25%] tests/test_expansion.py::test_assert_expansion[{#keys*}-fields40-#semi=;,dot=.,comma=,] PASSED [ 25%] tests/test_expansion.py::test_assert_expansion[X{.var:3}-fields41-X.val] PASSED [ 26%] tests/test_expansion.py::test_assert_expansion[X{.list}-fields42-X.red,green,blue] PASSED [ 26%] tests/test_expansion.py::test_assert_expansion[X{.list*}-fields43-X.red.green.blue] PASSED [ 27%] tests/test_expansion.py::test_assert_expansion[X{.keys}-fields44-X.semi,%3B,dot,.,comma,%2C] PASSED [ 28%] tests/test_expansion.py::test_assert_expansion[X{.keys*}-fields45-X.semi=%3B.dot=..comma=%2C] PASSED [ 28%] tests/test_expansion.py::test_assert_expansion[{/var:1,var}-fields46-/v/value] PASSED [ 29%] tests/test_expansion.py::test_assert_expansion[{/list}-fields47-/red,green,blue] PASSED [ 29%] tests/test_expansion.py::test_assert_expansion[{/list*}-fields48-/red/green/blue] PASSED [ 30%] tests/test_expansion.py::test_assert_expansion[{/list*,path:4}-fields49-/red/green/blue/%2Ffoo] PASSED [ 30%] tests/test_expansion.py::test_assert_expansion[{/keys}-fields50-/semi,%3B,dot,.,comma,%2C] PASSED [ 31%] tests/test_expansion.py::test_assert_expansion[{/keys*}-fields51-/semi=%3B/dot=./comma=%2C] PASSED [ 32%] tests/test_expansion.py::test_assert_expansion[{;hello:5}-fields52-;hello=Hello] PASSED [ 32%] tests/test_expansion.py::test_assert_expansion[{;list}-fields53-;list=red,green,blue] PASSED [ 33%] tests/test_expansion.py::test_assert_expansion[{;list*}-fields54-;list=red;list=green;list=blue] PASSED [ 33%] tests/test_expansion.py::test_assert_expansion[{;keys}-fields55-;keys=semi,%3B,dot,.,comma,%2C] PASSED [ 34%] tests/test_expansion.py::test_assert_expansion[{;keys*}-fields56-;semi=%3B;dot=.;comma=%2C] PASSED [ 35%] tests/test_expansion.py::test_assert_expansion[{?var:3}-fields57-?var=val] PASSED [ 35%] tests/test_expansion.py::test_assert_expansion[{?list}-fields58-?list=red,green,blue] PASSED [ 36%] tests/test_expansion.py::test_assert_expansion[{?list*}-fields59-?list=red&list=green&list=blue] PASSED [ 36%] tests/test_expansion.py::test_assert_expansion[{?keys}-fields60-?keys=semi,%3B,dot,.,comma,%2C] PASSED [ 37%] tests/test_expansion.py::test_assert_expansion[{?keys*}-fields61-?semi=%3B&dot=.&comma=%2C] PASSED [ 38%] tests/test_expansion.py::test_assert_expansion[{&var:3}-fields62-&var=val] PASSED [ 38%] tests/test_expansion.py::test_assert_expansion[{&list}-fields63-&list=red,green,blue] PASSED [ 39%] tests/test_expansion.py::test_assert_expansion[{&list*}-fields64-&list=red&list=green&list=blue] PASSED [ 39%] tests/test_expansion.py::test_assert_expansion[{&keys}-fields65-&keys=semi,%3B,dot,.,comma,%2C] PASSED [ 40%] tests/test_expansion.py::test_assert_expansion[{&keys*}-fields66-&semi=%3B&dot=.&comma=%2C] PASSED [ 40%] tests/test_expansion.py::test_unicode PASSED [ 41%] tests/test_template.py::TestTemplate::test_basic_expansion PASSED [ 42%] tests/test_template.py::TestTemplate::test_github_api_expansion PASSED [ 42%] tests/test_url.py::TestConstructor::test_url_can_be_created_with_just_host PASSED [ 43%] tests/test_url.py::TestConstructor::test_url_can_be_created_with_host_and_schema PASSED [ 43%] tests/test_url.py::TestConstructor::test_url_can_be_created_with_host_and_post PASSED [ 44%] tests/test_url.py::TestConstructor::test_url_can_be_created_with_username_only PASSED [ 45%] tests/test_url.py::TestConstructor::test_no_args_to_constructor PASSED [ 45%] tests/test_url.py::TestConstructor::test_as_string PASSED [ 46%] tests/test_url.py::TestConstructor::test_full_url_can_be_used_as_first_param PASSED [ 46%] tests/test_url.py::TestConstructor::test_kwargs_take_priority_when_used_with_full_url PASSED [ 47%] tests/test_url.py::TestConstructor::test_creation_with_host_and_path PASSED [ 47%] tests/test_url.py::TestConstructor::test_creation_with_host_and_path_2 PASSED [ 48%] tests/test_url.py::TestMoreFactory::test_extracting_query_param PASSED [ 49%] tests/test_url.py::TestFactory::test_scheme PASSED [ 49%] tests/test_url.py::TestFactory::test_fragment PASSED [ 50%] tests/test_url.py::TestFactory::test_path PASSED [ 50%] tests/test_url.py::TestFactory::test_host PASSED [ 51%] tests/test_url.py::TestFactory::test_string_version PASSED [ 52%] tests/test_url.py::TestEdgeCaseExtraction::test_no_equals_sign_means_empty_string PASSED [ 52%] tests/test_url.py::TestEdgeCaseExtraction::test_list_extraction PASSED [ 53%] tests/test_url.py::TestEdgeCaseExtraction::test_username_extraction PASSED [ 53%] tests/test_url.py::TestEdgeCaseExtraction::test_username_in_unicode_repr PASSED [ 54%] tests/test_url.py::TestEdgeCaseExtraction::test_auth_in_netloc PASSED [ 54%] tests/test_url.py::TestEdgeCaseExtraction::test_auth_with_special_char PASSED [ 55%] tests/test_url.py::TestEdgeCaseExtraction::test_port_in_netloc PASSED [ 56%] tests/test_url.py::TestEdgeCaseExtraction::test_passwordless_netloc PASSED [ 56%] tests/test_url.py::TestEdgeCaseExtraction::test_unicode_username_and_password PASSED [ 57%] tests/test_url.py::TestEdgeCaseExtraction::test_unicode_username_only PASSED [ 57%] tests/test_url.py::TestEdgeCaseExtraction::test_port_for_https_url PASSED [ 58%] tests/test_url.py::TestSimpleExtraction::test_has_actual_param PASSED [ 59%] tests/test_url.py::TestSimpleExtraction::test_remove_query_param PASSED [ 59%] tests/test_url.py::TestSimpleExtraction::test_has_query_params PASSED [ 60%] tests/test_url.py::TestSimpleExtraction::test_has_query_params_negative PASSED [ 60%] tests/test_url.py::TestSimpleExtraction::test_netloc PASSED [ 61%] tests/test_url.py::TestSimpleExtraction::test_path_extraction PASSED [ 61%] tests/test_url.py::TestSimpleExtraction::test_port_defaults_to_none PASSED [ 62%] tests/test_url.py::TestSimpleExtraction::test_scheme PASSED [ 63%] tests/test_url.py::TestSimpleExtraction::test_host PASSED [ 63%] tests/test_url.py::TestSimpleExtraction::test_domain PASSED [ 64%] tests/test_url.py::TestSimpleExtraction::test_subdomains PASSED [ 64%] tests/test_url.py::TestSimpleExtraction::test_subdomain PASSED [ 65%] tests/test_url.py::TestSimpleExtraction::test_invalid_subdomain_raises_indexerror PASSED [ 66%] tests/test_url.py::TestSimpleExtraction::test_path PASSED [ 66%] tests/test_url.py::TestSimpleExtraction::test_query PASSED [ 67%] tests/test_url.py::TestSimpleExtraction::test_query_param_as_list PASSED [ 67%] tests/test_url.py::TestSimpleExtraction::test_query_params PASSED [ 68%] tests/test_url.py::TestSimpleExtraction::test_path_extraction_returns_none_if_index_too_large PASSED [ 69%] tests/test_url.py::TestSimpleExtraction::test_path_extraction_can_take_default_value PASSED [ 69%] tests/test_url.py::TestSimpleExtraction::test_parameter_extraction PASSED [ 70%] tests/test_url.py::TestSimpleExtraction::test_parameter_extraction_with_default PASSED [ 70%] tests/test_url.py::TestSimpleExtraction::test_parameter_extraction_is_none_if_not_found PASSED [ 71%] tests/test_url.py::TestSimpleExtraction::test_path_segments PASSED [ 71%] tests/test_url.py::TestSimpleExtraction::test_relative PASSED [ 72%] tests/test_url.py::TestNoTrailingSlash::test_path_extraction_without_trailing_slash PASSED [ 73%] tests/test_url.py::TestBuilder::test_setting_list_as_query_params PASSED [ 73%] tests/test_url.py::TestBuilder::test_add_path_segment PASSED [ 74%] tests/test_url.py::TestBuilder::test_setting_single_item_list_as_query_param PASSED [ 74%] tests/test_url.py::TestBuilder::test_setting_list_as_query_param PASSED [ 75%] tests/test_url.py::TestBuilder::test_build_relative_url PASSED [ 76%] tests/test_url.py::TestBuilder::test_build_relative_url_with_params PASSED [ 76%] tests/test_url.py::TestBuilder::test_build_with_path_segments PASSED [ 77%] tests/test_url.py::TestBuilder::test_set_fragment PASSED [ 77%] tests/test_url.py::TestBuilder::test_set_scheme PASSED [ 78%] tests/test_url.py::TestBuilder::test_set_host PASSED [ 78%] tests/test_url.py::TestBuilder::test_set_path PASSED [ 79%] tests/test_url.py::TestBuilder::test_set_path_with_special_chars PASSED [ 80%] tests/test_url.py::TestBuilder::test_set_query PASSED [ 80%] tests/test_url.py::TestBuilder::test_set_port PASSED [ 81%] tests/test_url.py::TestBuilder::test_set_path_segment PASSED [ 81%] tests/test_url.py::TestBuilder::test_set_query_param PASSED [ 82%] tests/test_url.py::TestBuilder::test_set_query_params PASSED [ 83%] tests/test_url.py::TestBuilder::test_set_subdomain PASSED [ 83%] tests/test_url.py::TestBuilder::test_set_subdomains PASSED [ 84%] tests/test_url.py::TestBuilder::test_remove_domain PASSED [ 84%] tests/test_url.py::TestBuilder::test_remove_port PASSED [ 85%] tests/test_url.py::TestMisc::test_url_can_be_used_as_key_in_dict PASSED [ 85%] tests/test_url.py::TestMisc::test_equality_comparison PASSED [ 86%] tests/test_url.py::TestMisc::test_negative_equality_comparison PASSED [ 87%] tests/test_url.py::TestMisc::test_urls_are_hashable PASSED [ 87%] tests/test_url.py::TestMisc::test_urls_can_be_pickled PASSED [ 88%] tests/test_url.py::TestMisc::test_urls_can_be_pickled_and_restored PASSED [ 88%] tests/test_url.py::TestQueryParamList::test_set_list PASSED [ 89%] tests/test_url.py::TestQueryParamList::test_remove_item_from_list PASSED [ 90%] tests/test_url.py::TestQueryParamList::test_append_to_existing_list PASSED [ 90%] tests/test_url.py::TestQueryParamList::test_append_to_nonexistant_list PASSED [ 91%] tests/test_url.py::TestUnicodeExtraction::test_get_query_param_ascii_url PASSED [ 91%] tests/test_url.py::TestUnicodeExtraction::test_get_query_param_unicode_url PASSED [ 92%] tests/test_url.py::TestUnicode::test_set_unicode_query_param_value PASSED [ 92%] tests/test_url.py::TestUnicode::test_set_bytestring_query_param_value PASSED [ 93%] tests/test_url.py::TestUnicode::test_set_unicode_query_param_key PASSED [ 94%] tests/test_url.py::TestUnicode::test_set_bytestring_query_param_key PASSED [ 94%] tests/test_url.py::TestUnicode::test_append_unicode_query_param PASSED [ 95%] tests/test_url.py::TestUnicode::test_append_bytestring_query_param PASSED [ 95%] tests/test_url.py::TestUnicode::test_set_unicode_query_params PASSED [ 96%] tests/test_url.py::TestUnicode::test_set_bytestring_query_params PASSED [ 97%] tests/test_url.py::TestUnicode::test_add_unicode_path_segment PASSED [ 97%] tests/test_url.py::TestUnicode::test_add_bytestring_path_segment PASSED [ 98%] tests/test_url.py::TestUnicode::test_add_unicode_fragment PASSED [ 98%] tests/test_utils.py::TestUnicodeHelper::test_convert_int_to_bytes PASSED [ 99%] tests/test_utils.py::TestUnicodeHelper::test_convert_int_to_unicode PASSED [100%] ============================= 171 passed in 0.52s ============================== Finished executing pytestCheckPhase @nix { "action": "setPhase", "phase": "pytestcachePhase" } pytestcachePhase