From 6832521272126f61038fcacbf84eeb7eff46cc5f Mon Sep 17 00:00:00 2001 From: Brad Warren Date: Tue, 28 Mar 2023 14:02:33 -0700 Subject: [PATCH] Make acme tests internal (#9625) This is a first step towards implementing the plan I described at https://github.com/certbot/certbot/issues/7909#issuecomment-1448675456 which got a +1 from both Erica and Will. Similar changes for our other packages will be made in followup PRs to try and make this easier to review. It may be helpful to look at https://github.com/certbot/certbot/pull/7600 when reviewing this PR where we did something similar in the past. The value of `ignore-paths` in `.pylintrc` should work on Windows based on https://pylint.readthedocs.io/en/latest/user_guide/configuration/all-options.html#ignore-paths and the fact that on macOS/linux, changing path delimiters to `\` still causes these directories to be ignored. I started testing this for mypy as well, but mypy doesn't current pass for us on Windows so I didn't bother and took this opportunity to remove it from the default environments in `tox.ini`. I'll update https://github.com/certbot/certbot/issues/7803 to mention that the value of `exclude` in `mypy.ini` may need to be tweaked if anyone works on that issue. * make acme tests internal * no mypy-win --- .pylintrc | 5 ++++- acme/MANIFEST.in | 2 +- acme/acme/_internal/__init__.py | 1 + acme/acme/_internal/tests/__init__.py | 1 + acme/{ => acme/_internal}/tests/challenges_test.py | 2 +- acme/{ => acme/_internal}/tests/client_test.py | 4 ++-- acme/{ => acme/_internal}/tests/crypto_util_test.py | 2 +- acme/{ => acme/_internal}/tests/errors_test.py | 0 acme/{ => acme/_internal}/tests/fields_test.py | 0 acme/{ => acme/_internal}/tests/jose_test.py | 0 acme/{ => acme/_internal}/tests/jws_test.py | 2 +- acme/{ => acme/_internal}/tests/messages_test.py | 2 +- acme/{ => acme/_internal}/tests/standalone_test.py | 2 +- acme/{ => acme/_internal}/tests/test_util.py | 0 acme/{ => acme/_internal}/tests/testdata/README | 0 .../_internal}/tests/testdata/cert-100sans.pem | 0 .../_internal}/tests/testdata/cert-idnsans.pem | 0 .../_internal}/tests/testdata/cert-ipsans.pem | 0 .../_internal}/tests/testdata/cert-ipv6sans.pem | 0 .../_internal}/tests/testdata/cert-nocn.der | Bin .../_internal}/tests/testdata/cert-san.pem | 0 acme/{ => acme/_internal}/tests/testdata/cert.der | Bin acme/{ => acme/_internal}/tests/testdata/cert.pem | 0 .../_internal}/tests/testdata/critical-san.pem | 0 .../_internal}/tests/testdata/csr-100sans.pem | 0 .../_internal}/tests/testdata/csr-6sans.pem | 0 .../_internal}/tests/testdata/csr-idnsans.pem | 0 .../_internal}/tests/testdata/csr-ipsans.pem | 0 .../_internal}/tests/testdata/csr-ipv6sans.pem | 0 .../_internal}/tests/testdata/csr-mixed.pem | 0 .../_internal}/tests/testdata/csr-nosans.pem | 0 .../{ => acme/_internal}/tests/testdata/csr-san.pem | 0 acme/{ => acme/_internal}/tests/testdata/csr.der | Bin acme/{ => acme/_internal}/tests/testdata/csr.pem | 0 .../_internal}/tests/testdata/dsa512_key.pem | 0 .../_internal}/tests/testdata/ec_secp384r1_key.pem | 0 .../_internal}/tests/testdata/rsa1024_cert.pem | 0 .../_internal}/tests/testdata/rsa1024_key.pem | 0 .../_internal}/tests/testdata/rsa2048_cert.pem | 0 .../_internal}/tests/testdata/rsa2048_key.pem | 0 .../_internal}/tests/testdata/rsa256_key.pem | 0 .../_internal}/tests/testdata/rsa4096_cert.pem | 0 .../_internal}/tests/testdata/rsa4096_key.pem | 0 .../_internal}/tests/testdata/rsa512_key.pem | 0 acme/{ => acme/_internal}/tests/util_test.py | 0 mypy.ini | 3 +++ tox.ini | 4 +++- 47 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 acme/acme/_internal/__init__.py create mode 100644 acme/acme/_internal/tests/__init__.py rename acme/{ => acme/_internal}/tests/challenges_test.py (99%) rename acme/{ => acme/_internal}/tests/client_test.py (99%) rename acme/{ => acme/_internal}/tests/crypto_util_test.py (99%) rename acme/{ => acme/_internal}/tests/errors_test.py (100%) rename acme/{ => acme/_internal}/tests/fields_test.py (100%) rename acme/{ => acme/_internal}/tests/jose_test.py (100%) rename acme/{ => acme/_internal}/tests/jws_test.py (97%) rename acme/{ => acme/_internal}/tests/messages_test.py (99%) rename acme/{ => acme/_internal}/tests/standalone_test.py (99%) rename acme/{ => acme/_internal}/tests/test_util.py (100%) rename acme/{ => acme/_internal}/tests/testdata/README (100%) rename acme/{ => acme/_internal}/tests/testdata/cert-100sans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/cert-idnsans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/cert-ipsans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/cert-ipv6sans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/cert-nocn.der (100%) rename acme/{ => acme/_internal}/tests/testdata/cert-san.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/cert.der (100%) rename acme/{ => acme/_internal}/tests/testdata/cert.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/critical-san.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-100sans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-6sans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-idnsans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-ipsans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-ipv6sans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-mixed.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-nosans.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr-san.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/csr.der (100%) rename acme/{ => acme/_internal}/tests/testdata/csr.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/dsa512_key.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/ec_secp384r1_key.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa1024_cert.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa1024_key.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa2048_cert.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa2048_key.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa256_key.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa4096_cert.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa4096_key.pem (100%) rename acme/{ => acme/_internal}/tests/testdata/rsa512_key.pem (100%) rename acme/{ => acme/_internal}/tests/util_test.py (100%) diff --git a/.pylintrc b/.pylintrc index 194a8fe94..05f34fb1f 100644 --- a/.pylintrc +++ b/.pylintrc @@ -48,7 +48,10 @@ ignore=CVS # ignore-list. The regex matches against paths and can be in Posix or Windows # format. Because '\' represents the directory delimiter on Windows systems, it # can't be used as an escape character. -ignore-paths= +# CERTBOT COMMENT +# Changing this line back to the default of `ignore-paths=` is being tracked by +# https://github.com/certbot/certbot/issues/7908. +ignore-paths=.*/_internal/tests/ # Files or directories matching the regular expression patterns are skipped. # The regex matches against base names, not paths. The default value ignores diff --git a/acme/MANIFEST.in b/acme/MANIFEST.in index 089f33a0d..b3badd473 100644 --- a/acme/MANIFEST.in +++ b/acme/MANIFEST.in @@ -3,7 +3,7 @@ include README.rst include pytest.ini recursive-include docs * recursive-include examples * -recursive-include tests * +recursive-include acme/_internal/tests/testdata * include acme/py.typed global-exclude __pycache__ global-exclude *.py[cod] diff --git a/acme/acme/_internal/__init__.py b/acme/acme/_internal/__init__.py new file mode 100644 index 000000000..bc855fd7b --- /dev/null +++ b/acme/acme/_internal/__init__.py @@ -0,0 +1 @@ +"""acme's internal implementation""" diff --git a/acme/acme/_internal/tests/__init__.py b/acme/acme/_internal/tests/__init__.py new file mode 100644 index 000000000..9e17591c4 --- /dev/null +++ b/acme/acme/_internal/tests/__init__.py @@ -0,0 +1 @@ +"""acme tests""" diff --git a/acme/tests/challenges_test.py b/acme/acme/_internal/tests/challenges_test.py similarity index 99% rename from acme/tests/challenges_test.py rename to acme/acme/_internal/tests/challenges_test.py index 1febaff54..98461dc51 100644 --- a/acme/tests/challenges_test.py +++ b/acme/acme/_internal/tests/challenges_test.py @@ -11,7 +11,7 @@ import pytest import requests from acme import errors -import test_util +from acme._internal.tests import test_util CERT = test_util.load_comparable_cert('cert.pem') KEY = jose.JWKRSA(key=test_util.load_rsa_private_key('rsa512_key.pem')) diff --git a/acme/tests/client_test.py b/acme/acme/_internal/tests/client_test.py similarity index 99% rename from acme/tests/client_test.py rename to acme/acme/_internal/tests/client_test.py index 79153a31b..734005b2d 100644 --- a/acme/tests/client_test.py +++ b/acme/acme/_internal/tests/client_test.py @@ -17,10 +17,10 @@ from acme import challenges from acme import errors from acme import jws as acme_jws from acme import messages +from acme._internal.tests import messages_test +from acme._internal.tests import test_util from acme.client import ClientNetwork from acme.client import ClientV2 -import messages_test -import test_util CERT_SAN_PEM = test_util.load_vector('cert-san.pem') CSR_MIXED_PEM = test_util.load_vector('csr-mixed.pem') diff --git a/acme/tests/crypto_util_test.py b/acme/acme/_internal/tests/crypto_util_test.py similarity index 99% rename from acme/tests/crypto_util_test.py rename to acme/acme/_internal/tests/crypto_util_test.py index 409a2ce27..ae1821794 100644 --- a/acme/tests/crypto_util_test.py +++ b/acme/acme/_internal/tests/crypto_util_test.py @@ -14,7 +14,7 @@ import OpenSSL import pytest from acme import errors -import test_util +from acme._internal.tests import test_util class SSLSocketAndProbeSNITest(unittest.TestCase): diff --git a/acme/tests/errors_test.py b/acme/acme/_internal/tests/errors_test.py similarity index 100% rename from acme/tests/errors_test.py rename to acme/acme/_internal/tests/errors_test.py diff --git a/acme/tests/fields_test.py b/acme/acme/_internal/tests/fields_test.py similarity index 100% rename from acme/tests/fields_test.py rename to acme/acme/_internal/tests/fields_test.py diff --git a/acme/tests/jose_test.py b/acme/acme/_internal/tests/jose_test.py similarity index 100% rename from acme/tests/jose_test.py rename to acme/acme/_internal/tests/jose_test.py diff --git a/acme/tests/jws_test.py b/acme/acme/_internal/tests/jws_test.py similarity index 97% rename from acme/tests/jws_test.py rename to acme/acme/_internal/tests/jws_test.py index 901ae970b..016904652 100644 --- a/acme/tests/jws_test.py +++ b/acme/acme/_internal/tests/jws_test.py @@ -5,7 +5,7 @@ import unittest import josepy as jose import pytest -import test_util +from acme._internal.tests import test_util KEY = jose.JWKRSA.load(test_util.load_vector('rsa512_key.pem')) diff --git a/acme/tests/messages_test.py b/acme/acme/_internal/tests/messages_test.py similarity index 99% rename from acme/tests/messages_test.py rename to acme/acme/_internal/tests/messages_test.py index ea7e2feaf..a47541efd 100644 --- a/acme/tests/messages_test.py +++ b/acme/acme/_internal/tests/messages_test.py @@ -10,7 +10,7 @@ import josepy as jose import pytest from acme import challenges -import test_util +from acme._internal.tests import test_util CERT = test_util.load_comparable_cert('cert.der') CSR = test_util.load_comparable_csr('csr.der') diff --git a/acme/tests/standalone_test.py b/acme/acme/_internal/tests/standalone_test.py similarity index 99% rename from acme/tests/standalone_test.py rename to acme/acme/_internal/tests/standalone_test.py index 4fcdceb57..130d8dc7d 100644 --- a/acme/tests/standalone_test.py +++ b/acme/acme/_internal/tests/standalone_test.py @@ -15,7 +15,7 @@ import requests from acme import challenges from acme import crypto_util from acme import errors -import test_util +from acme._internal.tests import test_util class TLSServerTest(unittest.TestCase): diff --git a/acme/tests/test_util.py b/acme/acme/_internal/tests/test_util.py similarity index 100% rename from acme/tests/test_util.py rename to acme/acme/_internal/tests/test_util.py diff --git a/acme/tests/testdata/README b/acme/acme/_internal/tests/testdata/README similarity index 100% rename from acme/tests/testdata/README rename to acme/acme/_internal/tests/testdata/README diff --git a/acme/tests/testdata/cert-100sans.pem b/acme/acme/_internal/tests/testdata/cert-100sans.pem similarity index 100% rename from acme/tests/testdata/cert-100sans.pem rename to acme/acme/_internal/tests/testdata/cert-100sans.pem diff --git a/acme/tests/testdata/cert-idnsans.pem b/acme/acme/_internal/tests/testdata/cert-idnsans.pem similarity index 100% rename from acme/tests/testdata/cert-idnsans.pem rename to acme/acme/_internal/tests/testdata/cert-idnsans.pem diff --git a/acme/tests/testdata/cert-ipsans.pem b/acme/acme/_internal/tests/testdata/cert-ipsans.pem similarity index 100% rename from acme/tests/testdata/cert-ipsans.pem rename to acme/acme/_internal/tests/testdata/cert-ipsans.pem diff --git a/acme/tests/testdata/cert-ipv6sans.pem b/acme/acme/_internal/tests/testdata/cert-ipv6sans.pem similarity index 100% rename from acme/tests/testdata/cert-ipv6sans.pem rename to acme/acme/_internal/tests/testdata/cert-ipv6sans.pem diff --git a/acme/tests/testdata/cert-nocn.der b/acme/acme/_internal/tests/testdata/cert-nocn.der similarity index 100% rename from acme/tests/testdata/cert-nocn.der rename to acme/acme/_internal/tests/testdata/cert-nocn.der diff --git a/acme/tests/testdata/cert-san.pem b/acme/acme/_internal/tests/testdata/cert-san.pem similarity index 100% rename from acme/tests/testdata/cert-san.pem rename to acme/acme/_internal/tests/testdata/cert-san.pem diff --git a/acme/tests/testdata/cert.der b/acme/acme/_internal/tests/testdata/cert.der similarity index 100% rename from acme/tests/testdata/cert.der rename to acme/acme/_internal/tests/testdata/cert.der diff --git a/acme/tests/testdata/cert.pem b/acme/acme/_internal/tests/testdata/cert.pem similarity index 100% rename from acme/tests/testdata/cert.pem rename to acme/acme/_internal/tests/testdata/cert.pem diff --git a/acme/tests/testdata/critical-san.pem b/acme/acme/_internal/tests/testdata/critical-san.pem similarity index 100% rename from acme/tests/testdata/critical-san.pem rename to acme/acme/_internal/tests/testdata/critical-san.pem diff --git a/acme/tests/testdata/csr-100sans.pem b/acme/acme/_internal/tests/testdata/csr-100sans.pem similarity index 100% rename from acme/tests/testdata/csr-100sans.pem rename to acme/acme/_internal/tests/testdata/csr-100sans.pem diff --git a/acme/tests/testdata/csr-6sans.pem b/acme/acme/_internal/tests/testdata/csr-6sans.pem similarity index 100% rename from acme/tests/testdata/csr-6sans.pem rename to acme/acme/_internal/tests/testdata/csr-6sans.pem diff --git a/acme/tests/testdata/csr-idnsans.pem b/acme/acme/_internal/tests/testdata/csr-idnsans.pem similarity index 100% rename from acme/tests/testdata/csr-idnsans.pem rename to acme/acme/_internal/tests/testdata/csr-idnsans.pem diff --git a/acme/tests/testdata/csr-ipsans.pem b/acme/acme/_internal/tests/testdata/csr-ipsans.pem similarity index 100% rename from acme/tests/testdata/csr-ipsans.pem rename to acme/acme/_internal/tests/testdata/csr-ipsans.pem diff --git a/acme/tests/testdata/csr-ipv6sans.pem b/acme/acme/_internal/tests/testdata/csr-ipv6sans.pem similarity index 100% rename from acme/tests/testdata/csr-ipv6sans.pem rename to acme/acme/_internal/tests/testdata/csr-ipv6sans.pem diff --git a/acme/tests/testdata/csr-mixed.pem b/acme/acme/_internal/tests/testdata/csr-mixed.pem similarity index 100% rename from acme/tests/testdata/csr-mixed.pem rename to acme/acme/_internal/tests/testdata/csr-mixed.pem diff --git a/acme/tests/testdata/csr-nosans.pem b/acme/acme/_internal/tests/testdata/csr-nosans.pem similarity index 100% rename from acme/tests/testdata/csr-nosans.pem rename to acme/acme/_internal/tests/testdata/csr-nosans.pem diff --git a/acme/tests/testdata/csr-san.pem b/acme/acme/_internal/tests/testdata/csr-san.pem similarity index 100% rename from acme/tests/testdata/csr-san.pem rename to acme/acme/_internal/tests/testdata/csr-san.pem diff --git a/acme/tests/testdata/csr.der b/acme/acme/_internal/tests/testdata/csr.der similarity index 100% rename from acme/tests/testdata/csr.der rename to acme/acme/_internal/tests/testdata/csr.der diff --git a/acme/tests/testdata/csr.pem b/acme/acme/_internal/tests/testdata/csr.pem similarity index 100% rename from acme/tests/testdata/csr.pem rename to acme/acme/_internal/tests/testdata/csr.pem diff --git a/acme/tests/testdata/dsa512_key.pem b/acme/acme/_internal/tests/testdata/dsa512_key.pem similarity index 100% rename from acme/tests/testdata/dsa512_key.pem rename to acme/acme/_internal/tests/testdata/dsa512_key.pem diff --git a/acme/tests/testdata/ec_secp384r1_key.pem b/acme/acme/_internal/tests/testdata/ec_secp384r1_key.pem similarity index 100% rename from acme/tests/testdata/ec_secp384r1_key.pem rename to acme/acme/_internal/tests/testdata/ec_secp384r1_key.pem diff --git a/acme/tests/testdata/rsa1024_cert.pem b/acme/acme/_internal/tests/testdata/rsa1024_cert.pem similarity index 100% rename from acme/tests/testdata/rsa1024_cert.pem rename to acme/acme/_internal/tests/testdata/rsa1024_cert.pem diff --git a/acme/tests/testdata/rsa1024_key.pem b/acme/acme/_internal/tests/testdata/rsa1024_key.pem similarity index 100% rename from acme/tests/testdata/rsa1024_key.pem rename to acme/acme/_internal/tests/testdata/rsa1024_key.pem diff --git a/acme/tests/testdata/rsa2048_cert.pem b/acme/acme/_internal/tests/testdata/rsa2048_cert.pem similarity index 100% rename from acme/tests/testdata/rsa2048_cert.pem rename to acme/acme/_internal/tests/testdata/rsa2048_cert.pem diff --git a/acme/tests/testdata/rsa2048_key.pem b/acme/acme/_internal/tests/testdata/rsa2048_key.pem similarity index 100% rename from acme/tests/testdata/rsa2048_key.pem rename to acme/acme/_internal/tests/testdata/rsa2048_key.pem diff --git a/acme/tests/testdata/rsa256_key.pem b/acme/acme/_internal/tests/testdata/rsa256_key.pem similarity index 100% rename from acme/tests/testdata/rsa256_key.pem rename to acme/acme/_internal/tests/testdata/rsa256_key.pem diff --git a/acme/tests/testdata/rsa4096_cert.pem b/acme/acme/_internal/tests/testdata/rsa4096_cert.pem similarity index 100% rename from acme/tests/testdata/rsa4096_cert.pem rename to acme/acme/_internal/tests/testdata/rsa4096_cert.pem diff --git a/acme/tests/testdata/rsa4096_key.pem b/acme/acme/_internal/tests/testdata/rsa4096_key.pem similarity index 100% rename from acme/tests/testdata/rsa4096_key.pem rename to acme/acme/_internal/tests/testdata/rsa4096_key.pem diff --git a/acme/tests/testdata/rsa512_key.pem b/acme/acme/_internal/tests/testdata/rsa512_key.pem similarity index 100% rename from acme/tests/testdata/rsa512_key.pem rename to acme/acme/_internal/tests/testdata/rsa512_key.pem diff --git a/acme/tests/util_test.py b/acme/acme/_internal/tests/util_test.py similarity index 100% rename from acme/tests/util_test.py rename to acme/acme/_internal/tests/util_test.py diff --git a/mypy.ini b/mypy.ini index c776dc9a6..6c01929d4 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1,4 +1,7 @@ [mypy] +# Removing this exclude setting is being tracked by +# https://github.com/certbot/certbot/issues/7909. +exclude = .*/_internal/tests/ ignore_missing_imports = True warn_unused_ignores = True show_error_codes = True diff --git a/tox.ini b/tox.ini index 3652205b1..d4502d88c 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,9 @@ [tox] skipsdist = true -envlist = {cover,lint,mypy}-{win,posix} +# mypy doesn't current pass for us on Windows. Fixing that is being tracked by +# https://github.com/certbot/certbot/issues/7803. +envlist = {cover,lint}-{win,posix},mypy-posix [base] # pip installs the requested packages in editable mode