Tipragot
628be439b8
Cela permet de ne pas avoir de problèmes de compatibilité car python est dans le git.
77 lines
3.1 KiB
Python
77 lines
3.1 KiB
Python
"""Ensure the argparse parser and Options class are in sync.
|
|
|
|
In particular, verify that the argparse defaults are the same as the Options
|
|
defaults, and that argparse doesn't assign any new members to the Options
|
|
object it creates.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
from mypy.main import infer_python_executable, process_options
|
|
from mypy.options import Options
|
|
from mypy.test.helpers import Suite, assert_equal
|
|
|
|
|
|
class ArgSuite(Suite):
|
|
def test_coherence(self) -> None:
|
|
options = Options()
|
|
_, parsed_options = process_options([], require_targets=False)
|
|
# FIX: test this too. Requires changing working dir to avoid finding 'setup.cfg'
|
|
options.config_file = parsed_options.config_file
|
|
assert_equal(options.snapshot(), parsed_options.snapshot())
|
|
|
|
def test_executable_inference(self) -> None:
|
|
"""Test the --python-executable flag with --python-version"""
|
|
sys_ver_str = "{ver.major}.{ver.minor}".format(ver=sys.version_info)
|
|
|
|
base = ["file.py"] # dummy file
|
|
|
|
# test inference given one (infer the other)
|
|
matching_version = base + [f"--python-version={sys_ver_str}"]
|
|
_, options = process_options(matching_version)
|
|
assert options.python_version == sys.version_info[:2]
|
|
assert options.python_executable == sys.executable
|
|
|
|
matching_version = base + [f"--python-executable={sys.executable}"]
|
|
_, options = process_options(matching_version)
|
|
assert options.python_version == sys.version_info[:2]
|
|
assert options.python_executable == sys.executable
|
|
|
|
# test inference given both
|
|
matching_version = base + [
|
|
f"--python-version={sys_ver_str}",
|
|
f"--python-executable={sys.executable}",
|
|
]
|
|
_, options = process_options(matching_version)
|
|
assert options.python_version == sys.version_info[:2]
|
|
assert options.python_executable == sys.executable
|
|
|
|
# test that --no-site-packages will disable executable inference
|
|
matching_version = base + [f"--python-version={sys_ver_str}", "--no-site-packages"]
|
|
_, options = process_options(matching_version)
|
|
assert options.python_version == sys.version_info[:2]
|
|
assert options.python_executable is None
|
|
|
|
# Test setting python_version/executable from config file
|
|
special_opts = argparse.Namespace()
|
|
special_opts.python_executable = None
|
|
special_opts.python_version = None
|
|
special_opts.no_executable = None
|
|
|
|
# first test inferring executable from version
|
|
options = Options()
|
|
options.python_executable = None
|
|
options.python_version = sys.version_info[:2]
|
|
infer_python_executable(options, special_opts)
|
|
assert options.python_version == sys.version_info[:2]
|
|
assert options.python_executable == sys.executable
|
|
|
|
# then test inferring version from executable
|
|
options = Options()
|
|
options.python_executable = sys.executable
|
|
infer_python_executable(options, special_opts)
|
|
assert options.python_version == sys.version_info[:2]
|
|
assert options.python_executable == sys.executable
|