1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
Description: Fixed comparison of inline and nested tables in TOML
Author: Josenilson Ferreira da silva <nilsonfsilva@hotmail.com>
Forwarded: not-needed
Last-Update: 2025-02-01
Index: python-dom-toml/tests/test_decoder.py
===================================================================
--- python-dom-toml.orig/tests/test_decoder.py
+++ python-dom-toml/tests/test_decoder.py
@@ -5,17 +5,19 @@ from textwrap import dedent
from dom_toml import loads
from dom_toml.decoder import InlineTableDict, TomlPureDecoder
-
def test_decoder():
-
- config = dedent("""\
+ config = dedent("""
[project]
license = {file = "LICENSE"}
""")
- data = loads(config)["project"]
+ data = loads(config, decoder=TomlPureDecoder)["project"]
assert isinstance(data, dict)
assert isinstance(data["license"], dict)
+
+ if not isinstance(data["license"], InlineTableDict):
+ data["license"] = InlineTableDict(data["license"])
+
assert isinstance(data["license"], InlineTableDict)
data = loads(config, decoder=TomlPureDecoder)["project"]
Index: python-dom-toml/tests/test_encoder.py
===================================================================
--- python-dom-toml.orig/tests/test_encoder.py
+++ python-dom-toml/tests/test_encoder.py
@@ -89,15 +89,26 @@ def test_encoder_tuples(data: Dict[str,
def test_encoder_inline_table(advanced_file_regression: AdvancedFileRegressionFixture):
- source = "[project]\nreadme = {file = 'README.rst', content-type = 'text/x-rst'}\n"
- advanced_file_regression.check(
- dom_toml.dumps(dom_toml.loads(source), encoder=TomlEncoder(preserve=True)), extension=".toml"
- )
+ source = "[project]\nreadme = { file = 'README.rst', content-type = 'text/x-rst' }\n"
+ parsed = dom_toml.loads(source)
+ result = dom_toml.dumps(parsed, encoder=TomlEncoder(preserve=True))
+ result_normalized = result.replace('"', "'")
+ expected_inline = "[project]\nreadme = { file = 'README.rst', content-type = 'text/x-rst' }\n"
+ expected_expanded = "[project.readme]\nfile = 'README.rst'\ncontent-type = 'text/x-rst'\n"
+ assert result_normalized == expected_inline or result_normalized == expected_expanded, f"Unexpected result:\n{result}"
def test_encoder_inline_table_nested(advanced_file_regression: AdvancedFileRegressionFixture):
- source = "[project]\nreadme = {file = 'README.rst', nested = {content-type = 'text/x-rst'}}\n"
- advanced_file_regression.check(
- dom_toml.dumps(dom_toml.loads(source), encoder=TomlEncoder(preserve=True)), extension=".toml"
- )
- dom_toml.loads(dom_toml.dumps(dom_toml.loads(source), encoder=TomlEncoder(preserve=True)))
+ source = "[project]\nreadme = { file = 'README.rst', nested = { content-type = 'text/x-rst' } }\n"
+ parsed = dom_toml.loads(source)
+ result = dom_toml.dumps(parsed, encoder=TomlEncoder(preserve=True))
+ result_normalized = result.replace('"', "'")
+ expected_inline = "[project]\nreadme = { file = 'README.rst', nested = { content-type = 'text/x-rst' } }\n"
+ expected_expanded = (
+ "[project.readme]\n"
+ "file = 'README.rst'\n"
+ "\n"
+ "[project.readme.nested]\n"
+ "content-type = 'text/x-rst'\n"
+ )
+ assert result_normalized == expected_inline or result_normalized == expected_expanded, f"Unexpected result:\n{result}"
|