def test_devenv(temp_repo: Repo): lib_requirements = [ "click", "flask", "werkzeug", "consolekit", "requests", "apeye", ] test_requirements = [ "pytest", "hypothesis", ] repo_path = PathPlus(temp_repo.path) (repo_path / "requirements.txt").write_lines(lib_requirements) (repo_path / "tests").mkdir() (repo_path / "tests/requirements.txt").write_lines(test_requirements) with in_directory(temp_repo.path): runner = CliRunner() result: Result = runner.invoke(devenv) assert result.exit_code == 0 assert result.stdout == 'Successfully created development virtualenv.\n' # Check list of packages in virtualenv venv_dir = repo_path / "venv" if sys.platform == "win32": version_dirs = [(venv_dir / "Lib")] elif PYPY: version_dirs = [venv_dir] else: version_dirs = list((venv_dir / "lib").glob("py*")) for version_dir in version_dirs: for package in lib_requirements: assert (version_dir / "site-packages" / package).is_dir() for package in test_requirements: assert (version_dir / "site-packages" / package).is_dir() assert len(version_dirs) == 1 pyvenv_config: Dict[str, str] = read_pyvenv(venv_dir) assert "prompt" in pyvenv_config assert pyvenv_config["prompt"] == "(repo_helper_demo) " assert "repo_helper_devenv" in pyvenv_config assert pyvenv_config["repo_helper_devenv"] == __version__ assert "virtualenv" in pyvenv_config assert "include-system-site-packages" in pyvenv_config assert not strtobool(pyvenv_config["include-system-site-packages"])
def test_mkdevenv_no_lib_deps_dynamic(tmp_pathplus: PathPlus, capsys): test_requirements = [ "pytest", "hypothesis", ] (tmp_pathplus / "pyproject.toml").write_lines([ "[build-system]", 'requires = ["setuptools", "wheel"]', '', "[project]", "name = 'pyproject-devenv-demo'", "dynamic = ['dependencies']", ]) (tmp_pathplus / "requirements.txt").touch() (tmp_pathplus / "tests").mkdir() (tmp_pathplus / "tests/requirements.txt").write_lines(test_requirements) assert mkdevenv(tmp_pathplus, tmp_pathplus / "venv", verbosity=1, upgrade=False) == 0 capout = capsys.readouterr() assert not capout.err assert "Installing library requirements" not in capout.out # Check list of packages in virtualenv venv_dir = tmp_pathplus / "venv" if PYPY: version_dirs = [venv_dir] elif sys.platform == "win32": version_dirs = [(venv_dir / "Lib")] else: version_dirs = list((venv_dir / "lib").glob("py*")) for version_dir in version_dirs: for package in test_requirements: assert (version_dir / "site-packages" / package).is_dir() assert len(version_dirs) == 1 pyvenv_config: Dict[str, str] = read_pyvenv(venv_dir) assert "prompt" in pyvenv_config assert pyvenv_config["prompt"] == "(pyproject-devenv-demo) " assert "pyproject-devenv" in pyvenv_config assert pyvenv_config["pyproject-devenv"] == __version__ assert "virtualenv" in pyvenv_config assert "include-system-site-packages" in pyvenv_config assert not strtobool(pyvenv_config["include-system-site-packages"])
def from_xml(cls, element): """ Create a :class:`~.Device` object from an XML element. :param element: The XML element to parse the data from """ return cls( device_id=getattr( element, "{http://tempuri.org/DataFileReport.xsd}DeviceId"), display_name=element.DisplayName, rc_device=strtobool(str(element.IsRCDevice)), )
def format_required(self, required: str) -> bool: """ Formats the ``:required:`` option. :param required: :rtype: .. versionadded:: 1.1.0 """ return strtobool(required)
def from_xml(cls, element): """ Create a :class:`~.Field` object from an XML element. :param element: The XML element to parse the data from """ return cls(name=str(element.Name), display_name=str(element.DisplayName), data_type=int(element.DataType), units=str(element.Units), field_type=str(element.FieldType), overridden=strtobool(str(element.Overridden)), value=element.Value.text)
def visit_bool(self, raw_config_vars: RawConfigVarsType) -> bool: """ Used to validate and convert :class:`bool` values. :param raw_config_vars: """ obj = optional_getter(raw_config_vars, self.config_var, self.config_var.required) if not isinstance(obj, (int, bool, str)): raise ValueError( f"'{self.config_var.__name__}' must be one of {(int, bool, str)}, " f"not {type(obj)}") from None return self.config_var.rtype(strtobool(obj))
def test_testing_boolean_strings(): assert isinstance(testing_boolean_values(), MarkDecorator) assert isinstance(testing_boolean_values().mark, Mark) assert "boolean_string, expected_boolean" in testing_boolean_values( ).mark.args assert testing_boolean_values( ).mark.args[0] == "boolean_string, expected_boolean" assert len(testing_boolean_values().mark.args[1]) == 28 assert isinstance(testing_boolean_values().mark.args[1], list) assert isinstance(testing_boolean_values().mark.args[1][0], tuple) assert len(testing_boolean_values().mark.args[1][0]) == 2 assert isinstance(testing_boolean_values().mark.args[1][0][0], bool) assert isinstance(testing_boolean_values().mark.args[1][0][1], bool) for value, expects in testing_boolean_values().mark.args[1]: assert strtobool(value) is expects
def element_to_bool(val: Union[str, bool]) -> bool: """ Returns the boolean representation of ``val``. Values of ``-1`` are counted as :py:obj:`True` for the purposes of this function. :py:obj:`True` values are ``'y'``, ``'yes'``, ``'t'``, ``'true'``, ``'on'``, ``'1'``, ``1``, ``-1``, and ``'-1'``. :py:obj:`False` values are ``'n'``, ``'no'``, ``'f'``, ``'false'``, ``'off'``, ``'0'``, and ``0``. :raises: :py:exc:`ValueError` if 'val' is anything else. """ val = str(val).strip() if val == "-1": return True else: return bool(strtobool(val))
def test_mkdevenv_verbose(tmp_pathplus: PathPlus, extra_args): lib_requirements = [ "click", "flask", "werkzeug", "consolekit", "requests", "apeye", ] test_requirements = [ "pytest", "hypothesis", ] (tmp_pathplus / "pyproject.toml").write_lines([ "[build-system]", 'requires = ["setuptools", "wheel"]', '', "[project]", "name = 'pyproject-devenv-demo'", "dynamic = ['dependencies']", ]) (tmp_pathplus / "requirements.txt").write_lines(lib_requirements) (tmp_pathplus / "tests").mkdir() (tmp_pathplus / "tests/requirements.txt").write_lines(test_requirements) with in_directory(tmp_pathplus): runner = CliRunner() result: Result = runner.invoke(main, extra_args) assert result.exit_code == 0 assert " Installing project requirements " in result.stdout assert " Installing test requirements " in result.stdout assert " Installing build requirements " in result.stdout assert "Successfully created development virtualenv." in result.stdout # Check list of packages in virtualenv venv_dir = tmp_pathplus / "venv" if PYPY: version_dirs = [venv_dir] elif sys.platform == "win32": version_dirs = [(venv_dir / "Lib")] else: version_dirs = list((venv_dir / "lib").glob("py*")) for version_dir in version_dirs: for package in lib_requirements: assert (version_dir / "site-packages" / package).is_dir() for package in test_requirements: assert (version_dir / "site-packages" / package).is_dir() assert len(version_dirs) == 1 pyvenv_config: Dict[str, str] = read_pyvenv(venv_dir) assert "prompt" in pyvenv_config assert pyvenv_config["prompt"] == "(pyproject-devenv-demo) " assert "pyproject-devenv" in pyvenv_config assert pyvenv_config["pyproject-devenv"] == __version__ assert "virtualenv" in pyvenv_config assert "include-system-site-packages" in pyvenv_config assert not strtobool(pyvenv_config["include-system-site-packages"])
def test_strtobool_errors(self, obj, expects): with pytest.raises(expects): strtobool(obj)
def test_strtobool(self, boolean_string, expected_boolean): assert strtobool(boolean_string) == expected_boolean
def test_mkdevenv_no_build_deps(tmp_pathplus: PathPlus, capsys): lib_requirements = [ "click", "flask", "werkzeug", "consolekit", "requests", "apeye", ] test_requirements = [ "pytest", "hypothesis", ] (tmp_pathplus / "pyproject.toml").write_lines([ "[project]", "name = 'pyproject-devenv-demo'", "dynamic = ['dependencies']", '', "[project.optional-dependencies]", "doc = ['sphinx']", '', ]) (tmp_pathplus / "requirements.txt").write_lines(lib_requirements) (tmp_pathplus / "tests").mkdir() (tmp_pathplus / "tests/requirements.txt").write_lines(test_requirements) assert mkdevenv(tmp_pathplus, tmp_pathplus / "venv", verbosity=2, upgrade=False) == 0 capout = capsys.readouterr() assert not capout.err assert "Installing build requirements" not in capout.out # Check list of packages in virtualenv venv_dir = tmp_pathplus / "venv" if PYPY: version_dirs = [venv_dir] elif sys.platform == "win32": version_dirs = [(venv_dir / "Lib")] else: version_dirs = list((venv_dir / "lib").glob("py*")) for version_dir in version_dirs: for package in lib_requirements: assert (version_dir / "site-packages" / package).is_dir() for package in test_requirements: assert (version_dir / "site-packages" / package).is_dir() assert len(version_dirs) == 1 pyvenv_config: Dict[str, str] = read_pyvenv(venv_dir) assert "prompt" in pyvenv_config assert pyvenv_config["prompt"] == "(pyproject-devenv-demo) " assert "pyproject-devenv" in pyvenv_config assert pyvenv_config["pyproject-devenv"] == __version__ assert "virtualenv" in pyvenv_config assert "include-system-site-packages" in pyvenv_config assert not strtobool(pyvenv_config["include-system-site-packages"])