Display warning if Python version is less than 3.7 (#994)

* Add Python version check and faulty test to confirm it's working (should fail on 3.6 build only)
* Apply formatting
* Fix behave Python version test
* Make error message more descriptive and friendly
This commit is contained in:
Micah Jerome Ellison 2020-07-12 16:24:46 -07:00 committed by GitHub
parent 686fc0cfdf
commit 4ca6e3f95f
3 changed files with 32 additions and 1 deletions

View file

@ -135,3 +135,7 @@ Feature: Basic reading and writing to a journal
When we run "jrnl --diagnostic"
Then the output should contain "jrnl"
And the output should contain "Python"
Scenario: Version warning appears for versions below 3.7
When we run "jrnl --diagnostic"
Then the Python version warning should appear if our version is below 3.7

View file

@ -372,6 +372,20 @@ def list_journal_directory(context, journal="default"):
print(os.path.join(root, file))
@then("the Python version warning should appear if our version is below {version}")
def check_python_warning_if_version_low_enough(context, version):
import packaging.version
import platform
if packaging.version.parse(platform.python_version()) < packaging.version.parse(
version
):
out = context.stderr_capture.getvalue()
assert "WARNING: Python versions" in out
else:
assert True
@then("fail")
def debug_fail(context):
assert False

View file

@ -21,6 +21,7 @@
import argparse
import logging
import packaging.version
import platform
import re
import sys
@ -29,7 +30,7 @@ import jrnl
from . import install, plugins, util
from .Journal import PlainJournal, open_journal
from .util import ERROR_COLOR, RESET_COLOR, UserAbort
from .util import WARNING_COLOR, ERROR_COLOR, RESET_COLOR, UserAbort
log = logging.getLogger(__name__)
logging.getLogger("keyring.backend").setLevel(logging.ERROR)
@ -313,6 +314,18 @@ def configure_logger(debug=False):
def run(manual_args=None):
if packaging.version.parse(platform.python_version()) < packaging.version.parse(
"3.7"
):
print(
f"""{WARNING_COLOR}
WARNING: Python versions below 3.7 will no longer be supported as of jrnl v2.5
(the next release). You are currently on Python {platform.python_version()}. Please update to
Python 3.7 (or higher) soon.
{RESET_COLOR}""",
file=sys.stderr,
)
if manual_args is None:
manual_args = sys.argv[1:]