/
niceSOFT
/
python3-hatchling
Обзор
Документация
Войти
/
niceSOFT
/
python3-hatchling
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/cli/config/test_set.py
251 строка
6 KB
Dimitri Papadopoulos Orfanos
Upgrade Ruff to 0.13.2 (#1890)
28 сен 2025, 21:20
Не верифицирован
28 сен 2025, 21:20
aff6f39
Код
Авторство
О чём код?
def test_standard(hatch, config_file, helpers): result = hatch("config", "set", "project", "foo") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ New setting: project = "foo" """ ) config_file.load() assert config_file.model.project == "foo" def test_standard_deep(hatch, config_file, helpers): result = hatch("config", "set", "template.name", "foo") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ New setting: [template] name = "foo" """ ) config_file.load() assert config_file.model.template.name == "foo" def test_standard_complex_sequence(hatch, config_file, helpers): result = hatch("config", "set", "dirs.project", "['/foo', '/bar']") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ New setting: [dirs] project = ["/foo", "/bar"] """ ) config_file.load() assert config_file.model.dirs.project == ["/foo", "/bar"] def test_standard_complex_map(hatch, config_file, helpers): result = hatch("config", "set", "projects", "{'a': '/foo', 'b': '/bar'}") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ New setting: [projects] a = "/foo" b = "/bar" """ ) config_file.load() assert config_file.model.projects["a"].location == "/foo" assert config_file.model.projects["b"].location == "/bar" def test_standard_hidden(hatch, config_file, helpers): result = hatch("config", "set", "publish.index.auth", "foo") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ New setting: [publish.index] auth = "<...>" """ ) config_file.load() assert config_file.model.publish["index"]["auth"] == "foo" def test_prompt(hatch, config_file, helpers): result = hatch("config", "set", "project", input="foo") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Value for `project`: foo New setting: project = "foo" """ ) config_file.load() assert config_file.model.project == "foo" def test_prompt_hidden(hatch, config_file, helpers): result = hatch("config", "set", "publish.index.auth", input="foo") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( f""" Value for `publish.index.auth`:{" "} New setting: [publish.index] auth = "<...>" """ ) config_file.load() assert config_file.model.publish["index"]["auth"] == "foo" def test_prevent_invalid_config(hatch, config_file, helpers): original_mode = config_file.model.mode result = hatch("config", "set", "mode", "foo") assert result.exit_code == 1 assert result.output == helpers.dedent( """ Error parsing config: mode must be one of: aware, local, project """ ) config_file.load() assert config_file.model.mode == original_mode def test_resolve_project_location_basic(hatch, config_file, helpers, temp_dir): config_file.model.project = "foo" config_file.save() with temp_dir.as_cwd(): result = hatch("config", "set", "projects.foo", ".") path = str(temp_dir).replace("\\", "\\\\") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( f""" New setting: [projects] foo = "{path}" """ ) config_file.load() assert config_file.model.projects["foo"].location == str(temp_dir) def test_resolve_project_location_complex(hatch, config_file, helpers, temp_dir): config_file.model.project = "foo" config_file.save() with temp_dir.as_cwd(): result = hatch("config", "set", "projects.foo.location", ".") path = str(temp_dir).replace("\\", "\\\\") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( f""" New setting: [projects.foo] location = "{path}" """ ) config_file.load() assert config_file.model.projects["foo"].location == str(temp_dir) def test_project_location_basic_set_first_project(hatch, config_file, helpers, temp_dir): with temp_dir.as_cwd(): result = hatch("config", "set", "projects.foo", ".") path = str(temp_dir).replace("\\", "\\\\") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( f""" New setting: project = "foo" [projects] foo = "{path}" """ ) config_file.load() assert config_file.model.project == "foo" assert config_file.model.projects["foo"].location == str(temp_dir) def test_project_location_complex_set_first_project(hatch, config_file, helpers, temp_dir): with temp_dir.as_cwd(): result = hatch("config", "set", "projects.foo.location", ".") path = str(temp_dir).replace("\\", "\\\\") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( f""" New setting: project = "foo" [projects.foo] location = "{path}" """ ) config_file.load() assert config_file.model.project == "foo" assert config_file.model.projects["foo"].location == str(temp_dir) def test_booleans(hatch, config_file, helpers, temp_dir): assert config_file.model.template.licenses.headers is True with temp_dir.as_cwd(): result = hatch("config", "set", "template.licenses.headers", "false") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ New setting: [template.licenses] headers = false """ ) config_file.load() assert config_file.model.template.licenses.headers is False with temp_dir.as_cwd(): result = hatch("config", "set", "template.licenses.headers", "TruE") assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ New setting: [template.licenses] headers = true """ ) config_file.load() assert config_file.model.template.licenses.headers is True