fix: keep negative index in jmespath unchanged when converting pytest files

This commit is contained in:
debugtalk
2022-03-22 17:00:09 +08:00
parent c57714bbfe
commit 35c385303d
3 changed files with 8 additions and 1 deletions

View File

@@ -2,6 +2,7 @@
## 3.1.8 (2022-03-22)
- fix: keep negative index in jmespath unchanged when converting pytest files, e.g. body.users[-1]
- change: load yaml file with FullLoader
## 3.1.7 (2022-03-22)

View File

@@ -58,9 +58,11 @@ def _convert_jmespath(raw: Text) -> Text:
raw_list = []
for item in raw.split("."):
if "-" in item:
if "-" in item and "[-" not in item:
# add quotes for field with separator
# e.g. headers.Content-Type => headers."Content-Type"
# also need to avoid replacing negative index in jmespath
# e.g. body.users[-1] => body.users[-1], keep unchanged
item = item.strip('"')
raw_list.append(f'"{item}"')
elif item.isdigit():

View File

@@ -45,6 +45,10 @@ class TestCompat(unittest.TestCase):
compat._convert_jmespath("body.data.buildings.0.building_id"),
"body.data.buildings[0].building_id",
)
self.assertEqual(
compat._convert_jmespath("body.users[-1]"),
"body.users[-1]",
)
with self.assertRaises(SystemExit):
compat._convert_jmespath("2.buildings.0.building_id")