Commit Graph
9506 Commits
Author SHA1 Message Date
Ye Wang 7fe64c3b9b Add clarification of what means in the case of creating a SAN cert. 2018-11-16 12:37:06 -05:00
Adrien FerrandandBrad Warren 5073090a20 Update tools/venv3.py to support py launcher on Windows (#6493)
Following some inconsistencies occurred during by developments, and in the light of #6508, it decided to wrote a PR that will take fully advantage of the conversion from bash to python to the development setup tools.

This PR adresses several issues when trying to use the development setup tools (`tools/venv.py` and `tools/venv3.py`:
* on Windows, `python` executable is not always in PATH (default behavior)
* even if the option is checked, the `python` executable is not associated to the usually symlink `python3` on Windows
* on Windows again, really powerful introspection of the available Python environments can be done with `py`, the Windows Python launcher
* in general for all systems, `tools/venv.py` and `tools/venv3.py` ensures that the respective Python major version will be used to setup the virtual environment if available.
* finally, the best and first candidate to test should be the Python executable used to launch the `tools/venv*.py` script. It was not relevant before because it was shell scripts, but do it is.

The logic is shared in `_venv_common.py`, and will be called appropriately for both scripts. In priority decreasing order, python executable will be search and tested:
* from the current Python executable, as exposed by `sys.executable`
* from any python or pythonX (X as a python version like 2, 3 or 2.7 or 3.4) executable available in PATH
* from the Windows Python launched `py` if available

Individual changes were:

* Update tools/venv3.py to support py launcher on Windows

* Fix typo in help message

* More explicit calls with space protection

* Complete refactoring to take advantage of the python runtime, and control of the compatible version to use.
2018-11-15 15:17:36 -08:00
Adrien FerrandandBrad Warren b3d2ac5161 Fail-fast in test/cover/lint scripts (#6487)
After #6485 and #6435, it appears that there is no good reason to not fail fast when test, cover or linting scripts are executed.

This PR ensures to fail fast by invoking commands throught subprocess.check_call instead of subprocess.call, and by removing the handling of non-zero exit code at the end of theses scripts.

As now coverage on Windows is executed with thresholds, I added specific thresholds for this platform. Because some portions of code that are done for Unix platform will not be executed on Windows.

Note that coverage reports from Travis and AppVeyor are accumulated on Codecov. So if a file is covered up to 50 % on Linux, and all other parts are covered on Windows, then coverage is 100 % for Codecov.

Note: that PR also fixes the ability of coverage tests to fail if thresholds are exceeded.

* Use check_call to fail fast in all scripts related to tests/lint/coverage/deploy

* Make specific coverage threshold for windows
2018-11-14 13:57:40 -08:00
Adrien FerrandandBrad Warren ad885afdb8 Correct venv3 detection on windows (#6490)
A little typo in the _venv_common.py block the script to finish correctly once the virtual environment has been setup on Windows.

This PR fixes that.
2018-11-09 16:17:17 -08:00
Brad Warren ee6f20d93d Clarify letsencrypt-auto to certbot-auto message 2018-11-08 15:39:24 -08:00
Adrien FerrandandBrad Warren 7352727a65 [URGENT] Fix the CI system (#6485)
It is about the exit codes that are returned from the various scripts in tools during tox execution.
Indeed, tox relies on the non-zero exit code from a given script to know that something failed during the execution.

Previously, theses scripts were in bash, and a bash script returns an exit code that is the higher code returned from any of the command executed by the script. So if any command return a non-zero (in particular pylint or pytest), then the script return also non-zero.

Now that these scripts are converted into python, pylint and pytest are executed via subprocess, that returns the exit code as variables. But if theses codes are not handled explicitly, the python script itself will return zero if no python exception occured. As a consequence currently, Certbot CI system is unable to detect any test error or lint error, because there is no exception in this case, only exit codes from the binaries executed.

This PR fixes that, by handling correctly the exit code from the most critical scripts, install_and_test.py and tox.cover.py, but also all the scripts that I converted into Python and that could be executed in the context of a shell (via tox or directly for instance).
2018-11-08 08:35:07 -08:00
Adrien FerrandandBrad Warren 3d0e16ece3 [Windows|Unix] Rewrite bash scripts for tests into python (#6435)
Certbot relies heavily on bash scripts to deploy a development environment and to execute tests. This is fine for Linux systems, including Travis, but problematic for Windows machines.

This PR converts all theses scripts into Python, to make them platform independant.

As a consequence, tox-win.ini is not needed anymore, and tox can be run indifferently on Windows or on Linux using a common tox.ini. AppVeyor is updated accordingly to execute tests for acme, certbot and all dns plugins. Other tests are not executed as they are for Docker, unsupported Apache/Nginx/Postfix plugins (for now) or not relevant for Windows (explicit Linux distribution tests or pylint).

Another PR will be done on certbot website to update how a dev environment can be set up.

* Replace several shell scripts by python equivalent.

* Correction on tox coverage

* Extend usage of new python scripts

* Various corrections

* Replace venv construction bash scripts by python equivalents

* Update tox.ini

* Unicode lines to compare files

* Put modifications on letsencrypt-auto-source instead of generated scripts

* Add executable permissions for Linux.

* Merge tox win tests into main tox

* Skip lock_test on Windows

* Correct appveyor config

* Update appveyor.yml

* Explicit coverage py27 or py37

* Avoid to cover non supported certbot plugins on Windows

* Update tox.ini

* Remove specific warnings during CI

* No cover on a debug code for tests only.

* Update documentation and help script on venv/venv3.py

* Customize help message for Windows

* Quote correctly executable path with potential spaces in it.

* Copy pipstrap from upstream
2018-11-07 17:16:16 -08:00
Brad WarrenandGitHub b17c322483 Merge pull request #6483 from certbot/candidate-0.28.0-2
Release 0.28.0 part 2
2018-11-07 16:30:04 -08:00
Brad Warren 63e0f56784 update changelog for 0.29.0 2018-11-07 15:56:29 -08:00
Brad Warren 22858c6025 Bump version to 0.29.0 2018-11-07 13:22:59 -08:00
Brad Warren c1300a8e1b Release 0.28.0 v0.28.0 2018-11-07 13:22:57 -08:00
Brad Warren f3ff548a41 Update changelog for 0.28.0 release. 2018-11-07 13:02:25 -08:00
Adrien FerrandandBrad Warren e6e323e3ff Update Lexicon to correct use of HTTP proxy on OVH provider (#6479)
This PR update requirement of Lexicon to 2.7.14 on OVH plugin, to allow HTTP proxy to be used correctly when underlying OVH provider is invoked.

* Update Lexicon to correct use of HTTP proxy on OVH provider

* Update dev_constraints.txt

* Update CHANGELOG.md
2018-11-07 07:49:13 -08:00
Adrien FerrandandBrad Warren 4edfb3ef65 [Windows] Handle file renaming when the destination path already exists (#6415)
On Linux, you can invoke os.rename(src, dst) even if dst already exists. In this case, destination file will be atomically replaced by the source file.

On Windows, this will lead to an OSError because changes are not atomic. This cause certbot renew to fail in particular, because the old certificate configuration needs to be replace by the new when a certificate is effectively renewed.

One could use the cross-platform function os.replace, but it is available only on Python >= 3.3.

This PR add a function in compat to handle correctly this case on Windows, and delegating everything else to os.rename.

* Cross platform compatible os.rename (we can use os.replace if its python 3)

* Use os.replace instead of custom non-atomic code.

* Avoid errors for lint and mypy. Add a test.
2018-11-06 15:35:09 -08:00
Erica Portnoy 92989956f9 no newline in py27 2018-11-05 17:47:38 -08:00
Erica Portnoy 39a008eb83 ignore our own TLS-SNI-01 warning 2018-11-05 17:42:19 -08:00
Erica Portnoy 91b3c5d61c remove pytest.mark, move to specific ignore in pytest.ini 2018-11-05 17:41:26 -08:00
Erica Portnoy c3fa05ba74 remove unused six imports 2018-11-05 17:38:29 -08:00
Erica Portnoy 5dc9dd8dea Pin requests' dependencies in certbot-auto 2018-11-05 17:34:33 -08:00
Erica Portnoy 6c8652a0a6 add comment explaining about boto* in oldest_constraints.txt 2018-11-05 17:30:26 -08:00
Erica Portnoy b7f4b33ffb Remove module-level ignore::ResourceWarnings 2018-11-05 17:28:26 -08:00
Erica Portnoy 79b2ea19fb no need for U flag because we won't support py2 on windows 2018-11-05 17:19:57 -08:00
Erica Portnoy 9cc5d18b97 Merge branch 'master' into warnings-are-errors 2018-11-05 17:17:51 -08:00
ohemorangeandBrad Warren 47062dbfbf update changelog (#6476) 2018-11-05 17:09:03 -08:00
Erica Portnoy 0e98904bec Merge branch 'master' into warnings-are-errors 2018-11-05 16:57:50 -08:00
ohemorangeandBrad Warren cbdc2ee23b Log warning about TLS-SNI deprecation in Certbot (#6468)
For #6319.

* print warning in auth_handler

* add test
2018-11-05 15:01:16 -08:00
ohemorangeandGitHub cb8dd8a428 Warn when using deprecated acme.challenges.TLSSNI01 (#6469)
* Warn when using deprecated acme.challenges.TLSSNI01

* Update changelog

* remove specific date from warning

* add a raw assert for mypy optional type checking
2018-11-05 14:50:20 -08:00
Adrien FerrandandBrad Warren bc7763dd0f Lexicon v3 compatibility (#6474)
* Propagate correctly domain to lexicon providers

* Pass required parameter to ovh provider

* Fix all other lexicon-based dns plugins
2018-11-05 14:07:09 -08:00
ohemorangeandBrad Warren 9403c1641d Stop preferring TLS-SNI in the Apache, Nginx, and standalone plugins (#6461)
* flip challenge preference in Nginx

* Fix Nginx tests

* Flip challenge preference in Apache

* Flip challenge preference in standalone

* update changelog

* continue to run with tls-sni in integration tests for coverage
2018-11-05 13:58:56 -08:00
Georgio NicolasandGitHub 9fa0a58545 Remove mention of TLS-SNI-01 2018-11-04 01:29:38 -04:00
Georgio NicolasandGitHub 94f0a915c0 Remove mentioning of TLS-SNI-01 2018-11-04 01:23:47 -04:00
ohemorangeandGitHub 2c1964c639 Use the ACMEv2 newNonce endpoint when a new nonce is needed (#6442)
Also, add checking to the newNonce HEAD request, and check responses in general before attempting to save a nonce, for a better error message.

* check response before adding nonce to the pool

* fix tests so that they test what they're supposed to test, and also allow the order of _add_nonce and _check_response to be switched

* make _get_nonce take acme_version

* Send HEAD to newNonce endpoint when using ACMEv2

* check the HEAD newNonce response

* remove unnecessary try; get returns None if the item doesn't exist

* instead of setting new_nonce_url on ClientNetwork, use the saved directory in ClientBase and pass that into ClientNetwork.post

* no need to test acme_version in _get_nonce

* pop new_nonce_url out of kwargs before passing to _send_request
2018-11-02 17:32:33 -07:00
Erica Portnoy eab7aa7bf1 Update changelog 2018-11-02 16:14:10 -07:00
Erica Portnoy bbf89781c9 Merge branch 'master' into warnings-are-errors 2018-11-02 16:12:39 -07:00
Erica Portnoy c98bf18a77 Use older version of boto in oldest tests, because new versions can't handle old versions of requests 2018-11-02 16:00:32 -07:00
Erica Portnoy 0caaf872fb bring requests back down to 2.4.1 in setup and oldest constraints 2018-11-02 15:53:44 -07:00
Erica Portnoy ac8d6f58bb Update requests version in oldest-constraints.txt 2018-11-02 15:30:42 -07:00
Erica Portnoy 1228f5da99 update letsencrypt-auto 2018-11-02 14:59:29 -07:00
Erica Portnoy 64a61fa6d4 Use a newer version of botocore that doesn't vendor requests, which we need because newer versions of requests don't have the DeprecationWarning 2018-11-02 14:53:55 -07:00
Erica Portnoy 1b595f26d8 Requests no longer vendorizes urllib3 2018-11-02 13:31:48 -07:00
Erica Portnoy a83afb6135 properly disable no-member 2018-11-02 13:31:04 -07:00
Erica Portnoy e37a8fbded Use a newer version of requests because of the upcoming Callable import Deprecation in Python 3.8 that warns in Python 3.7 2018-11-02 13:01:14 -07:00
Erica Portnoy d02ea812a5 Cover is run on 2.7, so mark 3-only lines as no cover 2018-11-02 12:36:42 -07:00
Erica Portnoy 28c117abe0 If ResourceWarning is specified in pytest.ini, tests fail on Python3. We should be catching all of them, and they usually fail to successfully error anyway, so this just means we get sligthly worse error messages when they do occur. 2018-11-02 12:31:55 -07:00
Joona HoikkalaandBrad Warren a1af42bc5f Dummy AWS credentials for Route53 tests to prevent outbound connections (#6456)
Boto3 / botocore library has a feature that tries to fetch AWS credentials from IAM if a set of credentials isn't available otherwise. This happens when boto loops through different credential providers in order to find the keys. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=912103

This PR simply adds dummy environmental variables for the tests that will be picked up by the credential provider iterator in order to prevent making outbound connections.

* Hardcode dummy AWS credentials to prevent boto3 making outgoing connections

* Remove the dummy credentials when tearing down test case
2018-11-02 09:59:27 -07:00
Erica Portnoy 36b6328acd Ignore ResourceWarnings in various modules in a 2-compatible way.
Sometimes tests are flaky about giving this warning, particularly in ACME. I recommend just ignoring them.
2018-11-01 17:56:01 -07:00
Erica Portnoy c699a50983 Ignore all ResourceWarnings in log_test.py 2018-11-01 17:35:12 -07:00
Erica Portnoy a5e26ca890 Ignore all ResourceWarnings in main_test.py, since they're flaky 2018-11-01 17:32:59 -07:00
Erica Portnoy de1554f785 Ignore more warnings. These are the ones I'm less sure about 2018-11-01 17:28:40 -07:00
Erica Portnoy 6e7d42f298 ignore ResourceWarnings in acme tests 2018-11-01 17:17:19 -07:00