mirror of https://github.com/pypa/hatch.git
250 lines
6.4 KiB
Python
250 lines
6.4 KiB
Python
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
|