diff --git a/admin/requirements-testinfra.in b/admin/requirements-testinfra.in index 0d83263d48..cb1721d8c5 100644 --- a/admin/requirements-testinfra.in +++ b/admin/requirements-testinfra.in @@ -1,4 +1,4 @@ -pytest==3.2.0 -testinfra==3.2.0 -pytest-xdist==1.18.2 -paramiko==2.6.0 +pytest==6.1.1 +testinfra==5.3.1 +pytest-xdist==2.1.0 +paramiko==2.7.2 diff --git a/admin/requirements-testinfra.txt b/admin/requirements-testinfra.txt index e735ed96d5..87b0ae6c92 100644 --- a/admin/requirements-testinfra.txt +++ b/admin/requirements-testinfra.txt @@ -11,6 +11,10 @@ apipkg==1.5 \ --hash=sha256:37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6 \ --hash=sha256:58587dd4dc3daefad0487f6d9ae32b4542b185e1c36db6993290e7c41ca2b47c \ # via execnet +attrs==20.2.0 \ + --hash=sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594 \ + --hash=sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc \ + # via pytest bcrypt==3.2.0 \ --hash=sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29 \ --hash=sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7 \ @@ -86,6 +90,14 @@ execnet==1.7.1 \ --hash=sha256:cacb9df31c9680ec5f95553976c4da484d407e85e41c83cb812aa014f0eddc50 \ --hash=sha256:d4efd397930c46415f62f8a31388d6be4f27a91d7550eb79bc64a756e0056547 \ # via pytest-xdist +importlib-metadata==2.0.0 \ + --hash=sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da \ + --hash=sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3 \ + # via pluggy, pytest +iniconfig==1.1.1 \ + --hash=sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3 \ + --hash=sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32 \ + # via pytest jinja2==2.11.2 \ --hash=sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0 \ --hash=sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035 \ @@ -129,10 +141,18 @@ netaddr==0.8.0 \ --hash=sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac \ --hash=sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243 \ # via -r requirements-ansible.in -paramiko==2.6.0 \ - --hash=sha256:99f0179bdc176281d21961a003ffdb2ec369daac1a1007241f53374e376576cf \ - --hash=sha256:f4b2edfa0d226b70bd4ca31ea7e389325990283da23465d572ed1f70a7583041 \ +packaging==20.4 \ + --hash=sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8 \ + --hash=sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181 \ + # via pytest +paramiko==2.7.2 \ + --hash=sha256:4f3e316fef2ac628b05097a637af35685183111d4bc1b5979bd397c2ab7b5898 \ + --hash=sha256:7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035 \ # via -r requirements-testinfra.in +pluggy==0.13.1 \ + --hash=sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0 \ + --hash=sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d \ + # via pytest prompt_toolkit==2.0.9 \ --hash=sha256:11adf3389a996a6d45cc277580d0d53e8a5afd281d0c9ec71b28e6f121463780 \ --hash=sha256:2519ad1d8038fd5fc8e770362237ad0364d16a7650fb5724af6997ed5515e3c1 \ @@ -141,7 +161,7 @@ prompt_toolkit==2.0.9 \ py==1.9.0 \ --hash=sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2 \ --hash=sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342 \ - # via pytest + # via pytest, pytest-forked pycparser==2.20 \ --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 \ --hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705 \ @@ -166,13 +186,22 @@ pynacl==1.4.0 \ --hash=sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff \ --hash=sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80 \ # via paramiko -pytest-xdist==1.18.2 \ - --hash=sha256:10468377901b80255cf192c4603a94ffe8b1f071f5c912868da5f5cb91170dae \ +pyparsing==2.4.7 \ + --hash=sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1 \ + --hash=sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b \ + # via packaging +pytest-forked==1.3.0 \ + --hash=sha256:6aa9ac7e00ad1a539c41bec6d21011332de671e938c7637378ec9710204e37ca \ + --hash=sha256:dc4147784048e70ef5d437951728825a131b81714b398d5d52f17c7c144d8815 \ + # via pytest-xdist +pytest-xdist==2.1.0 \ + --hash=sha256:7c629016b3bb006b88ac68e2b31551e7becf173c76b977768848e2bbed594d90 \ + --hash=sha256:82d938f1a24186520e2d9d3a64ef7d9ac7ecdf1a0659e095d18e596b8cbd0672 \ # via -r requirements-testinfra.in -pytest==3.2.0 \ - --hash=sha256:0225cf10b9e173f84729d5f4648211458a222c6e53a77a85e104bc5f31c244ee \ - --hash=sha256:d994b4f28c6d449a467ad3d336544945a0dcf350e3b7b301219547ef5aa8125e \ - # via -r requirements-testinfra.in, pytest-xdist, testinfra +pytest==6.1.1 \ + --hash=sha256:7a8190790c17d79a11f847fba0b004ee9a8122582ebff4729a082c109e81a4c9 \ + --hash=sha256:8f593023c1a0f916110285b6efd7f99db07d59546e3d8c36fc60e2ab05d3be92 \ + # via -r requirements-testinfra.in, pytest-forked, pytest-xdist, testinfra pyyaml==5.3.1 \ --hash=sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97 \ --hash=sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76 \ @@ -189,18 +218,26 @@ pyyaml==5.3.1 \ six==1.15.0 \ --hash=sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259 \ --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced \ - # via -r requirements.in, bcrypt, cryptography, prompt-toolkit, pynacl, testinfra -testinfra==3.2.0 \ - --hash=sha256:16201d64659ec0c2d25f65d6ce1f5367668b7b4eb102450efd4f8983a399d7d0 \ - --hash=sha256:5cebf61fee13c2e83b5e177431e751e243fc779293377c5e0c3b43910bb7e870 \ + # via -r requirements.in, bcrypt, cryptography, packaging, prompt-toolkit, pynacl +testinfra==5.3.1 \ + --hash=sha256:9d3a01fb787253df76ac4ab46d18a84d4b01be877ed1b5812e590dcf480a627e \ + --hash=sha256:baf1d809ea2dc22c0cb5b9441bf4e17c1eb653e1ccc02cc63137d0ab467fa1de \ # via -r requirements-testinfra.in +toml==0.10.1 \ + --hash=sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f \ + --hash=sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88 \ + # via pytest wcwidth==0.2.5 \ --hash=sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784 \ --hash=sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83 \ # via prompt-toolkit +zipp==3.4.0 \ + --hash=sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108 \ + --hash=sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb \ + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: setuptools==50.3.0 \ --hash=sha256:39060a59d91cf5cf403fa3bacbb52df4205a8c3585e0b9ba4b30e0e19d4c4b18 \ --hash=sha256:c77b3920663a435c9450d9d971c48f5a7478fca8881b2cd2564e59f970f03536 \ - # via -r requirements.in, pytest + # via -r requirements.in diff --git a/molecule/ansible-config/molecule.yml b/molecule/ansible-config/molecule.yml index bca6324002..127a1996de 100644 --- a/molecule/ansible-config/molecule.yml +++ b/molecule/ansible-config/molecule.yml @@ -6,8 +6,8 @@ driver: login_cmd_template: 'docker exec -ti {instance} bash' ansible_connection_options: connection: local -lint: - name: yamllint +lint: | + yamllint platforms: - name: localhost provisioner: @@ -15,8 +15,8 @@ provisioner: playbooks: prepare: '' create: '' - lint: - name: ansible-lint + lint: | + ansible-lint config_options: defaults: callback_whitelist: "profile_tasks, timer" @@ -33,5 +33,5 @@ scenario: - verify verifier: name: testinfra - lint: - name: flake8 + lint: | + flake8 diff --git a/molecule/builder-focal/molecule.yml b/molecule/builder-focal/molecule.yml index 80809ce8b1..67b09aed58 100644 --- a/molecule/builder-focal/molecule.yml +++ b/molecule/builder-focal/molecule.yml @@ -1,8 +1,8 @@ --- driver: name: docker -lint: - name: yamllint +lint: | + yamllint platforms: - name: focal-sd-app groups: @@ -50,8 +50,8 @@ provisioner: ANSIBLE_CALLBACK_WHITELIST: skippy ANSIBLE_STDOUT_CALLBACK: skippy ANSIBLE_GATHER_TIMEOUT: "120" - lint: - name: ansible-lint + lint: | + ansible-lint playbooks: converge: playbook.yml scenario: @@ -77,5 +77,5 @@ verifier: SECUREDROP_PYTHON_VERSION: "3.8" # Reuse the same test suite for all packages directory: ../builder-xenial/tests/ - lint: - name: flake8 + lint: | + flake8 diff --git a/molecule/builder-xenial/molecule.yml b/molecule/builder-xenial/molecule.yml index 1a81064e2f..2d9d9a614b 100644 --- a/molecule/builder-xenial/molecule.yml +++ b/molecule/builder-xenial/molecule.yml @@ -1,8 +1,8 @@ --- driver: name: docker -lint: - name: yamllint +lint: | + yamllint platforms: - name: xenial-sd-app groups: @@ -48,8 +48,8 @@ provisioner: ANSIBLE_CALLBACK_WHITELIST: skippy ANSIBLE_STDOUT_CALLBACK: skippy ANSIBLE_GATHER_TIMEOUT: "120" - lint: - name: ansible-lint + lint: | + ansible-lint playbooks: converge: playbook.yml scenario: @@ -74,5 +74,5 @@ verifier: SECUREDROP_TARGET_PLATFORM: xenial SECUREDROP_PYTHON_VERSION: "3.5" directory: tests/ - lint: - name: flake8 + lint: | + flake8 diff --git a/molecule/builder-xenial/tests/conftest.py b/molecule/builder-xenial/tests/conftest.py index da01aa9600..680b00b2ed 100644 --- a/molecule/builder-xenial/tests/conftest.py +++ b/molecule/builder-xenial/tests/conftest.py @@ -1,22 +1,19 @@ """ -Import variables from vars.yml and inject into pytest namespace +Import variables from vars.yml and inject into testutils namespace """ import os import io import yaml +import testutils -def pytest_namespace(): - """ Return dict of vars imported as 'securedrop_test_vars' into pytest - global namespace - """ - filepath = os.path.join(os.path.dirname(__file__), "vars.yml") - with io.open(filepath, 'r') as f: - securedrop_test_vars = yaml.safe_load(f) +filepath = os.path.join(os.path.dirname(__file__), "vars.yml") +with io.open(filepath, 'r') as f: + securedrop_test_vars = yaml.safe_load(f) - # Tack on target OS for use in tests - securedrop_target_platform = os.environ.get("SECUREDROP_TARGET_PLATFORM") - securedrop_test_vars["securedrop_target_platform"] = securedrop_target_platform - # Wrapping the return value to accommodate for pytest namespacing - return dict(securedrop_test_vars=securedrop_test_vars) +# Tack on target OS for use in tests +securedrop_target_platform = os.environ.get("SECUREDROP_TARGET_PLATFORM") +securedrop_test_vars["securedrop_target_platform"] = securedrop_target_platform + +testutils.securedrop_test_vars = testutils.inject_vars(securedrop_test_vars) diff --git a/molecule/builder-xenial/tests/test_securedrop_deb_package.py b/molecule/builder-xenial/tests/test_securedrop_deb_package.py index 5b7d82e0bc..09787158eb 100644 --- a/molecule/builder-xenial/tests/test_securedrop_deb_package.py +++ b/molecule/builder-xenial/tests/test_securedrop_deb_package.py @@ -2,13 +2,14 @@ import os import re import tempfile +import testutils SECUREDROP_TARGET_PLATFORM = os.environ.get("SECUREDROP_TARGET_PLATFORM") testinfra_hosts = [ "docker://{}-sd-dpkg-verification".format(SECUREDROP_TARGET_PLATFORM) ] -securedrop_test_vars = pytest.securedrop_test_vars +securedrop_test_vars = testutils.securedrop_test_vars def extract_package_name_from_filepath(filepath): diff --git a/molecule/builder-xenial/tests/testutils.py b/molecule/builder-xenial/tests/testutils.py new file mode 100644 index 0000000000..b33283c88f --- /dev/null +++ b/molecule/builder-xenial/tests/testutils.py @@ -0,0 +1,13 @@ +class Myvalues: + def __init__(self): + pass + + +securedrop_test_vars = Myvalues() + + +def inject_vars(value): + res = Myvalues() + for key, value in value.items(): + setattr(res, key, value) + return res diff --git a/molecule/fetch-tor-packages/molecule.yml b/molecule/fetch-tor-packages/molecule.yml index 3199bbfcbb..0f75468efd 100644 --- a/molecule/fetch-tor-packages/molecule.yml +++ b/molecule/fetch-tor-packages/molecule.yml @@ -3,8 +3,8 @@ dependency: name: galaxy driver: name: docker -lint: - name: yamllint +lint: | + yamllint platforms: - name: tor-package-fetcher-xenial image: "quay.io/freedomofpress/sd-docker-builder-xenial" @@ -16,8 +16,8 @@ platforms: provisioner: name: ansible - lint: - name: ansible-lint + lint: | + ansible-lint config_options: defaults: interpreter_python: auto @@ -34,5 +34,5 @@ verifier: name: testinfra options: connection: docker - lint: - name: flake8 + lint: | + flake8 diff --git a/molecule/libvirt-staging-focal/create.yml b/molecule/libvirt-staging-focal/create.yml index ffe945c5c2..7e6b416f85 100644 --- a/molecule/libvirt-staging-focal/create.yml +++ b/molecule/libvirt-staging-focal/create.yml @@ -9,7 +9,7 @@ tasks: - name: Create molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" instance_interfaces: "{{ item.interfaces | default(omit) }}" instance_raw_config_args: "{{ item.instance_raw_config_args | default(omit) }}" diff --git a/molecule/libvirt-staging-focal/destroy.yml b/molecule/libvirt-staging-focal/destroy.yml index c287e47d88..3645c7c90f 100644 --- a/molecule/libvirt-staging-focal/destroy.yml +++ b/molecule/libvirt-staging-focal/destroy.yml @@ -10,7 +10,7 @@ molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}" tasks: - name: Destroy molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" platform_box: "{{ item.box }}" provider_name: "{{ molecule_yml.driver.provider.name }}" diff --git a/molecule/libvirt-staging-focal/molecule.yml b/molecule/libvirt-staging-focal/molecule.yml index f9c012cf01..29481add9b 100644 --- a/molecule/libvirt-staging-focal/molecule.yml +++ b/molecule/libvirt-staging-focal/molecule.yml @@ -3,8 +3,8 @@ driver: name: vagrant provider: name: libvirt -lint: - name: yamllint +lint: | + yamllint platforms: - name: app-staging @@ -41,8 +41,8 @@ platforms: provisioner: name: ansible - lint: - name: ansible-lint + lint: | + ansible-lint config_options: defaults: interpreter_python: auto @@ -65,9 +65,9 @@ scenario: - verify verifier: name: testinfra - lint: - name: flake8 - directory: ../testinfra/ + lint: | + flake8 + directory: ../testinfra options: n: auto v: 2 diff --git a/molecule/libvirt-staging-xenial/create.yml b/molecule/libvirt-staging-xenial/create.yml index ffe945c5c2..7e6b416f85 100644 --- a/molecule/libvirt-staging-xenial/create.yml +++ b/molecule/libvirt-staging-xenial/create.yml @@ -9,7 +9,7 @@ tasks: - name: Create molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" instance_interfaces: "{{ item.interfaces | default(omit) }}" instance_raw_config_args: "{{ item.instance_raw_config_args | default(omit) }}" diff --git a/molecule/libvirt-staging-xenial/destroy.yml b/molecule/libvirt-staging-xenial/destroy.yml index c287e47d88..3645c7c90f 100644 --- a/molecule/libvirt-staging-xenial/destroy.yml +++ b/molecule/libvirt-staging-xenial/destroy.yml @@ -10,7 +10,7 @@ molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}" tasks: - name: Destroy molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" platform_box: "{{ item.box }}" provider_name: "{{ molecule_yml.driver.provider.name }}" diff --git a/molecule/libvirt-staging-xenial/molecule.yml b/molecule/libvirt-staging-xenial/molecule.yml index 9e4aa92714..6ac6b01a00 100644 --- a/molecule/libvirt-staging-xenial/molecule.yml +++ b/molecule/libvirt-staging-xenial/molecule.yml @@ -3,8 +3,8 @@ driver: name: vagrant provider: name: libvirt -lint: - name: yamllint +lint: | + yamllint platforms: - name: app-staging @@ -41,8 +41,8 @@ platforms: provisioner: name: ansible - lint: - name: ansible-lint + lint: | + ansible-lint config_options: defaults: interpreter_python: auto @@ -65,8 +65,8 @@ scenario: - verify verifier: name: testinfra - lint: - name: flake8 + lint: | + flake8 directory: ../testinfra options: n: auto diff --git a/molecule/pytest.ini b/molecule/pytest.ini new file mode 100644 index 0000000000..1e5d156826 --- /dev/null +++ b/molecule/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +markers = + skip_in_prod: Skip these tests in Production servers diff --git a/molecule/qubes-staging-focal/molecule.yml b/molecule/qubes-staging-focal/molecule.yml index c1401105aa..5481e0950f 100644 --- a/molecule/qubes-staging-focal/molecule.yml +++ b/molecule/qubes-staging-focal/molecule.yml @@ -26,8 +26,8 @@ platforms: provisioner: name: ansible - lint: - name: ansible-lint + lint: | + ansible-lint config_options: defaults: callback_whitelist: "profile_tasks, timer" @@ -50,7 +50,7 @@ scenario: verifier: name: testinfra lint: - name: flake8 + flake8 directory: ../testinfra options: n: auto diff --git a/molecule/testinfra/app-code/test_haveged.py b/molecule/testinfra/app-code/test_haveged.py index b693820528..3195700240 100644 --- a/molecule/testinfra/app-code/test_haveged.py +++ b/molecule/testinfra/app-code/test_haveged.py @@ -1,6 +1,6 @@ -import pytest +import testutils -sdvars = pytest.securedrop_test_vars +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] diff --git a/molecule/testinfra/app-code/test_securedrop_app_code.py b/molecule/testinfra/app-code/test_securedrop_app_code.py index a6b0656d6d..d9ec00b5c3 100644 --- a/molecule/testinfra/app-code/test_securedrop_app_code.py +++ b/molecule/testinfra/app-code/test_securedrop_app_code.py @@ -1,7 +1,9 @@ import pytest -securedrop_test_vars = pytest.securedrop_test_vars +import testutils + +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.app_hostname] python_version = securedrop_test_vars.python_version diff --git a/molecule/testinfra/app-code/test_securedrop_rqrequeue.py b/molecule/testinfra/app-code/test_securedrop_rqrequeue.py index dbbb36fad5..fa07dc1b20 100644 --- a/molecule/testinfra/app-code/test_securedrop_rqrequeue.py +++ b/molecule/testinfra/app-code/test_securedrop_rqrequeue.py @@ -1,14 +1,13 @@ -import pytest +import testutils -sdvars = pytest.securedrop_test_vars -testinfra_hosts = [sdvars.app_hostname] +securedrop_test_vars = testutils.securedrop_test_vars +testinfra_hosts = [securedrop_test_vars.app_hostname] def test_securedrop_rqrequeue_service(host): """ Verify configuration of securedrop_rqrequeue systemd service. """ - securedrop_test_vars = pytest.securedrop_test_vars service_file = "/lib/systemd/system/securedrop_rqrequeue.service" expected_content = "\n".join([ "[Unit]", diff --git a/molecule/testinfra/app-code/test_securedrop_rqworker.py b/molecule/testinfra/app-code/test_securedrop_rqworker.py index 01ff07d398..fc347ab2bb 100644 --- a/molecule/testinfra/app-code/test_securedrop_rqworker.py +++ b/molecule/testinfra/app-code/test_securedrop_rqworker.py @@ -1,6 +1,6 @@ -import pytest +import testutils -sdvars = pytest.securedrop_test_vars +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] @@ -8,7 +8,7 @@ def test_securedrop_rqworker_service(host): """ Verify configuration of securedrop_rqworker systemd service. """ - securedrop_test_vars = pytest.securedrop_test_vars + securedrop_test_vars = sdvars service_file = "/lib/systemd/system/securedrop_rqworker.service" expected_content = "\n".join([ diff --git a/molecule/testinfra/app-code/test_securedrop_shredder_configuration.py b/molecule/testinfra/app-code/test_securedrop_shredder_configuration.py index ed709227be..fbb4d75c3a 100644 --- a/molecule/testinfra/app-code/test_securedrop_shredder_configuration.py +++ b/molecule/testinfra/app-code/test_securedrop_shredder_configuration.py @@ -1,6 +1,6 @@ -import pytest +import testutils -sdvars = pytest.securedrop_test_vars +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] @@ -8,7 +8,7 @@ def test_securedrop_shredder_service(host): """ Verify configuration of securedrop_shredder systemd service. """ - securedrop_test_vars = pytest.securedrop_test_vars + securedrop_test_vars = sdvars service_file = "/lib/systemd/system/securedrop_shredder.service" expected_content = "\n".join([ "[Unit]", diff --git a/molecule/testinfra/app-code/test_securedrop_source_deleter_configuration.py b/molecule/testinfra/app-code/test_securedrop_source_deleter_configuration.py index 82f1030892..7cfdcb3f86 100644 --- a/molecule/testinfra/app-code/test_securedrop_source_deleter_configuration.py +++ b/molecule/testinfra/app-code/test_securedrop_source_deleter_configuration.py @@ -1,14 +1,13 @@ -import pytest +import testutils -sdvars = pytest.securedrop_test_vars -testinfra_hosts = [sdvars.app_hostname] +securedrop_test_vars = testutils.securedrop_test_vars +testinfra_hosts = [securedrop_test_vars.app_hostname] def test_securedrop_source_deleter_service(host): """ Verify configuration of securedrop_source_deleter systemd service. """ - securedrop_test_vars = pytest.securedrop_test_vars service_file = "/lib/systemd/system/securedrop_source_deleter.service" expected_content = "\n".join([ "[Unit]", diff --git a/molecule/testinfra/app/apache/test_apache_journalist_interface.py b/molecule/testinfra/app/apache/test_apache_journalist_interface.py index e2d109572b..2a60da4865 100644 --- a/molecule/testinfra/app/apache/test_apache_journalist_interface.py +++ b/molecule/testinfra/app/apache/test_apache_journalist_interface.py @@ -1,8 +1,9 @@ import pytest import re +import testutils -securedrop_test_vars = pytest.securedrop_test_vars +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.app_hostname] # Setting once so it can be reused in multiple tests. diff --git a/molecule/testinfra/app/apache/test_apache_service.py b/molecule/testinfra/app/apache/test_apache_service.py index 0bd2628a5d..7f65598745 100644 --- a/molecule/testinfra/app/apache/test_apache_service.py +++ b/molecule/testinfra/app/apache/test_apache_service.py @@ -1,7 +1,8 @@ import pytest +import testutils -securedrop_test_vars = pytest.securedrop_test_vars +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.app_hostname] diff --git a/molecule/testinfra/app/apache/test_apache_source_interface.py b/molecule/testinfra/app/apache/test_apache_source_interface.py index fd460b7a15..6230ba271e 100644 --- a/molecule/testinfra/app/apache/test_apache_source_interface.py +++ b/molecule/testinfra/app/apache/test_apache_source_interface.py @@ -1,7 +1,9 @@ import pytest import re -securedrop_test_vars = pytest.securedrop_test_vars +import testutils + +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.app_hostname] diff --git a/molecule/testinfra/app/apache/test_apache_system_config.py b/molecule/testinfra/app/apache/test_apache_system_config.py index 0b363fc013..c8a7ee6471 100644 --- a/molecule/testinfra/app/apache/test_apache_system_config.py +++ b/molecule/testinfra/app/apache/test_apache_system_config.py @@ -1,7 +1,9 @@ import pytest import re -securedrop_test_vars = pytest.securedrop_test_vars +import testutils + +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.app_hostname] diff --git a/molecule/testinfra/app/test_app_network.py b/molecule/testinfra/app/test_app_network.py index e2fb69ce05..54bad13572 100644 --- a/molecule/testinfra/app/test_app_network.py +++ b/molecule/testinfra/app/test_app_network.py @@ -5,7 +5,9 @@ from jinja2 import Template -securedrop_test_vars = pytest.securedrop_test_vars +import testutils + +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.app_hostname] diff --git a/molecule/testinfra/app/test_apparmor.py b/molecule/testinfra/app/test_apparmor.py index 459d17dfa9..0a4c78b06b 100644 --- a/molecule/testinfra/app/test_apparmor.py +++ b/molecule/testinfra/app/test_apparmor.py @@ -1,7 +1,9 @@ import pytest -sdvars = pytest.securedrop_test_vars +import testutils + +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] diff --git a/molecule/testinfra/app/test_appenv.py b/molecule/testinfra/app/test_appenv.py index 7e01465b03..0cb4478bda 100644 --- a/molecule/testinfra/app/test_appenv.py +++ b/molecule/testinfra/app/test_appenv.py @@ -1,7 +1,9 @@ import os.path import pytest -sdvars = pytest.securedrop_test_vars +import testutils + +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] diff --git a/molecule/testinfra/app/test_ossec_agent.py b/molecule/testinfra/app/test_ossec_agent.py index 333ff562e0..e861e2f0cc 100644 --- a/molecule/testinfra/app/test_ossec_agent.py +++ b/molecule/testinfra/app/test_ossec_agent.py @@ -2,7 +2,9 @@ import re import pytest -sdvars = pytest.securedrop_test_vars +import testutils + +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] diff --git a/molecule/testinfra/app/test_paxctld.py b/molecule/testinfra/app/test_paxctld.py index 47ab9d5f6a..6bc210771f 100644 --- a/molecule/testinfra/app/test_paxctld.py +++ b/molecule/testinfra/app/test_paxctld.py @@ -1,8 +1,7 @@ -import pytest import re +import testutils - -securedrop_test_vars = pytest.securedrop_test_vars +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.app_hostname] diff --git a/molecule/testinfra/app/test_tor_config.py b/molecule/testinfra/app/test_tor_config.py index 1e8903057b..a3f769d476 100644 --- a/molecule/testinfra/app/test_tor_config.py +++ b/molecule/testinfra/app/test_tor_config.py @@ -1,7 +1,9 @@ import pytest import re -sdvars = pytest.securedrop_test_vars +import testutils + +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] diff --git a/molecule/testinfra/app/test_tor_hidden_services.py b/molecule/testinfra/app/test_tor_hidden_services.py index 1721903752..1b74e59800 100644 --- a/molecule/testinfra/app/test_tor_hidden_services.py +++ b/molecule/testinfra/app/test_tor_hidden_services.py @@ -1,8 +1,9 @@ import pytest import re +import testutils -sdvars = pytest.securedrop_test_vars +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname] # Prod Tor services may have unexpected configs diff --git a/molecule/testinfra/common/test_cron_apt.py b/molecule/testinfra/common/test_cron_apt.py index 6b767edaa9..cb83ecabc7 100644 --- a/molecule/testinfra/common/test_cron_apt.py +++ b/molecule/testinfra/common/test_cron_apt.py @@ -1,8 +1,9 @@ import pytest import re +import testutils -test_vars = pytest.securedrop_test_vars +test_vars = testutils.securedrop_test_vars testinfra_hosts = [test_vars.app_hostname, test_vars.monitor_hostname] diff --git a/molecule/testinfra/common/test_fpf_apt_repo.py b/molecule/testinfra/common/test_fpf_apt_repo.py index cbf7447cea..170831368e 100644 --- a/molecule/testinfra/common/test_fpf_apt_repo.py +++ b/molecule/testinfra/common/test_fpf_apt_repo.py @@ -2,7 +2,9 @@ import re -test_vars = pytest.securedrop_test_vars +import testutils + +test_vars = testutils.securedrop_test_vars testinfra_hosts = [test_vars.app_hostname, test_vars.monitor_hostname] diff --git a/molecule/testinfra/common/test_grsecurity.py b/molecule/testinfra/common/test_grsecurity.py index 3ac7544eb4..b0f2618c2e 100644 --- a/molecule/testinfra/common/test_grsecurity.py +++ b/molecule/testinfra/common/test_grsecurity.py @@ -1,8 +1,9 @@ import pytest import re +import testutils -sdvars = pytest.securedrop_test_vars +sdvars = testutils.securedrop_test_vars KERNEL_VERSION = sdvars.grsec_version testinfra_hosts = [sdvars.app_hostname, sdvars.monitor_hostname] diff --git a/molecule/testinfra/common/test_ip6tables.py b/molecule/testinfra/common/test_ip6tables.py index 29e1267270..8f7497731b 100644 --- a/molecule/testinfra/common/test_ip6tables.py +++ b/molecule/testinfra/common/test_ip6tables.py @@ -1,6 +1,6 @@ -import pytest +import testutils -test_vars = pytest.securedrop_test_vars +test_vars = testutils.securedrop_test_vars testinfra_hosts = [test_vars.app_hostname, test_vars.monitor_hostname] diff --git a/molecule/testinfra/common/test_platform.py b/molecule/testinfra/common/test_platform.py index 35cc13a821..97a53f12c5 100644 --- a/molecule/testinfra/common/test_platform.py +++ b/molecule/testinfra/common/test_platform.py @@ -1,6 +1,6 @@ -import pytest +import testutils -test_vars = pytest.securedrop_test_vars +test_vars = testutils.securedrop_test_vars testinfra_hosts = [test_vars.app_hostname, test_vars.monitor_hostname] # We expect Ubuntu Xenial diff --git a/molecule/testinfra/common/test_release_upgrades.py b/molecule/testinfra/common/test_release_upgrades.py index d6134e3eea..23c42d8f84 100644 --- a/molecule/testinfra/common/test_release_upgrades.py +++ b/molecule/testinfra/common/test_release_upgrades.py @@ -1,7 +1,6 @@ -import pytest +import testutils - -test_vars = pytest.securedrop_test_vars +test_vars = testutils.securedrop_test_vars testinfra_hosts = [test_vars.app_hostname, test_vars.monitor_hostname] diff --git a/molecule/testinfra/common/test_system_hardening.py b/molecule/testinfra/common/test_system_hardening.py index a3410399a6..84ea254f61 100644 --- a/molecule/testinfra/common/test_system_hardening.py +++ b/molecule/testinfra/common/test_system_hardening.py @@ -1,7 +1,9 @@ import pytest import re -sdvars = pytest.securedrop_test_vars +import testutils + +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname, sdvars.monitor_hostname] diff --git a/molecule/testinfra/common/test_tor_mirror.py b/molecule/testinfra/common/test_tor_mirror.py index ccc7340e98..eb9f218e99 100644 --- a/molecule/testinfra/common/test_tor_mirror.py +++ b/molecule/testinfra/common/test_tor_mirror.py @@ -1,6 +1,8 @@ import pytest -test_vars = pytest.securedrop_test_vars +import testutils + +test_vars = testutils.securedrop_test_vars testinfra_hosts = [test_vars.app_hostname, test_vars.monitor_hostname] diff --git a/molecule/testinfra/common/test_user_config.py b/molecule/testinfra/common/test_user_config.py index 6e2ef4b259..307c1d1edb 100644 --- a/molecule/testinfra/common/test_user_config.py +++ b/molecule/testinfra/common/test_user_config.py @@ -3,7 +3,9 @@ import pytest -sdvars = pytest.securedrop_test_vars +import testutils + +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.app_hostname, sdvars.monitor_hostname] diff --git a/molecule/testinfra/conftest.py b/molecule/testinfra/conftest.py index 8ed4322f4f..a2b059b478 100644 --- a/molecule/testinfra/conftest.py +++ b/molecule/testinfra/conftest.py @@ -9,6 +9,7 @@ import io import os import yaml +import testutils # The config tests target staging by default. It's possible to override # for e.g. prod, but the associated vars files are not yet ported. @@ -52,5 +53,13 @@ def lookup_molecule_info(): return molecule_instance_config -def pytest_namespace(): - return securedrop_import_testinfra_vars(target_host, with_header=True) +class Myvalues: + def __init__(self): + pass + + +value = securedrop_import_testinfra_vars(target_host) +res = Myvalues() +for key, value in value.items(): + setattr(res, key, value) +testutils.securedrop_test_vars = res diff --git a/molecule/testinfra/mon/test_mon_network.py b/molecule/testinfra/mon/test_mon_network.py index ac0994b657..a137a95e9b 100644 --- a/molecule/testinfra/mon/test_mon_network.py +++ b/molecule/testinfra/mon/test_mon_network.py @@ -4,8 +4,9 @@ import pytest from jinja2 import Template +import testutils -securedrop_test_vars = pytest.securedrop_test_vars +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.monitor_hostname] diff --git a/molecule/testinfra/mon/test_ossec_ruleset.py b/molecule/testinfra/mon/test_ossec_ruleset.py index 0663f68f1f..dd024d7f7c 100644 --- a/molecule/testinfra/mon/test_ossec_ruleset.py +++ b/molecule/testinfra/mon/test_ossec_ruleset.py @@ -1,7 +1,9 @@ import pytest import re -sdvars = pytest.securedrop_test_vars +import testutils + +sdvars = testutils.securedrop_test_vars testinfra_hosts = [sdvars.monitor_hostname] alert_level_regex = re.compile(r"Level: '(\d+)'") rule_id_regex = re.compile(r"Rule id: '(\d+)'") diff --git a/molecule/testinfra/mon/test_ossec_server.py b/molecule/testinfra/mon/test_ossec_server.py index 4d6219dd71..25ca0e87c3 100644 --- a/molecule/testinfra/mon/test_ossec_server.py +++ b/molecule/testinfra/mon/test_ossec_server.py @@ -1,8 +1,9 @@ import os import pytest +import testutils -securedrop_test_vars = pytest.securedrop_test_vars +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.monitor_hostname] diff --git a/molecule/testinfra/mon/test_postfix.py b/molecule/testinfra/mon/test_postfix.py index 0f37779902..2a51c9e5cf 100644 --- a/molecule/testinfra/mon/test_postfix.py +++ b/molecule/testinfra/mon/test_postfix.py @@ -1,8 +1,9 @@ import re import pytest +import testutils -securedrop_test_vars = pytest.securedrop_test_vars +securedrop_test_vars = testutils.securedrop_test_vars testinfra_hosts = [securedrop_test_vars.monitor_hostname] diff --git a/molecule/testinfra/testutils.py b/molecule/testinfra/testutils.py new file mode 100644 index 0000000000..383fbd3221 --- /dev/null +++ b/molecule/testinfra/testutils.py @@ -0,0 +1 @@ +securedrop_test_vars = {} diff --git a/molecule/upgrade/create.yml b/molecule/upgrade/create.yml index 8cf7a517de..af96c87eb3 100644 --- a/molecule/upgrade/create.yml +++ b/molecule/upgrade/create.yml @@ -11,7 +11,7 @@ tasks: - name: Create molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" instance_interfaces: "{{ item.interfaces | default(omit) }}" instance_raw_config_args: "{{ item.instance_raw_config_args | default(omit) }}" diff --git a/molecule/upgrade/destroy.yml b/molecule/upgrade/destroy.yml index 1ce71fc8f7..b98563c051 100644 --- a/molecule/upgrade/destroy.yml +++ b/molecule/upgrade/destroy.yml @@ -11,7 +11,7 @@ molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}" tasks: - name: Destroy molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" platform_box: "{{ item.box }}" provider_name: "{{ molecule_yml.driver.provider.name }}" diff --git a/molecule/upgrade/molecule.yml b/molecule/upgrade/molecule.yml index 00c9b68369..76d1e6907b 100644 --- a/molecule/upgrade/molecule.yml +++ b/molecule/upgrade/molecule.yml @@ -5,8 +5,8 @@ driver: name: vagrant provider: name: libvirt -lint: - name: yamllint +lint: | + yamllint platforms: - name: app-staging @@ -47,8 +47,8 @@ platforms: provisioner: name: ansible - lint: - name: ansible-lint + lint: | + ansible-lint inventory: links: group_vars: ../../install_files/ansible-base/group_vars @@ -76,5 +76,5 @@ scenario: - converge verifier: name: testinfra - lint: + lint: | name: flake8 diff --git a/molecule/vagrant-packager/create.yml b/molecule/vagrant-packager/create.yml index 4c732b695f..c2c13ee16f 100644 --- a/molecule/vagrant-packager/create.yml +++ b/molecule/vagrant-packager/create.yml @@ -11,7 +11,7 @@ tasks: - name: Create molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" instance_interfaces: "{{ item.interfaces | default(omit) }}" instance_raw_config_args: "{{ item.instance_raw_config_args | default(omit) }}" diff --git a/molecule/vagrant-packager/destroy.yml b/molecule/vagrant-packager/destroy.yml index 1ce71fc8f7..b98563c051 100644 --- a/molecule/vagrant-packager/destroy.yml +++ b/molecule/vagrant-packager/destroy.yml @@ -11,7 +11,7 @@ molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}" tasks: - name: Destroy molecule instance(s) - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" platform_box: "{{ item.box }}" provider_name: "{{ molecule_yml.driver.provider.name }}" diff --git a/molecule/vagrant-packager/molecule.yml b/molecule/vagrant-packager/molecule.yml index 6aa4bcd44e..9790ec880f 100644 --- a/molecule/vagrant-packager/molecule.yml +++ b/molecule/vagrant-packager/molecule.yml @@ -3,8 +3,8 @@ driver: name: vagrant provider: name: libvirt -lint: - name: yamllint +lint: | + yamllint platforms: - name: app-staging @@ -35,8 +35,8 @@ platforms: provisioner: name: ansible - lint: - name: ansible-lint + lint: | + ansible-lint inventory: links: group_vars: ../../install_files/ansible-base/group_vars @@ -64,5 +64,5 @@ scenario: - side_effect verifier: name: testinfra - lint: - name: flake8 + lint: | + flake8 diff --git a/molecule/vagrant-packager/side_effect.yml b/molecule/vagrant-packager/side_effect.yml index 982ddf9e1d..623aaf6646 100644 --- a/molecule/vagrant-packager/side_effect.yml +++ b/molecule/vagrant-packager/side_effect.yml @@ -32,7 +32,7 @@ connection: local tasks: - name: Halt vagrant instances - molecule_vagrant: + vagrant: instance_name: "{{ item.name }}" instance_raw_config_args: "{{ item.instance_raw_config_args | default(omit) }}" platform_box: "{{ item.box }}" diff --git a/molecule/virtualbox-staging-xenial/molecule.yml b/molecule/virtualbox-staging-xenial/molecule.yml index 9e0d69d88c..731e3439f7 100644 --- a/molecule/virtualbox-staging-xenial/molecule.yml +++ b/molecule/virtualbox-staging-xenial/molecule.yml @@ -3,8 +3,8 @@ driver: name: vagrant provider: name: libvirt -lint: - name: yamllint +lint: | + yamllint platforms: - name: app-staging @@ -35,8 +35,8 @@ platforms: provisioner: name: ansible - lint: - name: ansible-lint + lint: | + ansible-lint config_options: defaults: interpreter_python: auto @@ -59,8 +59,8 @@ scenario: - verify verifier: name: testinfra - lint: - name: flake8 + lint: | + flake8 directory: ../testinfra options: n: auto diff --git a/securedrop/bin/run-test b/securedrop/bin/run-test index 4cbd5ce784..31b9632456 100755 --- a/securedrop/bin/run-test +++ b/securedrop/bin/run-test @@ -37,6 +37,7 @@ mkdir -p "../test-results" export PAGE_LAYOUT_LOCALES export TOR_FORCE_NET_CONFIG=0 + pytest \ --force-flaky --max-runs=3 \ --page-layout \ diff --git a/securedrop/requirements/python3/develop-requirements.in b/securedrop/requirements/python3/develop-requirements.in index c0272f4b66..934e894e4a 100644 --- a/securedrop/requirements/python3/develop-requirements.in +++ b/securedrop/requirements/python3/develop-requirements.in @@ -1,3 +1,4 @@ +ansible-lint>=4.2.0 ansible>=2.9.7,<2.10.0 argon2_cffi>=20.1.0 bandit @@ -12,23 +13,26 @@ flake8 html-linter importlib-resources markupsafe>=1.1 -molecule>=2.22 +molecule>=3.0.1 +molecule-vagrant>=0.3 mypy>=0.761 # Needed for ansible network filter # http://docs.ansible.com/ansible/latest/playbooks_filters_ipaddr.html netaddr # Now also pin pip due to https://github.com/jazzband/pip-tools/issues/853 +pathlib2==2.3.5; python_version < '3.6' pip==19.3.1 pip-tools==4.5.1 psutil>=5.6.6 pyenchant pylint>=2.5.0 -pytest-xdist +pytest>=6.1.1 +pytest-xdist>=2.1.0 python-vagrant pyyaml>=5.3.1 ruamel.yaml>=0.16.10 safety>=1.8.7 setuptools>=46.0.0 -testinfra +testinfra>=5.3.1 urllib3>=1.25.9 yamllint diff --git a/securedrop/requirements/python3/develop-requirements.txt b/securedrop/requirements/python3/develop-requirements.txt index a0fa6b801a..52058fcb1c 100644 --- a/securedrop/requirements/python3/develop-requirements.txt +++ b/securedrop/requirements/python3/develop-requirements.txt @@ -4,16 +4,13 @@ # # pip-compile --allow-unsafe --generate-hashes --output-file=requirements/python3/develop-requirements.txt ../admin/requirements-ansible.in ../admin/requirements.in requirements/python3/develop-requirements.in # -ansible-lint==4.1.0 \ - --hash=sha256:9430ea6e654ba4bf5b9c6921efc040f46cda9c4fd2896a99ff71d21037bcb123 \ - --hash=sha256:c1b442b01091eca13ef11d98c3376e9489ba5b69a8467828ca86044f384bc0a1 \ - # via molecule +ansible-lint==4.2.0 \ + --hash=sha256:b9fc9a6564f5d60a4284497f966f38ef78f0e2505edbe2bd1225f1ade31c2d8a \ + --hash=sha256:eb925d8682d70563ccb80e2aca7b3edf84fb0b768cea3edc6846aac7abdc414a \ + # via -r requirements/python3/develop-requirements.in ansible==2.9.7 \ --hash=sha256:7222ce925536a25b2912364e13b03a3e21dbf2f96799ebff304f48509324de7b \ - # via -r ../admin/requirements-ansible.in, -r requirements/python3/develop-requirements.in, ansible-lint, molecule -anyconfig==0.9.7 \ - --hash=sha256:4d6016ae6eecc5e502bc7e99ae0639c5710c5c67bde5f21b06b9eaafd9ce0e7e \ - # via molecule + # via -r ../admin/requirements-ansible.in, -r requirements/python3/develop-requirements.in, ansible-lint, molecule, molecule-vagrant apipkg==1.4 \ --hash=sha256:2e38399dbe842891fe85392601aab8f40a8f4cc5a9053c326de35a1cc0297ac6 \ --hash=sha256:65d2aa68b28e7d31233bb2ba8eb31cda40e4671f8ac2d6b241e358c9652a74b9 \ @@ -51,6 +48,10 @@ astroid==2.4.0 \ --hash=sha256:29fa5d46a2404d01c834fcb802a3943685f1fc538eb2a02a161349f5505ac196 \ --hash=sha256:2fecea42b20abb1922ed65c7b5be27edfba97211b04b2b6abc6a43549a024ea6 \ # via pylint +attrs==20.2.0 \ + --hash=sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594 \ + --hash=sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc \ + # via pytest bandit==1.4.0 \ --hash=sha256:cb977045497f83ec3a02616973ab845c829cdab8144ce2e757fe031104a9abd4 \ --hash=sha256:de4cc19d6ba32d6f542c6a1ddadb4404571347d83ef1ed1e7afb7d0b38e0c25b \ @@ -154,13 +155,17 @@ chardet==3.0.4 \ --hash=sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae \ --hash=sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691 \ # via binaryornot, requests -click-completion==0.3.1 \ - --hash=sha256:7ca12978493a7450486cef155845af4fae48744c3f97b7250a254de65c9e5e5a \ +click-completion==0.5.2 \ + --hash=sha256:5bf816b81367e638a190b6e91b50779007d14301b3f9f3145d68e3cade7bce86 \ + # via molecule +click-help-colors==0.8 \ + --hash=sha256:0d841a4058ec88c47f93ff6f32547a055f8e0a0273f6bd6cb3e08430f195131d \ + --hash=sha256:119e5faf69cfc919c995c5962326ac8fd87f11e56a371af594e3dfd8458f4c6e \ # via molecule click==7.1.2 \ --hash=sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a \ --hash=sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc \ - # via click-completion, cookiecutter, git-url-parse, molecule, pip-tools, python-gilt, safety + # via click-completion, click-help-colors, cookiecutter, git-url-parse, molecule, pip-tools, python-gilt, safety colorama==0.3.9 \ --hash=sha256:463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda \ --hash=sha256:48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1 \ @@ -187,6 +192,10 @@ cryptography==2.7 \ --hash=sha256:f27d93f0139a3c056172ebb5d4f9056e770fdf0206c2f422ff2ebbad142e09ed \ --hash=sha256:f57b76e46a58b63d1c6375017f4564a28f19a5ca912691fd2e4261b3414b618d \ # via -r ../admin/requirements-ansible.in, ansible, paramiko +distro==1.5.0 \ + --hash=sha256:0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92 \ + --hash=sha256:df74eed763e18d10d0da624258524ae80486432cd17392d9c3d96f5e83cd2799 \ + # via selinux dnspython==1.15.0 \ --hash=sha256:40f563e1f7a7b80dc5a4e76ad75c23da53d62f1e15e6e517293b04e1f84ead7c \ --hash=sha256:861e6e58faa730f9845aaaa9c6c832851fbf89382ac52915a51f89c71accdd31 \ @@ -226,7 +235,7 @@ fasteners==0.14.1 \ flake8==3.7.7 \ --hash=sha256:859996073f341f2670741b51ec1e67a01da142831aa1fdc6242dbf88dffbe661 \ --hash=sha256:a796a115208f5c03b18f332f7c11729812c8c3ded6c46319c59b53efd3819da8 \ - # via -r requirements/python3/develop-requirements.in, molecule + # via -r requirements/python3/develop-requirements.in future==0.16.0 \ --hash=sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb \ # via cookiecutter @@ -257,11 +266,15 @@ idna==2.5 \ importlib-metadata==0.23 \ --hash=sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26 \ --hash=sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af \ - # via importlib-resources, pre-commit + # via importlib-resources, pluggy, pre-commit, pytest importlib-resources==1.5.0 \ --hash=sha256:6f87df66833e1942667108628ec48900e02a4ab4ad850e25fbf07cb17cf734ca \ --hash=sha256:85dc0b9b325ff78c8bef2e4ff42616094e16b98ebd5e3b50fe7e2f0bbcdcde49 \ # via -r requirements/python3/develop-requirements.in, pre-commit +iniconfig==1.0.1 \ + --hash=sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437 \ + --hash=sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69 \ + # via pytest isort==4.2.15 \ --hash=sha256:79f46172d3a4e2e53e7016e663cc7a8b538bec525c36675fcfd2767df30b3983 \ --hash=sha256:cd5d3fc2c16006b567a17193edf4ed9830d9454cbeb5a42ac80b36ea00c23db4 \ @@ -340,10 +353,14 @@ mccabe==0.6.1 \ --hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 \ --hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f \ # via flake8, pylint -molecule==2.22 \ - --hash=sha256:12fa4231ed69c6e7f50432588eaace36cea917a8c73c1751269ce55df32ced24 \ - --hash=sha256:d9d7621167041ae2a8eb19f1f8dc23c071cdab2cd3ca80655e2c8796b4c00e09 \ +molecule-vagrant==0.3 \ + --hash=sha256:5fcacbb9544e2736ce206a01c72f25cf74cbfe147df1722930d0373d87499907 \ + --hash=sha256:94b9aec5b1c7b499f549539bdd8d73c74afcce0a20776efd82f3f4ebae40ca98 \ # via -r requirements/python3/develop-requirements.in +molecule==3.0.2.1 \ + --hash=sha256:555514a06687cc798aa67581b6523701b40149a0ddcfd366f7c663904d700e84 \ + --hash=sha256:906e6b1213c72877738a1b764ace722636b0bec5df1a311c27380b63f8d21bb6 \ + # via -r requirements/python3/develop-requirements.in, molecule-vagrant monotonic==1.4 \ --hash=sha256:0bcd2b14e3b7ee7cfde796e408176ceffa01d89646f2e532964ef2aae0c9fa3e \ --hash=sha256:a02611d5b518cd4051bf22d21bd0ae55b3a03f2d2993a19b6c90d9d168691f84 \ @@ -382,11 +399,15 @@ nodeenv==1.3.3 \ packaging==16.8 \ --hash=sha256:5d50835fdf0a7edf0b55e311b7c887786504efea1177abd7e69329a8e5ea619e \ --hash=sha256:99276dc6e3a7851f32027a68f1095cd3f77c148091b092ea867a351811cfe388 \ - # via dparse, safety + # via dparse, pytest, safety paramiko==2.6.0 \ --hash=sha256:99f0179bdc176281d21961a003ffdb2ec369daac1a1007241f53374e376576cf \ --hash=sha256:f4b2edfa0d226b70bd4ca31ea7e389325990283da23465d572ed1f70a7583041 \ # via molecule +pathlib2==2.3.5 ; python_version < "3.6" \ + --hash=sha256:0ec8205a157c80d7acc301c0b18fbd5d44fe655968f5d947b6ecef5290fc35db \ + --hash=sha256:6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868 \ + # via -r requirements/python3/develop-requirements.in, pytest pathspec==0.5.5 \ --hash=sha256:72c495d1bbe76674219e307f6d1c6062f2e1b0b483a5e4886435127d0df3d0d3 \ # via yamllint @@ -402,6 +423,10 @@ pip-tools==4.5.1 \ --hash=sha256:693f30e451875796b1b25203247f0b4cf48a4c4a5ab7341f4f33ffd498cdcc98 \ --hash=sha256:be9c796aa88b2eec5cabf1323ba1cb60a08212b84bfb75b8b4037a8ef8cb8cb6 \ # via -r requirements/python3/develop-requirements.in +pluggy==0.13.1 \ + --hash=sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0 \ + --hash=sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d \ + # via molecule, pytest poyo==0.4.1 \ --hash=sha256:103b4ee3e1c7765098fe1cabe43f828db2e2a6079646561a2117e1a809f352d6 \ --hash=sha256:230ec11c2f35a23410c1f0e474f09fa4e203686f40ab3adca7b039c845d8c325 \ @@ -427,15 +452,15 @@ psutil==5.7.0 \ --hash=sha256:d84029b190c8a66a946e28b4d3934d2ca1528ec94764b180f7d6ea57b0e75e26 \ --hash=sha256:e2d0c5b07c6fe5a87fa27b7855017edb0d52ee73b71e6ee368fae268605cc3f5 \ --hash=sha256:f344ca230dd8e8d5eee16827596f1c22ec0876127c28e800d7ae20ed44c4b310 \ - # via -r requirements/python3/develop-requirements.in, molecule + # via -r requirements/python3/develop-requirements.in ptyprocess==0.5.2 \ --hash=sha256:e64193f0047ad603b71f202332ab5527c5e52aa7c8b609704fc28c0dc20c4365 \ --hash=sha256:e8c43b5eee76b2083a9badde89fd1bbce6c8942d1045146e100b7b5e014f4f1a \ # via pexpect -py==1.4.34 \ - --hash=sha256:0f2d585d22050e90c7d293b6451c83db097df77871974d90efd5a30dc12fcde3 \ - --hash=sha256:2ccb79b01769d99115aa600d7eed99f524bf752bba8f041dc1c184853514655a \ - # via pytest +py==1.9.0 \ + --hash=sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2 \ + --hash=sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342 \ + # via pytest, pytest-forked pycodestyle==2.5.0 \ --hash=sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56 \ --hash=sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c \ @@ -490,13 +515,18 @@ pyparsing==2.2.0 \ --hash=sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04 \ --hash=sha256:fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010 \ # via packaging -pytest-xdist==1.18.2 \ - --hash=sha256:10468377901b80255cf192c4603a94ffe8b1f071f5c912868da5f5cb91170dae \ +pytest-forked==1.3.0 \ + --hash=sha256:6aa9ac7e00ad1a539c41bec6d21011332de671e938c7637378ec9710204e37ca \ + --hash=sha256:dc4147784048e70ef5d437951728825a131b81714b398d5d52f17c7c144d8815 \ + # via pytest-xdist +pytest-xdist==2.1.0 \ + --hash=sha256:7c629016b3bb006b88ac68e2b31551e7becf173c76b977768848e2bbed594d90 \ + --hash=sha256:82d938f1a24186520e2d9d3a64ef7d9ac7ecdf1a0659e095d18e596b8cbd0672 \ # via -r requirements/python3/develop-requirements.in -pytest==3.2.0 \ - --hash=sha256:0225cf10b9e173f84729d5f4648211458a222c6e53a77a85e104bc5f31c244ee \ - --hash=sha256:d994b4f28c6d449a467ad3d336544945a0dcf350e3b7b301219547ef5aa8125e \ - # via pytest-xdist, testinfra +pytest==6.1.1 \ + --hash=sha256:7a8190790c17d79a11f847fba0b004ee9a8122582ebff4729a082c109e81a4c9 \ + --hash=sha256:8f593023c1a0f916110285b6efd7f99db07d59546e3d8c36fc60e2ab05d3be92 \ + # via -r requirements/python3/develop-requirements.in, pytest-forked, pytest-xdist, testinfra python-dateutil==2.6.1 \ --hash=sha256:891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca \ --hash=sha256:95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c \ @@ -508,7 +538,7 @@ python-gilt==1.2.1 \ # via molecule python-vagrant==0.5.15 \ --hash=sha256:af9a8a9802d382d45dbea96aa3cfbe77c6e6ad65b3fe7b7c799d41ab988179c6 \ - # via -r requirements/python3/develop-requirements.in + # via -r requirements/python3/develop-requirements.in, molecule-vagrant pyyaml==5.3.1 \ --hash=sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97 \ --hash=sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76 \ @@ -521,7 +551,7 @@ pyyaml==5.3.1 \ --hash=sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d \ --hash=sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c \ --hash=sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a \ - # via -r ../admin/requirements.in, -r requirements/python3/develop-requirements.in, ansible, ansible-lint, aspy.yaml, bandit, dparse, molecule, pre-commit, python-gilt, yamllint + # via -r ../admin/requirements.in, -r requirements/python3/develop-requirements.in, ansible, ansible-lint, aspy.yaml, bandit, dparse, molecule, molecule-vagrant, pre-commit, python-gilt, yamllint requests==2.22.0 \ --hash=sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4 \ --hash=sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31 \ @@ -559,14 +589,22 @@ safety==1.8.7 \ --hash=sha256:05f77773bbab834502328b29ed013677aa53ed0c22b6e330aef7d2a7e1dfd838 \ --hash=sha256:3016631e0dd17193d6cf12e8ed1af92df399585e8ee0e4b1300d9e7e32b54903 \ # via -r requirements/python3/develop-requirements.in +selinux==0.2.1 \ + --hash=sha256:820adcf1b4451c9cc7759848797703263ba0eb6a4cad76d73548a9e0d57b7926 \ + --hash=sha256:d435f514e834e3fdc0941f6a29d086b80b2ea51b28112aee6254bd104ee42a74 \ + # via molecule-vagrant sh==1.12.14 \ --hash=sha256:ae3258c5249493cebe73cb4e18253a41ed69262484bad36fdb3efcb8ad8870bb \ --hash=sha256:b52bf5833ed01c7b5c5fb73a7f71b3d98d48e9b9b8764236237bdc7ecae850fc \ # via molecule, python-gilt +shellingham==1.3.2 \ + --hash=sha256:576c1982bea0ba82fb46c36feb951319d7f42214a82634233f58b40d858a751e \ + --hash=sha256:7f6206ae169dc1a03af8a138681b3f962ae61cc93ade84d0585cca3aaf770044 \ + # via click-completion six==1.15.0 \ --hash=sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259 \ --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced \ - # via -r ../admin/requirements.in, ansible-lint, argon2-cffi, astroid, bandit, bcrypt, cfgv, click-completion, cryptography, docker-py, docker-pycreds, dparse, fasteners, git-url-parse, molecule, packaging, pip-tools, pre-commit, prompt-toolkit, pynacl, python-dateutil, stevedore, testinfra, websocket-client + # via -r ../admin/requirements.in, ansible-lint, argon2-cffi, astroid, bandit, bcrypt, cfgv, click-completion, cryptography, docker-py, docker-pycreds, dparse, fasteners, git-url-parse, molecule, packaging, pathlib2, pip-tools, pre-commit, prompt-toolkit, pynacl, python-dateutil, stevedore, websocket-client smmap2==2.0.3 \ --hash=sha256:b78ee0f1f5772d69ff50b1cbdb01b8c6647a8354f02f23b488cf4b2cfc923956 \ --hash=sha256:c7530db63f15f09f8251094b22091298e82bf6c699a6b8344aaaef3f2e1276c3 \ @@ -575,20 +613,21 @@ stevedore==1.28.0 \ --hash=sha256:e3d96b2c4e882ec0c1ff95eaebf7b575a779fd0ccb4c741b9832bed410d58b3d \ --hash=sha256:f1c7518e7b160336040fee272174f1f7b29a46febb3632502a8f2055f973d60b \ # via bandit -tabulate==0.8.3 \ - --hash=sha256:8af07a39377cee1103a5c8b3330a421c2d99b9141e9cc5ddd2e3263fea416943 \ +tabulate==0.8.7 \ + --hash=sha256:ac64cb76d53b1231d364babcd72abbb16855adac7de6665122f97b593f1eb2ba \ + --hash=sha256:db2723a20d04bcda8522165c73eea7c300eda74e0ce852d9022e0159d7895007 \ # via molecule template-remover==0.1.9 \ --hash=sha256:480f1ce63f56affac1edb29356afcca1260e8409cd928fcf9438fc149df5ff41 \ # via html-linter -testinfra==3.2.0 \ - --hash=sha256:16201d64659ec0c2d25f65d6ce1f5367668b7b4eb102450efd4f8983a399d7d0 \ - --hash=sha256:5cebf61fee13c2e83b5e177431e751e243fc779293377c5e0c3b43910bb7e870 \ - # via -r requirements/python3/develop-requirements.in, molecule +testinfra==5.3.1 \ + --hash=sha256:9d3a01fb787253df76ac4ab46d18a84d4b01be877ed1b5812e590dcf480a627e \ + --hash=sha256:baf1d809ea2dc22c0cb5b9441bf4e17c1eb653e1ccc02cc63137d0ab467fa1de \ + # via -r requirements/python3/develop-requirements.in toml==0.10.0 \ --hash=sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c \ --hash=sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e \ - # via pre-commit, pylint + # via pre-commit, pylint, pytest tree-format==0.1.2 \ --hash=sha256:a538523aa78ae7a4b10003b04f3e1b37708e0e089d99c9d3b9e1c71384c9a7f9 \ --hash=sha256:b5056228dbedde1fb81b79f71fb0c23c98e9d365230df9b29af76e8d8003de11 \ @@ -661,4 +700,4 @@ pip==19.3.1 \ setuptools==46.0.0 \ --hash=sha256:2f00f25b780fbfd0787e46891dcccd805b08d007621f24629025f48afef444b5 \ --hash=sha256:693e0504490ed8420522bf6bc3aa4b0da6a9f1c80c68acfb4e959275fd04cd82 \ - # via -r ../admin/requirements.in, -r requirements/python3/develop-requirements.in, pytest, safety + # via -r ../admin/requirements.in, -r requirements/python3/develop-requirements.in, safety, selinux diff --git a/securedrop/requirements/python3/setuptools-requirements.in b/securedrop/requirements/python3/setuptools-requirements.in new file mode 100644 index 0000000000..43a52d2059 --- /dev/null +++ b/securedrop/requirements/python3/setuptools-requirements.in @@ -0,0 +1 @@ +setuptools==46.0.0 diff --git a/securedrop/requirements/python3/setuptools-requirements.txt b/securedrop/requirements/python3/setuptools-requirements.txt new file mode 100644 index 0000000000..75b2770c2c --- /dev/null +++ b/securedrop/requirements/python3/setuptools-requirements.txt @@ -0,0 +1,11 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --allow-unsafe --generate-hashes --output-file=requirements/python3/setuptools-requirements.txt requirements/python3/setuptools-requirements.in +# + +# The following packages are considered to be unsafe in a requirements file: +setuptools==46.0.0 \ + --hash=sha256:2f00f25b780fbfd0787e46891dcccd805b08d007621f24629025f48afef444b5 \ + --hash=sha256:693e0504490ed8420522bf6bc3aa4b0da6a9f1c80c68acfb4e959275fd04cd82 diff --git a/securedrop/requirements/python3/test-requirements.in b/securedrop/requirements/python3/test-requirements.in index 31cfb9726e..f98b0ee158 100644 --- a/securedrop/requirements/python3/test-requirements.in +++ b/securedrop/requirements/python3/test-requirements.in @@ -4,10 +4,13 @@ Flask-Testing flaky markupsafe>=1.1 mock +pathlib2 pillow>=7.2.0 pip-tools==4.5.1 py -pytest +pytest>=6.1.1 +pytest-xdist>=2.1.0 +pluggy>=0.13.1 pytest-cov pytest-mock hypothesis diff --git a/securedrop/requirements/python3/test-requirements.txt b/securedrop/requirements/python3/test-requirements.txt index e30e9ca5e2..d839cbe450 100644 --- a/securedrop/requirements/python3/test-requirements.txt +++ b/securedrop/requirements/python3/test-requirements.txt @@ -4,10 +4,10 @@ # # pip-compile --allow-unsafe --generate-hashes --output-file=requirements/python3/test-requirements.txt requirements/python3/test-requirements.in # -atomicwrites==1.3.0 \ - --hash=sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4 \ - --hash=sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6 \ - # via pytest +apipkg==1.5 \ + --hash=sha256:37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6 \ + --hash=sha256:58587dd4dc3daefad0487f6d9ae32b4542b185e1c36db6993290e7c41ca2b47c \ + # via execnet attrs==17.4.0 \ --hash=sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9 \ --hash=sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450 \ @@ -69,6 +69,10 @@ coverage==4.4.2 \ easyprocess==0.2.3 \ --hash=sha256:94e241cadc9a46f55b5c06000df85618849602e7e1865b8de87576b90a22e61f \ # via pyvirtualdisplay +execnet==1.7.1 \ + --hash=sha256:cacb9df31c9680ec5f95553976c4da484d407e85e41c83cb812aa014f0eddc50 \ + --hash=sha256:d4efd397930c46415f62f8a31388d6be4f27a91d7550eb79bc64a756e0056547 \ + # via pytest-xdist flaky==3.6.0 \ --hash=sha256:36fa125bceebfe869739b62e203db4653488dff09615e5a4f3d7607d48363c6a \ --hash=sha256:c24e321b3b4b4a2d323b646acff6738e7601849832f4280864d69f00a6a9869d \ @@ -92,7 +96,11 @@ idna==2.8 \ importlib-metadata==0.18 \ --hash=sha256:6dfd58dfe281e8d240937776065dd3624ad5469c835248219bd16cf2e12dbeb7 \ --hash=sha256:cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db \ - # via pluggy + # via pluggy, pytest +iniconfig==1.0.1 \ + --hash=sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437 \ + --hash=sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69 \ + # via pytest itsdangerous==0.24 \ --hash=sha256:cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519 \ # via flask @@ -139,14 +147,14 @@ mock==2.0.0 \ --hash=sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1 \ --hash=sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba \ # via -r requirements/python3/test-requirements.in -more-itertools==7.1.0 \ - --hash=sha256:3ad685ff8512bf6dc5a8b82ebf73543999b657eded8c11803d9ba6b648986f4d \ - --hash=sha256:8bb43d1f51ecef60d81854af61a3a880555a14643691cc4b64a6ee269c78f09a \ +packaging==20.4 \ + --hash=sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8 \ + --hash=sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181 \ # via pytest pathlib2==2.3.5 \ --hash=sha256:0ec8205a157c80d7acc301c0b18fbd5d44fe655968f5d947b6ecef5290fc35db \ --hash=sha256:6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868 \ - # via pytest + # via -r requirements/python3/test-requirements.in, pytest pbr==3.1.1 \ --hash=sha256:05f61c71aaefc02d8e37c0a3eeb9815ff526ea28b3b76324769e6158d7f95be1 \ --hash=sha256:60c25b7dfd054ef9bb0ae327af949dd4676aa09ac3a9471cdc871d8a9213f9ac \ @@ -183,14 +191,18 @@ pip-tools==4.5.1 \ --hash=sha256:693f30e451875796b1b25203247f0b4cf48a4c4a5ab7341f4f33ffd498cdcc98 \ --hash=sha256:be9c796aa88b2eec5cabf1323ba1cb60a08212b84bfb75b8b4037a8ef8cb8cb6 \ # via -r requirements/python3/test-requirements.in -pluggy==0.12.0 \ - --hash=sha256:0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc \ - --hash=sha256:b9817417e95936bf75d85d3f8767f7df6cdde751fc40aed3bb3074cbcb77757c \ - # via pytest -py==1.5.2 \ - --hash=sha256:8cca5c229d225f8c1e3085be4fcf306090b00850fefad892f9d96c7b6e2f310f \ - --hash=sha256:ca18943e28235417756316bfada6cd96b23ce60dd532642690dcfdaba988a76d \ +pluggy==0.13.1 \ + --hash=sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0 \ + --hash=sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d \ # via -r requirements/python3/test-requirements.in, pytest +py==1.9.0 \ + --hash=sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2 \ + --hash=sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342 \ + # via -r requirements/python3/test-requirements.in, pytest, pytest-forked +pyparsing==2.4.7 \ + --hash=sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1 \ + --hash=sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b \ + # via packaging pysocks==1.6.8 \ --hash=sha256:3fe52c55890a248676fd69dc9e3c4e811718b777834bcaab7a8125cf9deac672 \ # via requests @@ -198,14 +210,22 @@ pytest-cov==2.5.1 \ --hash=sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d \ --hash=sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec \ # via -r requirements/python3/test-requirements.in +pytest-forked==1.3.0 \ + --hash=sha256:6aa9ac7e00ad1a539c41bec6d21011332de671e938c7637378ec9710204e37ca \ + --hash=sha256:dc4147784048e70ef5d437951728825a131b81714b398d5d52f17c7c144d8815 \ + # via pytest-xdist pytest-mock==1.7.1 \ --hash=sha256:03a2fea79d0a83a8de2e77e92afe5f0a5ca99a58cc68f843f9a74de34800a943 \ --hash=sha256:b879dff61e31fcd4727c227c182f15f222a155293cc64ed5a02d55e0020cf949 \ # via -r requirements/python3/test-requirements.in -pytest==3.10 \ - --hash=sha256:630ff1dbe04f469ee78faa5660f712e58b953da7df22ea5d828c9012e134da43 \ - --hash=sha256:a2b5232735dd0b736cbea9c0f09e5070d78fcaba2823a4f6f09d9a81bd19415c \ - # via -r requirements/python3/test-requirements.in, pytest-cov, pytest-mock +pytest-xdist==2.1.0 \ + --hash=sha256:7c629016b3bb006b88ac68e2b31551e7becf173c76b977768848e2bbed594d90 \ + --hash=sha256:82d938f1a24186520e2d9d3a64ef7d9ac7ecdf1a0659e095d18e596b8cbd0672 \ + # via -r requirements/python3/test-requirements.in +pytest==6.1.1 \ + --hash=sha256:7a8190790c17d79a11f847fba0b004ee9a8122582ebff4729a082c109e81a4c9 \ + --hash=sha256:8f593023c1a0f916110285b6efd7f99db07d59546e3d8c36fc60e2ab05d3be92 \ + # via -r requirements/python3/test-requirements.in, pytest-cov, pytest-forked, pytest-mock, pytest-xdist pyvirtualdisplay==0.2.1 \ --hash=sha256:012883851a992f9c53f0dc6a512765a95cf241bdb734af79e6bdfef95c6e9982 \ # via -r requirements/python3/test-requirements.in @@ -220,11 +240,15 @@ selenium==3.141.0 \ six==1.11.0 \ --hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 \ --hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb \ - # via mock, pathlib2, pip-tools, pytest + # via mock, packaging, pathlib2, pip-tools tbselenium==0.4.2 \ --hash=sha256:9f39b7285103442cc389623e1dedc3ef08b1475afd5076bba1d947d92a348d0b \ --hash=sha256:e24ff69f610ca294093f399099407124c7ffc6a8325e7d9ca19e93ffc5eb91df \ # via -r requirements/python3/test-requirements.in +toml==0.10.1 \ + --hash=sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f \ + --hash=sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88 \ + # via pytest urllib3==1.25.10 \ --hash=sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a \ --hash=sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461 \ @@ -242,4 +266,4 @@ zipp==0.5.1 \ setuptools==46.0.0 \ --hash=sha256:2f00f25b780fbfd0787e46891dcccd805b08d007621f24629025f48afef444b5 \ --hash=sha256:693e0504490ed8420522bf6bc3aa4b0da6a9f1c80c68acfb4e959275fd04cd82 \ - # via -r requirements/python3/test-requirements.in, pytest + # via -r requirements/python3/test-requirements.in