From 457f100dcc6da7ba4dd40498230c712c71517589 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Fri, 18 Jul 2025 16:08:53 +0200 Subject: [PATCH 01/13] Added inline Python code self test "JPP_2100" --- test/JPP_TestUsecases.csv | 1 + test/JPP_TestUsecases.html | 37 +++++++++++++- test/JPP_TestUsecases.rst | 16 +++++- test/JPP_TestUsecases.txt | 8 ++- test/component_test.py | 4 +- .../test_27_INLINE_CODE_GOODCASE.py | 40 +++++++++++++++ test/testconfig/TestConfig.py | 51 ++++++++++++++++++- test/testfiles/jpp-test_config_2100.jsonp | 48 +++++++++++++++++ 8 files changed, 199 insertions(+), 6 deletions(-) create mode 100644 test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py create mode 100644 test/testfiles/jpp-test_config_2100.jsonp diff --git a/test/JPP_TestUsecases.csv b/test/JPP_TestUsecases.csv index 4cbf5d3..89f68e5 100644 --- a/test/JPP_TestUsecases.csv +++ b/test/JPP_TestUsecases.csv @@ -202,3 +202,4 @@ JPP_2055|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing s JPP_2056|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (7) JPP_2057|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (8) JPP_2058|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (9) +JPP_2100|INLINE_CODE|GOODCASE|JSON file containing Python inline code diff --git a/test/JPP_TestUsecases.html b/test/JPP_TestUsecases.html index d201679..5c61962 100644 --- a/test/JPP_TestUsecases.html +++ b/test/JPP_TestUsecases.html @@ -6737,12 +6737,47 @@ + + + + + +203 + + + + + +JPP_2100 + + + + +INLINE_CODE + + + + +GOODCASE + + + + +JSON file containing Python inline code
+Expected: JsonPreprocessor returns expected values +
+https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 +
+Test needs to be adapted after bugfixing +
+ +
 

-
Generated: 10.04.2025 - 17:21:06
+
Generated: 18.07.2025 - 16:02:56
 
diff --git a/test/JPP_TestUsecases.rst b/test/JPP_TestUsecases.rst index 51ec9ce..3a48202 100644 --- a/test/JPP_TestUsecases.rst +++ b/test/JPP_TestUsecases.rst @@ -2125,5 +2125,19 @@ Test Use Cases ---- -Generated: 10.04.2025 - 17:21:06 +* **Test JPP_2100** + + [INLINE_CODE / GOODCASE] + + **JSON file containing Python inline code** + + Expected: JsonPreprocessor returns expected values + + *Comment: https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454* + + *Hint: Test needs to be adapted after bugfixing* + +---- + +Generated: 18.07.2025 - 16:02:56 diff --git a/test/JPP_TestUsecases.txt b/test/JPP_TestUsecases.txt index 73e9a1c..6c7bc27 100644 --- a/test/JPP_TestUsecases.txt +++ b/test/JPP_TestUsecases.txt @@ -868,5 +868,11 @@ Test JPP_2058 / PARAMETER_SCOPE / BADCASE Description: JSON file containing a parameter with missing scope (9) Expectation: No values are returned, and JsonPreprocessor throws an exception ------------------------------------------------------------------------------------------------------------------------ -Generated: 10.04.2025 - 17:21:06 +Test JPP_2100 / INLINE_CODE / GOODCASE +Description: JSON file containing Python inline code +Expectation: JsonPreprocessor returns expected values +Comment....: https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 +Hint.......: Test needs to be adapted after bugfixing +------------------------------------------------------------------------------------------------------------------------ +Generated: 18.07.2025 - 16:02:56 diff --git a/test/component_test.py b/test/component_test.py index 1ff943a..d198208 100644 --- a/test/component_test.py +++ b/test/component_test.py @@ -22,8 +22,8 @@ # # -------------------------------------------------------------------------------------------------------------- # -VERSION = "0.60.0" -VERSION_DATE = "23.04.2025" +VERSION = "0.61.0" +VERSION_DATE = "18.07.2025" # # -------------------------------------------------------------------------------------------------------------- #TM*** diff --git a/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py b/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py new file mode 100644 index 0000000..2d0decd --- /dev/null +++ b/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py @@ -0,0 +1,40 @@ +# ************************************************************************************************************** +# Copyright 2020-2023 Robert Bosch GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# -------------------------------------------------------------------------------------------------------------- +# +# test_27_INLINE_CODE_GOODCASE.py +# +# XC-HWP/ESW3-Queckenstedt +# +# 18.07.2025 - 16:02:56 +# +# -------------------------------------------------------------------------------------------------------------- + +import pytest +from pytestlibs.CExecute import CExecute + +# -------------------------------------------------------------------------------------------------------------- + +class Test_INLINE_CODE_GOODCASE: + +# -------------------------------------------------------------------------------------------------------------- + # Expected: JsonPreprocessor returns expected values + @pytest.mark.parametrize( + "Description", ["JSON file containing Python inline code",] + ) + def test_JPP_2100(self, Description): + nReturn = CExecute.Execute("JPP_2100") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index 2dd8b59..ddf952e 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -22,7 +22,7 @@ # # -------------------------------------------------------------------------------------------------------------- # -# 23.04.2025 +# 18.07.2025 # # !!! Temporarily tests are deactivated by the following line commented out: # # # listofdictUsecases.append(dictUsecase) @@ -4425,3 +4425,52 @@ del dictUsecase # -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2100" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Test needs to be adapted after bugfixing" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2100.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +[DOTDICT] (18/1) > {A} [INT] : 0 +[DOTDICT] (18/2) > {B} [INT] : 1 +[DOTDICT] (18/3) > {L1} [LIST] (3/1) > [INT] : 1 +[DOTDICT] (18/3) > {L1} [LIST] (3/2) > [INT] : 2 +[DOTDICT] (18/3) > {L1} [LIST] (3/3) > [INT] : 3 +[DOTDICT] (18/4) > {L2} [LIST] (3/1) > [INT] : 4 +[DOTDICT] (18/4) > {L2} [LIST] (3/2) > [INT] : 5 +[DOTDICT] (18/4) > {L2} [LIST] (3/3) > [INT] : 6 +[DOTDICT] (18/5) > {kA} [STR] : 'kA' +[DOTDICT] (18/6) > {kB} [STR] : 'kB' +[DOTDICT] (18/7) > {D1} [DOTDICT] (2/1) > {kA} [STR] : 'vA' +[DOTDICT] (18/7) > {D1} [DOTDICT] (2/2) > {kB} [STR] : 'vB' +[DOTDICT] (18/8) > {choice} [BOOL] : True +[DOTDICT] (18/9) > {value01} [INT] : 10 +[DOTDICT] (18/10) > {value02} [LIST] (2/1) > [INT] : 1 +[DOTDICT] (18/10) > {value02} [LIST] (2/2) > [INT] : 2 +[DOTDICT] (18/11) > {value04} [INT] : 4 +[DOTDICT] (18/12) > {code04} [STR] : '0 if True else 1' +[DOTDICT] (18/13) > {value04b} [INT] : 4 +[DOTDICT] (18/14) > {value05} [INT] : 5 +[DOTDICT] (18/15) > {code05} [STR] : '0 if not True else 1' +[DOTDICT] (18/16) > {value05b} [INT] : 5 +[DOTDICT] (18/17) > {values01} [DOTDICT] (3/1) > {kA} [STR] : 'A' +[DOTDICT] (18/17) > {values01} [DOTDICT] (3/2) > {kB} [INT] : 0 +[DOTDICT] (18/17) > {values01} [DOTDICT] (3/3) > {kC} [STR] : 'Z' +[DOTDICT] (18/18) > {values02} [LIST] (4/1) > [INT] : 1 +[DOTDICT] (18/18) > {values02} [LIST] (4/2) > [INT] : 2 +[DOTDICT] (18/18) > {values02} [LIST] (4/3) > [INT] : 3 +[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/1) > [INT] : 4 +[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/2) > [INT] : 5 +[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/3) > [INT] : 6 +[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/4) > [INT] : 1 +[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/5) > [INT] : 2 +[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/6) > [INT] : 3 +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- diff --git a/test/testfiles/jpp-test_config_2100.jsonp b/test/testfiles/jpp-test_config_2100.jsonp new file mode 100644 index 0000000..1fa3aa9 --- /dev/null +++ b/test/testfiles/jpp-test_config_2100.jsonp @@ -0,0 +1,48 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Test needs to be adapted after bugfixing + // https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 + // + "A" : 0, + "B" : 1, + "L1" : [1,2,3], + "L2" : [4,5,6], + "kA" : "kA", + "kB" : "kB", + "D1" : {"kA" : "vA", "kB" : "vB"}, + "choice" : True, + // + "value01" : <>, + "value02" : <>, + // !err! "value03" : <>, + // + "value04" : <>, + "code04" : "${A} if ${choice} else ${B}", + "value04b" : <>, + "value05" : <>, + "code05" : "${A} if not ${choice} else ${B}", + "value05b" : <>, + // + "values01" : {"kA" : "A", + "kB" : <>, + "kC" : "Z"}, + // + "values02" : <> + // + // !err! "value06" : ${L1}[<>] + // + // !err! "value07" : ${D1}[<>] +} From 91d8c71ec8b3a1b9af0e98f9e5600e25f774b977 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Fri, 25 Jul 2025 16:29:09 +0200 Subject: [PATCH 02/13] Documentation extended: Python inline code --- JsonPreprocessor/JsonPreprocessor.pdf | Bin 457347 -> 356711 bytes JsonPreprocessor/version.py | 4 +- .../release_items_JsonPreprocessor.json | 21 +++++++++- packagedoc/additional_docs/History.tex | 3 ++ .../additional_docs/The JSONP format.tex | 39 +++++++++++++++++- 5 files changed, 61 insertions(+), 6 deletions(-) diff --git a/JsonPreprocessor/JsonPreprocessor.pdf b/JsonPreprocessor/JsonPreprocessor.pdf index 2e05d68efed08b005626050c32a44f15615448f0..b3c1f23ec618ac1675bb5d5e44a776958f7010c6 100644 GIT binary patch delta 197851 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 Wrh&TmGjAK@{e?To^c*1p!0$i_=1fO`iQjCv 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 !x?~?ZtSHX2+W9{j&wq0N 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 +| ``\"C\" : <<${A} + ${B}>>`` *Result* diff --git a/packagedoc/additional_docs/The JSONP format.tex b/packagedoc/additional_docs/The JSONP format.tex index 09670c8..84a0704 100644 --- a/packagedoc/additional_docs/The JSONP format.tex +++ b/packagedoc/additional_docs/The JSONP format.tex @@ -1394,7 +1394,7 @@ \section{Python inline code} \begin{pythoncode} "A" : [1,2,3], "B" : [4,5,6], -"C" : <\textless{}\textless{}>eval ${A} + ${B}<\textgreater{}\textgreater{}> +"C" : <\textless{}\textless{}>${A} + ${B}<\textgreater{}\textgreater{}> \end{pythoncode} The expression \pcode{$\{A\} + $\{B\}} is handled as Python inline code. It is possible to use dollar operator expressions @@ -1405,12 +1405,23 @@ \section{Python inline code} The syntax of Python inline code is: \begin{pythoncode} -<\textless{}\textless{}>eval <(\emph{Python expression})><\textgreater{}\textgreater{}> +<\textless{}\textless{}><(\emph{Python expression})><\textgreater{}\textgreater{}> \end{pythoncode} The usage of Python inline code is limited to the right hand side of the colon (\emph{key values}). This feature cannot be used to create key names. +The Python inline code syntax cannot be used within strings: + +\begin{pythoncode} +"param" : "The value is <\textless{}\textless{}><(\emph{Python expression})><\textgreater{}\textgreater{}>" +\end{pythoncode} + + + + + + % -------------------------------------------------------------------------------------------------------------- diff --git a/test/component_test.py b/test/component_test.py index d198208..578a74c 100644 --- a/test/component_test.py +++ b/test/component_test.py @@ -22,8 +22,8 @@ # # -------------------------------------------------------------------------------------------------------------- # -VERSION = "0.61.0" -VERSION_DATE = "18.07.2025" +VERSION = "0.62.0" +VERSION_DATE = "05.08.2025" # # -------------------------------------------------------------------------------------------------------------- #TM*** diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index ddf952e..9bd868a 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -22,7 +22,7 @@ # # -------------------------------------------------------------------------------------------------------------- # -# 18.07.2025 +# 05.08.2025 # # !!! Temporarily tests are deactivated by the following line commented out: # # # listofdictUsecases.append(dictUsecase) @@ -4425,51 +4425,126 @@ del dictUsecase # -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- + +# dictUsecase['HINT'] = "Test needs to be adapted after bugfixing" +# dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" + dictUsecase = {} dictUsecase['TESTID'] = "JPP_2100" -dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with simple data types" dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Test needs to be adapted after bugfixing" +dictUsecase['HINT'] = "Issue because of 'eval' still required" dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2100.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ -[DOTDICT] (18/1) > {A} [INT] : 0 -[DOTDICT] (18/2) > {B} [INT] : 1 -[DOTDICT] (18/3) > {L1} [LIST] (3/1) > [INT] : 1 -[DOTDICT] (18/3) > {L1} [LIST] (3/2) > [INT] : 2 -[DOTDICT] (18/3) > {L1} [LIST] (3/3) > [INT] : 3 -[DOTDICT] (18/4) > {L2} [LIST] (3/1) > [INT] : 4 -[DOTDICT] (18/4) > {L2} [LIST] (3/2) > [INT] : 5 -[DOTDICT] (18/4) > {L2} [LIST] (3/3) > [INT] : 6 -[DOTDICT] (18/5) > {kA} [STR] : 'kA' -[DOTDICT] (18/6) > {kB} [STR] : 'kB' -[DOTDICT] (18/7) > {D1} [DOTDICT] (2/1) > {kA} [STR] : 'vA' -[DOTDICT] (18/7) > {D1} [DOTDICT] (2/2) > {kB} [STR] : 'vB' -[DOTDICT] (18/8) > {choice} [BOOL] : True -[DOTDICT] (18/9) > {value01} [INT] : 10 -[DOTDICT] (18/10) > {value02} [LIST] (2/1) > [INT] : 1 -[DOTDICT] (18/10) > {value02} [LIST] (2/2) > [INT] : 2 -[DOTDICT] (18/11) > {value04} [INT] : 4 -[DOTDICT] (18/12) > {code04} [STR] : '0 if True else 1' -[DOTDICT] (18/13) > {value04b} [INT] : 4 -[DOTDICT] (18/14) > {value05} [INT] : 5 -[DOTDICT] (18/15) > {code05} [STR] : '0 if not True else 1' -[DOTDICT] (18/16) > {value05b} [INT] : 5 -[DOTDICT] (18/17) > {values01} [DOTDICT] (3/1) > {kA} [STR] : 'A' -[DOTDICT] (18/17) > {values01} [DOTDICT] (3/2) > {kB} [INT] : 0 -[DOTDICT] (18/17) > {values01} [DOTDICT] (3/3) > {kC} [STR] : 'Z' -[DOTDICT] (18/18) > {values02} [LIST] (4/1) > [INT] : 1 -[DOTDICT] (18/18) > {values02} [LIST] (4/2) > [INT] : 2 -[DOTDICT] (18/18) > {values02} [LIST] (4/3) > [INT] : 3 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/1) > [INT] : 4 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/2) > [INT] : 5 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/3) > [INT] : 6 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/4) > [INT] : 1 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/5) > [INT] : 2 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/6) > [INT] : 3 +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2101" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with composite data types" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2101.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2102" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with simple conditions" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2102.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2103" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code within lists and dictionaries" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2103.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2104" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code as list index and dictionary key" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2104.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2105" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code in more complex scenarios" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2105.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2106" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with slicing" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required; slicing still banned" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2106.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2107" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with import paths" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required; entire import interpreted as path" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2107.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ """ listofdictUsecases.append(dictUsecase) del dictUsecase diff --git a/test/testfiles/jpp-test_config_2100.jsonp b/test/testfiles/jpp-test_config_2100.jsonp index 1fa3aa9..362e697 100644 --- a/test/testfiles/jpp-test_config_2100.jsonp +++ b/test/testfiles/jpp-test_config_2100.jsonp @@ -13,36 +13,12 @@ // limitations under the License. //************************************************************************** { - // Test needs to be adapted after bugfixing - // https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 - // - "A" : 0, - "B" : 1, - "L1" : [1,2,3], - "L2" : [4,5,6], - "kA" : "kA", - "kB" : "kB", - "D1" : {"kA" : "vA", "kB" : "vB"}, - "choice" : True, - // - "value01" : <>, - "value02" : <>, - // !err! "value03" : <>, - // - "value04" : <>, - "code04" : "${A} if ${choice} else ${B}", - "value04b" : <>, - "value05" : <>, - "code05" : "${A} if not ${choice} else ${B}", - "value05b" : <>, - // - "values01" : {"kA" : "A", - "kB" : <>, - "kC" : "Z"}, - // - "values02" : <> - // - // !err! "value06" : ${L1}[<>] - // - // !err! "value07" : ${D1}[<>] + // simple data types + "value1" : <<"ABC">>, + "value2" : <<25>>, + "value3" : <<2.5>>, + "value4" : <>, + "value5" : <>, + "value6" : <>, + "value7" : <> } diff --git a/test/testfiles/jpp-test_config_2101.jsonp b/test/testfiles/jpp-test_config_2101.jsonp new file mode 100644 index 0000000..3a73640 --- /dev/null +++ b/test/testfiles/jpp-test_config_2101.jsonp @@ -0,0 +1,23 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Composite data types + "value1" : <<[1, 2]>>, + "value2" : <<{"kA" : 1, "kB" : 2, "kC" : 3}>>, + "expression1" : [1, 2], + "value3" : <<${expression}>>, + "expression2" : {"kA" : 1, "kB" : 2}, + "value3" : <<${expression}>> +} diff --git a/test/testfiles/jpp-test_config_2102.jsonp b/test/testfiles/jpp-test_config_2102.jsonp new file mode 100644 index 0000000..dfae545 --- /dev/null +++ b/test/testfiles/jpp-test_config_2102.jsonp @@ -0,0 +1,26 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Simple conditions + // + "value1" : <<1 if True else 2>>, + // + "choice" : True, + "value2" : <<1 if ${choice} else 2>>, + // + "A" : 1, + "B" : 2, + "value3" : <<"${A}" if True else "${B}">> +} diff --git a/test/testfiles/jpp-test_config_2103.jsonp b/test/testfiles/jpp-test_config_2103.jsonp new file mode 100644 index 0000000..63ae163 --- /dev/null +++ b/test/testfiles/jpp-test_config_2103.jsonp @@ -0,0 +1,27 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code within lists and dictionaries + // + "A" : 1, + "B" : 2, + "choice" : True, + // + "values" : ["A", <<${A} if ${choice} else ${B}>>, "Z"], + // + "values" : {"kA" : "A", + "kB" : <<${A} if ${choice} else ${B}>>, + "kC" : "Z"} +} diff --git a/test/testfiles/jpp-test_config_2104.jsonp b/test/testfiles/jpp-test_config_2104.jsonp new file mode 100644 index 0000000..fde8a8c --- /dev/null +++ b/test/testfiles/jpp-test_config_2104.jsonp @@ -0,0 +1,28 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as list index and dictionary key + // + "A" : 0, + "B" : 1, + "kA" : "kA", + "kB" : "kB", + // + "listval" : [1,2,3], + "dictval" : {"kA" : "vA", "kB" : "vB"}, + // + "value1" : ${listval}[<<${A} if True else ${B}>>], + "value2" : ${dictval}[<<"${kA}" if True else "${kB}">>] +} diff --git a/test/testfiles/jpp-test_config_2105.jsonp b/test/testfiles/jpp-test_config_2105.jsonp new file mode 100644 index 0000000..67aa2a6 --- /dev/null +++ b/test/testfiles/jpp-test_config_2105.jsonp @@ -0,0 +1,34 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // More complex scenarios with Python inline code + // + "A" : [1,2,3], + "B" : [4,5,6], + "values" : <<${A} + [${B} + ${A}]>>, + // + "dict" : {"kA" : "vA", "kB" : "vB"}, + "key_list" : <>, + // + "value1" : <<(${A}[0] if True else ${B.1) + 1>>, + "code1" : (${A}[0] if True else ${B.1) + 1, + "value1b" : <<(${code04}) + 4>>, + // + "C" : "C", + "D" : "D", + "value2" : <<${C} + ${D}>>, + // ?? with or without quotes ?? + "value3" : <<"${C}" + "${D}">> +} diff --git a/test/testfiles/jpp-test_config_2106.jsonp b/test/testfiles/jpp-test_config_2106.jsonp new file mode 100644 index 0000000..f1f7f7f --- /dev/null +++ b/test/testfiles/jpp-test_config_2106.jsonp @@ -0,0 +1,23 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with slicing + "A" : [1,2,3], + "B" : [4,5,6], + "index" : 2, + "values1" : <<${A}[:${index}]>>, + // + "values2" : <<${A} + ${B}[-1]>> +} diff --git a/test/testfiles/jpp-test_config_2107.jsonp b/test/testfiles/jpp-test_config_2107.jsonp new file mode 100644 index 0000000..1ca5ea0 --- /dev/null +++ b/test/testfiles/jpp-test_config_2107.jsonp @@ -0,0 +1,22 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with import paths + // + "path_1" : "./dynamic_imports/AA/imported.AA.jsonp", + "path_2" : "./dynamic_imports/AA/BB/imported.BB.jsonp", + // + "[import]" : <<${path_1} if True else ${path_2}>> +} From dd2d62ea8384816272c9e1d897406d9ef916381e Mon Sep 17 00:00:00 2001 From: qth2gi Date: Tue, 5 Aug 2025 16:56:17 +0200 Subject: [PATCH 04/13] Reworked tests commented out (JsonPreprocessor adaptions required) --- test/JPP_TestUsecases.csv | 1 - test/JPP_TestUsecases.html | 37 +---------------- test/JPP_TestUsecases.rst | 16 +------- test/JPP_TestUsecases.txt | 8 +--- .../test_27_INLINE_CODE_GOODCASE.py | 40 ------------------- test/testconfig/TestConfig.py | 20 ++++------ 6 files changed, 11 insertions(+), 111 deletions(-) delete mode 100644 test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py diff --git a/test/JPP_TestUsecases.csv b/test/JPP_TestUsecases.csv index 89f68e5..4cbf5d3 100644 --- a/test/JPP_TestUsecases.csv +++ b/test/JPP_TestUsecases.csv @@ -202,4 +202,3 @@ JPP_2055|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing s JPP_2056|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (7) JPP_2057|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (8) JPP_2058|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (9) -JPP_2100|INLINE_CODE|GOODCASE|JSON file containing Python inline code diff --git a/test/JPP_TestUsecases.html b/test/JPP_TestUsecases.html index 5c61962..3904c5f 100644 --- a/test/JPP_TestUsecases.html +++ b/test/JPP_TestUsecases.html @@ -6737,47 +6737,12 @@ - - - - - -203 - - - - - -JPP_2100 - - - - -INLINE_CODE - - - - -GOODCASE - - - - -JSON file containing Python inline code
-Expected: JsonPreprocessor returns expected values -
-https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 -
-Test needs to be adapted after bugfixing -
- -

 

-
Generated: 18.07.2025 - 16:02:56
+
Generated: 05.08.2025 - 16:52:10
 
diff --git a/test/JPP_TestUsecases.rst b/test/JPP_TestUsecases.rst index 3a48202..89a6e45 100644 --- a/test/JPP_TestUsecases.rst +++ b/test/JPP_TestUsecases.rst @@ -2125,19 +2125,5 @@ Test Use Cases ---- -* **Test JPP_2100** - - [INLINE_CODE / GOODCASE] - - **JSON file containing Python inline code** - - Expected: JsonPreprocessor returns expected values - - *Comment: https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454* - - *Hint: Test needs to be adapted after bugfixing* - ----- - -Generated: 18.07.2025 - 16:02:56 +Generated: 05.08.2025 - 16:52:10 diff --git a/test/JPP_TestUsecases.txt b/test/JPP_TestUsecases.txt index 6c7bc27..8cd44d9 100644 --- a/test/JPP_TestUsecases.txt +++ b/test/JPP_TestUsecases.txt @@ -868,11 +868,5 @@ Test JPP_2058 / PARAMETER_SCOPE / BADCASE Description: JSON file containing a parameter with missing scope (9) Expectation: No values are returned, and JsonPreprocessor throws an exception ------------------------------------------------------------------------------------------------------------------------ -Test JPP_2100 / INLINE_CODE / GOODCASE -Description: JSON file containing Python inline code -Expectation: JsonPreprocessor returns expected values -Comment....: https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 -Hint.......: Test needs to be adapted after bugfixing ------------------------------------------------------------------------------------------------------------------------- -Generated: 18.07.2025 - 16:02:56 +Generated: 05.08.2025 - 16:52:10 diff --git a/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py b/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py deleted file mode 100644 index 2d0decd..0000000 --- a/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py +++ /dev/null @@ -1,40 +0,0 @@ -# ************************************************************************************************************** -# Copyright 2020-2023 Robert Bosch GmbH -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -------------------------------------------------------------------------------------------------------------- -# -# test_27_INLINE_CODE_GOODCASE.py -# -# XC-HWP/ESW3-Queckenstedt -# -# 18.07.2025 - 16:02:56 -# -# -------------------------------------------------------------------------------------------------------------- - -import pytest -from pytestlibs.CExecute import CExecute - -# -------------------------------------------------------------------------------------------------------------- - -class Test_INLINE_CODE_GOODCASE: - -# -------------------------------------------------------------------------------------------------------------- - # Expected: JsonPreprocessor returns expected values - @pytest.mark.parametrize( - "Description", ["JSON file containing Python inline code",] - ) - def test_JPP_2100(self, Description): - nReturn = CExecute.Execute("JPP_2100") - assert nReturn == 0 -# -------------------------------------------------------------------------------------------------------------- diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index 9bd868a..7b4d195 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -4425,10 +4425,6 @@ del dictUsecase # -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- - -# dictUsecase['HINT'] = "Test needs to be adapted after bugfixing" -# dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" - dictUsecase = {} dictUsecase['TESTID'] = "JPP_2100" dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with simple data types" @@ -4441,7 +4437,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4456,7 +4452,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4471,7 +4467,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4486,7 +4482,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4501,7 +4497,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4516,7 +4512,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4531,7 +4527,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4546,6 +4542,6 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- From ee8451fd009606e1a17fb138fd4acedcd669517a Mon Sep 17 00:00:00 2001 From: qth2gi Date: Wed, 6 Aug 2025 18:33:44 +0200 Subject: [PATCH 05/13] BADCASE tests of section INLINE_CODE added * Tests are commented out * Expected results not yet defined Reason: Feature currently under construction --- test/component_test.py | 4 +- test/testconfig/TestConfig.py | 635 ++++++++++++++++- test/testfiles/jpp-test_config_2103.jsonp | 4 +- test/testfiles/jpp-test_config_2104.jsonp | 2 +- test/testfiles/jpp-test_config_2105.jsonp | 1 - test/testfiles/jpp-test_config_2150.jsonp | 19 + test/testfiles/jpp-test_config_2151.jsonp | 19 + test/testfiles/jpp-test_config_2152.jsonp | 20 + test/testfiles/jpp-test_config_2153.jsonp | 19 + test/testfiles/jpp-test_config_2154).jsonp | 19 + test/testfiles/jpp-test_config_2155.jsonp | 19 + test/testfiles/jpp-test_config_2156.jsonp | 19 + test/testfiles/jpp-test_config_2157.jsonp | 20 + test/testfiles/jpp-test_config_2158.jsonp | 19 + test/testfiles/jpp-test_config_2159.jsonp | 19 + test/testfiles/jpp-test_config_2160.jsonp | 19 + test/testfiles/jpp-test_config_2161.jsonp | 19 + test/testfiles/jpp-test_config_2162.jsonp | 19 + test/testfiles/jpp-test_config_2163.jsonp | 19 + test/testfiles/jpp-test_config_2164.jsonp | 19 + test/testfiles/jpp-test_config_2165.jsonp | 20 + test/testfiles/jpp-test_config_2166.jsonp | 20 + test/testfiles/jpp-test_config_2167.jsonp | 20 + test/testfiles/jpp-test_config_2168.jsonp | 19 + test/testfiles/jpp-test_config_2169.jsonp | 19 + test/testfiles/jpp-test_config_2170.jsonp | 19 + test/testfiles/jpp-test_config_2171.jsonp | 19 + test/testfiles/jpp-test_config_2172.jsonp | 21 + test/testfiles/jpp-test_config_2173.jsonp | 21 + test/testfiles/jpp-test_config_2174.jsonp | 19 + test/testfiles/jpp-test_config_2175.jsonp | 19 + test/testfiles/jpp-test_config_2176.jsonp | 19 + test/testfiles/jpp-test_config_2177.jsonp | 19 + test/testfiles/jpp-test_config_2178.jsonp | 21 + test/testfiles/jpp-test_config_2179.jsonp | 21 + test/testfiles/jpp-test_config_2180.jsonp | 19 + test/testfiles/jpp-test_config_2181.jsonp | 19 + test/testfiles/jpp-test_config_2182.jsonp | 19 + test/testfiles/jpp-test_config_2183.jsonp | 19 + test/testfiles/jpp-test_config_2184.jsonp | 21 + test/testfiles/jpp-test_config_2185.jsonp | 21 + test/testfiles/jpp-test_config_2186.jsonp | 19 + test/testfiles/jpp-test_config_2187.jsonp | 19 + test/testfiles/jpp-test_config_2188.jsonp | 21 + test/testfiles/jpp-test_config_2189.jsonp | 19 + test/testfiles/jpp-test_config_2190.jsonp | 19 + test/testfiles/jpp-test_config_2191.jsonp | 21 + test/testtools/GenSnippetsJPP.py | 773 ++++++++++++++++++++- 48 files changed, 2223 insertions(+), 15 deletions(-) create mode 100644 test/testfiles/jpp-test_config_2150.jsonp create mode 100644 test/testfiles/jpp-test_config_2151.jsonp create mode 100644 test/testfiles/jpp-test_config_2152.jsonp create mode 100644 test/testfiles/jpp-test_config_2153.jsonp create mode 100644 test/testfiles/jpp-test_config_2154).jsonp create mode 100644 test/testfiles/jpp-test_config_2155.jsonp create mode 100644 test/testfiles/jpp-test_config_2156.jsonp create mode 100644 test/testfiles/jpp-test_config_2157.jsonp create mode 100644 test/testfiles/jpp-test_config_2158.jsonp create mode 100644 test/testfiles/jpp-test_config_2159.jsonp create mode 100644 test/testfiles/jpp-test_config_2160.jsonp create mode 100644 test/testfiles/jpp-test_config_2161.jsonp create mode 100644 test/testfiles/jpp-test_config_2162.jsonp create mode 100644 test/testfiles/jpp-test_config_2163.jsonp create mode 100644 test/testfiles/jpp-test_config_2164.jsonp create mode 100644 test/testfiles/jpp-test_config_2165.jsonp create mode 100644 test/testfiles/jpp-test_config_2166.jsonp create mode 100644 test/testfiles/jpp-test_config_2167.jsonp create mode 100644 test/testfiles/jpp-test_config_2168.jsonp create mode 100644 test/testfiles/jpp-test_config_2169.jsonp create mode 100644 test/testfiles/jpp-test_config_2170.jsonp create mode 100644 test/testfiles/jpp-test_config_2171.jsonp create mode 100644 test/testfiles/jpp-test_config_2172.jsonp create mode 100644 test/testfiles/jpp-test_config_2173.jsonp create mode 100644 test/testfiles/jpp-test_config_2174.jsonp create mode 100644 test/testfiles/jpp-test_config_2175.jsonp create mode 100644 test/testfiles/jpp-test_config_2176.jsonp create mode 100644 test/testfiles/jpp-test_config_2177.jsonp create mode 100644 test/testfiles/jpp-test_config_2178.jsonp create mode 100644 test/testfiles/jpp-test_config_2179.jsonp create mode 100644 test/testfiles/jpp-test_config_2180.jsonp create mode 100644 test/testfiles/jpp-test_config_2181.jsonp create mode 100644 test/testfiles/jpp-test_config_2182.jsonp create mode 100644 test/testfiles/jpp-test_config_2183.jsonp create mode 100644 test/testfiles/jpp-test_config_2184.jsonp create mode 100644 test/testfiles/jpp-test_config_2185.jsonp create mode 100644 test/testfiles/jpp-test_config_2186.jsonp create mode 100644 test/testfiles/jpp-test_config_2187.jsonp create mode 100644 test/testfiles/jpp-test_config_2188.jsonp create mode 100644 test/testfiles/jpp-test_config_2189.jsonp create mode 100644 test/testfiles/jpp-test_config_2190.jsonp create mode 100644 test/testfiles/jpp-test_config_2191.jsonp diff --git a/test/component_test.py b/test/component_test.py index 578a74c..f44443d 100644 --- a/test/component_test.py +++ b/test/component_test.py @@ -22,8 +22,8 @@ # # -------------------------------------------------------------------------------------------------------------- # -VERSION = "0.62.0" -VERSION_DATE = "05.08.2025" +VERSION = "0.63.0" +VERSION_DATE = "06.08.2025" # # -------------------------------------------------------------------------------------------------------------- #TM*** diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index 7b4d195..3eae149 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -1,6 +1,6 @@ # ************************************************************************************************************** # -# Copyright 2020-2024 Robert Bosch GmbH +# Copyright 2020-2025 Robert Bosch GmbH # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ # # -------------------------------------------------------------------------------------------------------------- # -# 05.08.2025 +# 06.08.2025 # # !!! Temporarily tests are deactivated by the following line commented out: # # # listofdictUsecases.append(dictUsecase) @@ -4545,3 +4545,634 @@ # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2150" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a string (1)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2150.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2151" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a string (2)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2151.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2152" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a string (3)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2152.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2153" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a string within a list" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2153.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2154" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a string within a dictionary" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2154.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2155" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a key name (1)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2155.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2156" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a key name (2)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2156.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2157" +dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a key name (3)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2157.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2158" +dictUsecase['DESCRIPTION'] = "Python inline code without quotes at left hand side of the colon (1)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2158.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2159" +dictUsecase['DESCRIPTION'] = "Python inline code without quotes at left hand side of the colon (2)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2159.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2160" +dictUsecase['DESCRIPTION'] = "Python inline code within quotes at left hand side of the colon (1)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2160.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2161" +dictUsecase['DESCRIPTION'] = "Python inline code within quotes at left hand side of the colon (2)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2161.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2162" +dictUsecase['DESCRIPTION'] = "Completely invalid Python inline code at left hand side of the colon (1)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2162.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2163" +dictUsecase['DESCRIPTION'] = "Completely invalid Python inline code at left hand side of the colon (2)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2163.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2164" +dictUsecase['DESCRIPTION'] = "Python inline code as key name at left hand side of the colon (1)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2164.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2165" +dictUsecase['DESCRIPTION'] = "Python inline code as key name at left hand side of the colon (2)" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2165.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2166" +dictUsecase['DESCRIPTION'] = "Python inline code as list index at left hand side of the colon" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2166.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2167" +dictUsecase['DESCRIPTION'] = "Python inline code as dictionary key at left hand side of the colon" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2167.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2168" +dictUsecase['DESCRIPTION'] = "Python inline code with missing leading angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2168.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2169" +dictUsecase['DESCRIPTION'] = "Python inline code with missing trailing angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2169.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2170" +dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing leading angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2170.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2171" +dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing trailing angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2171.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2172" +dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing leading angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2172.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2173" +dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing trailing angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2173.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2174" +dictUsecase['DESCRIPTION'] = "Python inline code with missing both leading angle brackets" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2174.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2175" +dictUsecase['DESCRIPTION'] = "Python inline code with missing both trailing angle brackets" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2175.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2176" +dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing both leading angle brackets" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2176.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2177" +dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing both trailing angle brackets" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2177.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2178" +dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing both leading angle brackets" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2178.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2179" +dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing both trailing angle brackets" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2179.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2180" +dictUsecase['DESCRIPTION'] = "Python inline code with additional leading angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2180.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2181" +dictUsecase['DESCRIPTION'] = "Python inline code with additional trailing angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2181.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2182" +dictUsecase['DESCRIPTION'] = "Python inline code inside a list with additional leading angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2182.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2183" +dictUsecase['DESCRIPTION'] = "Python inline code inside a list with additional trailing angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2183.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2184" +dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with additional leading angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2184.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2185" +dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with additional trailing angle bracket" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2185.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2186" +dictUsecase['DESCRIPTION'] = "Python inline code returns data type not supported by JSON" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2186.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2187" +dictUsecase['DESCRIPTION'] = "Python inline code inside a list returns data type not supported by JSON" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2187.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2188" +dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary returns data type not supported by JSON" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2188.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2189" +dictUsecase['DESCRIPTION'] = "Nested Python inline code" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2189.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2190" +dictUsecase['DESCRIPTION'] = "Nested Python inline code inside a list" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2190.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2191" +dictUsecase['DESCRIPTION'] = "Nested Python inline code inside a dictionary" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2191.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- diff --git a/test/testfiles/jpp-test_config_2103.jsonp b/test/testfiles/jpp-test_config_2103.jsonp index 63ae163..6fb669e 100644 --- a/test/testfiles/jpp-test_config_2103.jsonp +++ b/test/testfiles/jpp-test_config_2103.jsonp @@ -19,9 +19,9 @@ "B" : 2, "choice" : True, // - "values" : ["A", <<${A} if ${choice} else ${B}>>, "Z"], + "values" : ["A", <<${A} if ${choice} else ${B}>>, "C"], // "values" : {"kA" : "A", "kB" : <<${A} if ${choice} else ${B}>>, - "kC" : "Z"} + "kC" : "C"} } diff --git a/test/testfiles/jpp-test_config_2104.jsonp b/test/testfiles/jpp-test_config_2104.jsonp index fde8a8c..884f784 100644 --- a/test/testfiles/jpp-test_config_2104.jsonp +++ b/test/testfiles/jpp-test_config_2104.jsonp @@ -24,5 +24,5 @@ "dictval" : {"kA" : "vA", "kB" : "vB"}, // "value1" : ${listval}[<<${A} if True else ${B}>>], - "value2" : ${dictval}[<<"${kA}" if True else "${kB}">>] + "value2" : ${dictval}[<<${kA} if True else ${kB}>>] } diff --git a/test/testfiles/jpp-test_config_2105.jsonp b/test/testfiles/jpp-test_config_2105.jsonp index 67aa2a6..a436b8b 100644 --- a/test/testfiles/jpp-test_config_2105.jsonp +++ b/test/testfiles/jpp-test_config_2105.jsonp @@ -29,6 +29,5 @@ "C" : "C", "D" : "D", "value2" : <<${C} + ${D}>>, - // ?? with or without quotes ?? "value3" : <<"${C}" + "${D}">> } diff --git a/test/testfiles/jpp-test_config_2150.jsonp b/test/testfiles/jpp-test_config_2150.jsonp new file mode 100644 index 0000000..d8ac02a --- /dev/null +++ b/test/testfiles/jpp-test_config_2150.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a string (1) + // + "value" : "<<[1, 2]>>" +} diff --git a/test/testfiles/jpp-test_config_2151.jsonp b/test/testfiles/jpp-test_config_2151.jsonp new file mode 100644 index 0000000..97b6aa7 --- /dev/null +++ b/test/testfiles/jpp-test_config_2151.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a string (2) + // + "value" : "ABC <<[\"A\", \"B\"]>> DEF" +} diff --git a/test/testfiles/jpp-test_config_2152.jsonp b/test/testfiles/jpp-test_config_2152.jsonp new file mode 100644 index 0000000..d48b168 --- /dev/null +++ b/test/testfiles/jpp-test_config_2152.jsonp @@ -0,0 +1,20 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a string (3) + // + "A" : [1,2,3], + "value" : "ABC <<${A}>> DEF" +} diff --git a/test/testfiles/jpp-test_config_2153.jsonp b/test/testfiles/jpp-test_config_2153.jsonp new file mode 100644 index 0000000..37bdf5b --- /dev/null +++ b/test/testfiles/jpp-test_config_2153.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a string within a list + // + "value" : ["ABC", "<<[1, 2]>>", "DEF"] +} diff --git a/test/testfiles/jpp-test_config_2154).jsonp b/test/testfiles/jpp-test_config_2154).jsonp new file mode 100644 index 0000000..83ed50c --- /dev/null +++ b/test/testfiles/jpp-test_config_2154).jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a string within a dictionary + // + "value" : {"A" : 1, "B" : "<<[1, 2]>>", "C" : 1} +} diff --git a/test/testfiles/jpp-test_config_2155.jsonp b/test/testfiles/jpp-test_config_2155.jsonp new file mode 100644 index 0000000..a078675 --- /dev/null +++ b/test/testfiles/jpp-test_config_2155.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a key name (1) + // + "<<[1, 2]>>" : 1 +} diff --git a/test/testfiles/jpp-test_config_2156.jsonp b/test/testfiles/jpp-test_config_2156.jsonp new file mode 100644 index 0000000..6c3d3d8 --- /dev/null +++ b/test/testfiles/jpp-test_config_2156.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a key name (2) + // + "ABC <<[\"A\", \"B\"]>> DEF" : 1 +} diff --git a/test/testfiles/jpp-test_config_2157.jsonp b/test/testfiles/jpp-test_config_2157.jsonp new file mode 100644 index 0000000..28b8fb9 --- /dev/null +++ b/test/testfiles/jpp-test_config_2157.jsonp @@ -0,0 +1,20 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as embedded part of a key name (3) + // + "A" : [1,2,3], + "<<${A}>>" : 1 +} diff --git a/test/testfiles/jpp-test_config_2158.jsonp b/test/testfiles/jpp-test_config_2158.jsonp new file mode 100644 index 0000000..eb19a58 --- /dev/null +++ b/test/testfiles/jpp-test_config_2158.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code without quotes at left hand side of the colon (1) + // + <<1 if True else 2>> : 1 +} diff --git a/test/testfiles/jpp-test_config_2159.jsonp b/test/testfiles/jpp-test_config_2159.jsonp new file mode 100644 index 0000000..1e5c61c --- /dev/null +++ b/test/testfiles/jpp-test_config_2159.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code without quotes at left hand side of the colon (2) + // + <<"A" if True else "B">> : 1 +} diff --git a/test/testfiles/jpp-test_config_2160.jsonp b/test/testfiles/jpp-test_config_2160.jsonp new file mode 100644 index 0000000..2d14ace --- /dev/null +++ b/test/testfiles/jpp-test_config_2160.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code within quotes at left hand side of the colon (1) + // + "<<1 if True else 2>>" : 1 +} diff --git a/test/testfiles/jpp-test_config_2161.jsonp b/test/testfiles/jpp-test_config_2161.jsonp new file mode 100644 index 0000000..175df97 --- /dev/null +++ b/test/testfiles/jpp-test_config_2161.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code within quotes at left hand side of the colon (2) + // + "<<(\"A\" if True else \"B\">>" : 1 +} diff --git a/test/testfiles/jpp-test_config_2162.jsonp b/test/testfiles/jpp-test_config_2162.jsonp new file mode 100644 index 0000000..e43ee7d --- /dev/null +++ b/test/testfiles/jpp-test_config_2162.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Completely invalid Python inline code at left hand side of the colon (1) + // + "A"_<<1 if True else 2>> : "B" +} diff --git a/test/testfiles/jpp-test_config_2163.jsonp b/test/testfiles/jpp-test_config_2163.jsonp new file mode 100644 index 0000000..bf0d5f7 --- /dev/null +++ b/test/testfiles/jpp-test_config_2163.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Completely invalid Python inline code at left hand side of the colon (2) + // + <<1 if True else 2>>_"A" : "B" +} diff --git a/test/testfiles/jpp-test_config_2164.jsonp b/test/testfiles/jpp-test_config_2164.jsonp new file mode 100644 index 0000000..4a649f1 --- /dev/null +++ b/test/testfiles/jpp-test_config_2164.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as key name at left hand side of the colon (1) + // + ${<<1 if True else 2>>} : "B" +} diff --git a/test/testfiles/jpp-test_config_2165.jsonp b/test/testfiles/jpp-test_config_2165.jsonp new file mode 100644 index 0000000..8c72bc7 --- /dev/null +++ b/test/testfiles/jpp-test_config_2165.jsonp @@ -0,0 +1,20 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as key name at left hand side of the colon (2) + // + "A" : [1,2,3], + ${<<1 if ${A} else 2>>} : "B" +} diff --git a/test/testfiles/jpp-test_config_2166.jsonp b/test/testfiles/jpp-test_config_2166.jsonp new file mode 100644 index 0000000..1c5ca28 --- /dev/null +++ b/test/testfiles/jpp-test_config_2166.jsonp @@ -0,0 +1,20 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as list index at left hand side of the colon + // + "A" : [1,2,3], + ${A}[<<0 if True else 1>>] : 4 +} diff --git a/test/testfiles/jpp-test_config_2167.jsonp b/test/testfiles/jpp-test_config_2167.jsonp new file mode 100644 index 0000000..2adaa36 --- /dev/null +++ b/test/testfiles/jpp-test_config_2167.jsonp @@ -0,0 +1,20 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code as dictionary key at left hand side of the colon + // + "A" : {"B" : 1, "C" . 2}, + ${A}[<<"B" if True else "C">>] : 3 +} diff --git a/test/testfiles/jpp-test_config_2168.jsonp b/test/testfiles/jpp-test_config_2168.jsonp new file mode 100644 index 0000000..c424097 --- /dev/null +++ b/test/testfiles/jpp-test_config_2168.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with missing leading angle bracket + // + "A" : <0 if True else 1>> +} diff --git a/test/testfiles/jpp-test_config_2169.jsonp b/test/testfiles/jpp-test_config_2169.jsonp new file mode 100644 index 0000000..f7d7276 --- /dev/null +++ b/test/testfiles/jpp-test_config_2169.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with missing trailing angle bracket + // + "A" : <<0 if True else 1> +} diff --git a/test/testfiles/jpp-test_config_2170.jsonp b/test/testfiles/jpp-test_config_2170.jsonp new file mode 100644 index 0000000..6e37566 --- /dev/null +++ b/test/testfiles/jpp-test_config_2170.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a list with missing leading angle bracket + // + "A" : ["B", <1 if True else 2>>, "C"] +} diff --git a/test/testfiles/jpp-test_config_2171.jsonp b/test/testfiles/jpp-test_config_2171.jsonp new file mode 100644 index 0000000..f214276 --- /dev/null +++ b/test/testfiles/jpp-test_config_2171.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a list with missing trailing angle bracket + // + "A" : ["B", <<1 if True else 2>, "C"] +} diff --git a/test/testfiles/jpp-test_config_2172.jsonp b/test/testfiles/jpp-test_config_2172.jsonp new file mode 100644 index 0000000..478d9d0 --- /dev/null +++ b/test/testfiles/jpp-test_config_2172.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a dictionary with missing leading angle bracket + // + "A" : {"kA" : "A", + "kB" : <1 if True else 2>>, + "kC" : "C"} +} diff --git a/test/testfiles/jpp-test_config_2173.jsonp b/test/testfiles/jpp-test_config_2173.jsonp new file mode 100644 index 0000000..15d9860 --- /dev/null +++ b/test/testfiles/jpp-test_config_2173.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a dictionary with missing trailing angle bracket + // + "A" : {"kA" : "A", + "kB" : <<1 if True else 2>, + "kC" : "C"} +} diff --git a/test/testfiles/jpp-test_config_2174.jsonp b/test/testfiles/jpp-test_config_2174.jsonp new file mode 100644 index 0000000..20ff1c7 --- /dev/null +++ b/test/testfiles/jpp-test_config_2174.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with missing both leading angle brackets + // + "A" : 0 if True else 1>> +} diff --git a/test/testfiles/jpp-test_config_2175.jsonp b/test/testfiles/jpp-test_config_2175.jsonp new file mode 100644 index 0000000..ff907ca --- /dev/null +++ b/test/testfiles/jpp-test_config_2175.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with missing both trailing angle brackets + // + "A" : <<0 if True else 1 +} diff --git a/test/testfiles/jpp-test_config_2176.jsonp b/test/testfiles/jpp-test_config_2176.jsonp new file mode 100644 index 0000000..9ee6932 --- /dev/null +++ b/test/testfiles/jpp-test_config_2176.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a list with missing both leading angle brackets + // + "A" : ["B", 1 if True else 2>>, "C"] +} diff --git a/test/testfiles/jpp-test_config_2177.jsonp b/test/testfiles/jpp-test_config_2177.jsonp new file mode 100644 index 0000000..76dc1ad --- /dev/null +++ b/test/testfiles/jpp-test_config_2177.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a list with missing both trailing angle brackets + // + "A" : ["B", <<1 if True else 2, "C"] +} diff --git a/test/testfiles/jpp-test_config_2178.jsonp b/test/testfiles/jpp-test_config_2178.jsonp new file mode 100644 index 0000000..19baf5e --- /dev/null +++ b/test/testfiles/jpp-test_config_2178.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a dictionary with missing both leading angle brackets + // + "A" : {"kA" : "A", + "kB" : 1 if True else 2>>, + "kC" : "C"} +} diff --git a/test/testfiles/jpp-test_config_2179.jsonp b/test/testfiles/jpp-test_config_2179.jsonp new file mode 100644 index 0000000..2c771fa --- /dev/null +++ b/test/testfiles/jpp-test_config_2179.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a dictionary with missing both trailing angle brackets + // + "A" : {"kA" : "A", + "kB" : <<1 if True else 2, + "kC" : "C"} +} diff --git a/test/testfiles/jpp-test_config_2180.jsonp b/test/testfiles/jpp-test_config_2180.jsonp new file mode 100644 index 0000000..1e4d25c --- /dev/null +++ b/test/testfiles/jpp-test_config_2180.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with additional leading angle bracket + // + "A" : <<<0 if True else 1>> +} diff --git a/test/testfiles/jpp-test_config_2181.jsonp b/test/testfiles/jpp-test_config_2181.jsonp new file mode 100644 index 0000000..2865fc3 --- /dev/null +++ b/test/testfiles/jpp-test_config_2181.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with additional trailing angle bracket + // + "A" : <<0 if True else 1>>> +} diff --git a/test/testfiles/jpp-test_config_2182.jsonp b/test/testfiles/jpp-test_config_2182.jsonp new file mode 100644 index 0000000..6ab2910 --- /dev/null +++ b/test/testfiles/jpp-test_config_2182.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a list with additional leading angle bracket + // + "A" : ["B", <<<1 if True else 2>>, "C"] +} diff --git a/test/testfiles/jpp-test_config_2183.jsonp b/test/testfiles/jpp-test_config_2183.jsonp new file mode 100644 index 0000000..9576227 --- /dev/null +++ b/test/testfiles/jpp-test_config_2183.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a list with additional trailing angle bracket + // + "A" : ["B", <<1 if True else 2>>>, "C"] +} diff --git a/test/testfiles/jpp-test_config_2184.jsonp b/test/testfiles/jpp-test_config_2184.jsonp new file mode 100644 index 0000000..b9c0ebc --- /dev/null +++ b/test/testfiles/jpp-test_config_2184.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a dictionary with additional leading angle bracket + // + "A" : {"kA" : "A", + "kB" : <<<1 if True else 2>>, + "kC" : "C"} +} diff --git a/test/testfiles/jpp-test_config_2185.jsonp b/test/testfiles/jpp-test_config_2185.jsonp new file mode 100644 index 0000000..f573542 --- /dev/null +++ b/test/testfiles/jpp-test_config_2185.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a dictionary with additional trailing angle bracket + // + "A" : {"kA" : "A", + "kB" : <<1 if True else 2>>>, + "kC" : "C"} +} diff --git a/test/testfiles/jpp-test_config_2186.jsonp b/test/testfiles/jpp-test_config_2186.jsonp new file mode 100644 index 0000000..f599c89 --- /dev/null +++ b/test/testfiles/jpp-test_config_2186.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code returns data type not supported by JSON + // + "now" : <> +} diff --git a/test/testfiles/jpp-test_config_2187.jsonp b/test/testfiles/jpp-test_config_2187.jsonp new file mode 100644 index 0000000..7474f92 --- /dev/null +++ b/test/testfiles/jpp-test_config_2187.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a list returns data type not supported by JSON + // + "A" : ["B", <>, "C"] +} diff --git a/test/testfiles/jpp-test_config_2188.jsonp b/test/testfiles/jpp-test_config_2188.jsonp new file mode 100644 index 0000000..2527571 --- /dev/null +++ b/test/testfiles/jpp-test_config_2188.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code inside a dictionary returns data type not supported by JSON + // + "A" : {"kA" : "A", + "now" : <>, + "kC" : "C"} +} diff --git a/test/testfiles/jpp-test_config_2189.jsonp b/test/testfiles/jpp-test_config_2189.jsonp new file mode 100644 index 0000000..0bef138 --- /dev/null +++ b/test/testfiles/jpp-test_config_2189.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Nested Python inline code + // + "value" : <<[1, 2] + <<[3, 4] if True else [5, 6]>>>> +} diff --git a/test/testfiles/jpp-test_config_2190.jsonp b/test/testfiles/jpp-test_config_2190.jsonp new file mode 100644 index 0000000..fe2d3c7 --- /dev/null +++ b/test/testfiles/jpp-test_config_2190.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Nested Python inline code inside a list + // + "A" : ["B", <<[1, 2] + <<[3, 4] if True else [5, 6]>>>>, "C"] +} diff --git a/test/testfiles/jpp-test_config_2191.jsonp b/test/testfiles/jpp-test_config_2191.jsonp new file mode 100644 index 0000000..060fe55 --- /dev/null +++ b/test/testfiles/jpp-test_config_2191.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Nested Python inline code inside a dictionary + // + "A" : {"kA" : "A", + "kB" : <<[1, 2] + <<[3, 4] if True else [5, 6]>>>>, + "kC" : "C"} +} diff --git a/test/testtools/GenSnippetsJPP.py b/test/testtools/GenSnippetsJPP.py index 4d74a40..fe639f8 100644 --- a/test/testtools/GenSnippetsJPP.py +++ b/test/testtools/GenSnippetsJPP.py @@ -22,8 +22,8 @@ # # ************************************************************************************************************** # -VERSION = "0.38.0" -VERSION_DATE = "10.01.2025" +VERSION = "0.44.0" +VERSION_DATE = "06.08.2025" # # ************************************************************************************************************** @@ -3440,6 +3440,542 @@ def GetSeveralParticularSnippets(self): } """) + # -------------------------------------------------------------------------------------------------------------- + + # -- unicode digits + + listCodeSnippets.append("""{ + "listparam_൯" : [1,2,3,4,5,6,7,8,9,10], + "listvalue" : ${listparam_൯}[൯] +} +""") + + # -------------------------------------------------------------------------------------------------------------- + # -- Python inline code + # -------------------------------------------------------------------------------------------------------------- + + # -- TODO: GOODGASE (snippets to be taken over from selftest) + + + # -- BADGASE (from official selftest) + + listCodeSnippets.append("""{ + // "JPP_2150" + // Python inline code as embedded part of a string (1) + "value" : "<<[1, 2]>>" +} +""") + + listCodeSnippets.append("""{ + // "JPP_2151" + // Python inline code as embedded part of a string (2) + "value" : "ABC <<[\"A\", \"B\"]>> DEF" +} +""") + + listCodeSnippets.append("""{ + // "JPP_2152" + // Python inline code as embedded part of a string (3) + "A" : [1,2,3], + "value" : "ABC <<${A}>> DEF" +} +""") + + listCodeSnippets.append("""{ + // "JPP_2153" + // Python inline code as embedded part of a string within a list + "value" : ["ABC", "<<[1, 2]>>", "DEF"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2154" + // Python inline code as embedded part of a string within a dictionary + "value" : {"A" : 1, "B" : "<<[1, 2]>>", "C" : 1} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2155" + // Python inline code as embedded part of a key name (1) + "<<[1, 2]>>" : 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2156" + // Python inline code as embedded part of a key name (2) + "ABC <<[\"A\", \"B\"]>> DEF" : 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2157" + // Python inline code as embedded part of a key name (3) + "A" : [1,2,3], + "<<${A}>>" : 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2158" + // Python inline code without quotes at left hand side of the colon (1) + <<1 if True else 2>> : 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2159" + // Python inline code without quotes at left hand side of the colon (2) + <<"A" if True else "B">> : 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2160" + // Python inline code within quotes at left hand side of the colon (1) + "<<1 if True else 2>>" : 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2161" + // Python inline code within quotes at left hand side of the colon (2) + "<<(\"A\" if True else \"B\">>" : 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2162" + // Completely invalid Python inline code at left hand side of the colon (1) + "A"_<<1 if True else 2>> : "B" +} +""") + + listCodeSnippets.append("""{ + // "JPP_2163" + // Completely invalid Python inline code at left hand side of the colon (2) + <<1 if True else 2>>_"A" : "B" +} +""") + + listCodeSnippets.append("""{ + // "JPP_2164" + // Python inline code as key name at left hand side of the colon (1) + ${<<1 if True else 2>>} : "B" +} +""") + + listCodeSnippets.append("""{ + // "JPP_2165" + // Python inline code as key name at left hand side of the colon (2) + "A" : [1,2,3], + ${<<1 if ${A} else 2>>} : "B" +} +""") + + listCodeSnippets.append("""{ + // "JPP_2166" + // Python inline code as list index at left hand side of the colon + "A" : [1,2,3], + ${A}[<<0 if True else 1>>] : 4 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2167" + // Python inline code as dictionary key at left hand side of the colon + "A" : {"B" : 1, "C" . 2}, + ${A}[<<"B" if True else "C">>] : 3 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2168" + // Python inline code with missing leading angle bracket + "A" : <0 if True else 1>> +} +""") + + listCodeSnippets.append("""{ + // "JPP_2169" + // Python inline code with missing trailing angle bracket + "A" : <<0 if True else 1> +} +""") + + listCodeSnippets.append("""{ + // "JPP_2170" + // Python inline code inside a list with missing leading angle bracket + "A" : ["B", <1 if True else 2>>, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2171" + // Python inline code inside a list with missing trailing angle bracket + "A" : ["B", <<1 if True else 2>, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2172" + // Python inline code inside a dictionary with missing leading angle bracket + "A" : {"kA" : "A", + "kB" : <1 if True else 2>>, + "kC" : "C"} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2173" + // Python inline code inside a dictionary with missing trailing angle bracket + "A" : {"kA" : "A", + "kB" : <<1 if True else 2>, + "kC" : "C"} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2174" + // Python inline code with missing both leading angle brackets + "A" : 0 if True else 1>> +} +""") + + listCodeSnippets.append("""{ + // "JPP_2175" + // Python inline code with missing both trailing angle brackets + "A" : <<0 if True else 1 +} +""") + + listCodeSnippets.append("""{ + // "JPP_2176" + // Python inline code inside a list with missing both leading angle brackets + "A" : ["B", 1 if True else 2>>, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2177" + // Python inline code inside a list with missing both trailing angle brackets + "A" : ["B", <<1 if True else 2, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2178" + // Python inline code inside a dictionary with missing both leading angle brackets + "A" : {"kA" : "A", + "kB" : 1 if True else 2>>, + "kC" : "C"} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2179" + // Python inline code inside a dictionary with missing both trailing angle brackets + "A" : {"kA" : "A", + "kB" : <<1 if True else 2, + "kC" : "C"} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2180" + // Python inline code with additional leading angle bracket + "A" : <<<0 if True else 1>> +} +""") + + listCodeSnippets.append("""{ + // "JPP_2181" + // Python inline code with additional trailing angle bracket + "A" : <<0 if True else 1>>> +} +""") + + listCodeSnippets.append("""{ + // "JPP_2182" + // Python inline code inside a list with additional leading angle bracket + "A" : ["B", <<<1 if True else 2>>, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2183" + // Python inline code inside a list with additional trailing angle bracket + "A" : ["B", <<1 if True else 2>>>, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2184" + // Python inline code inside a dictionary with additional leading angle bracket + "A" : {"kA" : "A", + "kB" : <<<1 if True else 2>>, + "kC" : "C"} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2185" + // Python inline code inside a dictionary with additional trailing angle bracket + "A" : {"kA" : "A", + "kB" : <<1 if True else 2>>>, + "kC" : "C"} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2186" + // Python inline code returns data type not supported by JSON + "now" : <> +} +""") + + listCodeSnippets.append("""{ + // "JPP_2187" + // Python inline code inside a list returns data type not supported by JSON + "A" : ["B", <>, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2188" + // Python inline code inside a dictionary returns data type not supported by JSON + "A" : {"kA" : "A", + "now" : <>, + "kC" : "C"} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2189" + // Nested Python inline code + "value" : <<[1, 2] + <<[3, 4] if True else [5, 6]>>>> +} +""") + + listCodeSnippets.append("""{ + // "JPP_2190" + // Nested Python inline code inside a list + "A" : ["B", <<[1, 2] + <<[3, 4] if True else [5, 6]>>>>, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2191" + // Nested Python inline code inside a dictionary + "A" : {"kA" : "A", + "kB" : <<[1, 2] + <<[3, 4] if True else [5, 6]>>>>, + "kC" : "C"} +} +""") + + # -- Python inline code - old stuff (to be shortened) + + listCodeSnippets.append("""{ + "A" : 1, + "B" : 2, + "choice" : True, + "value" : <<${A} if ${choice} else ${B}>> +} +""") + + listCodeSnippets.append("""{ + "A" : 1, + "B" : 4, + "choice" : True, + "value_1" : <<(${A} if ${choice} else ${B}) + 4>>, + "code_1" : "${A} if ${choice} else ${B}", + "value_1b" : <<(${code_1}) + 4>>, + "value_2" : <<(${A} if not ${choice} else ${B}) + 4>>, + "code_2" : "${A} if not ${choice} else ${B}", + "value_2b" : <<(${code_2}) + 4>> +} +""") + + listCodeSnippets.append("""{ + "value" : <<25>> +} +""") + + listCodeSnippets.append("""{ + "value" : <<[1, 2]>> +} +""") + + listCodeSnippets.append("""{ + "value" : <<{"kA" : 1, "kB" : 2, "kC" : 3}>> +} +""") + + listCodeSnippets.append("""{ + "A" : 1, + "B" : 2, + "choice" : True, + "values" : ["A", <<${A} if ${choice} else ${B}>>, "Z"] +} +""") + + listCodeSnippets.append("""{ + "A" : 1, + "B" : 2, + "choice" : True, + "values" : {"kA" : "A", + "kB" : <<${A} if ${choice} else ${B}>>, + "kC" : "Z"} +} +""") + + listCodeSnippets.append("""{ + "A" : [1,2,3], + "B" : [4,5,6], + "values" : <<${A} + [${B} + ${A}]>> +} +""") + + + listCodeSnippets.append("""{ + "value" : <<1 if True else 2>> +} +""") + + listCodeSnippets.append("""{ + "choice" : True, + "value" : "<<1 if ${choice} else 2>>" +} +""") + + listCodeSnippets.append("""{ + "A" : [1,2,3], + "B" : [4,5,6], + "values" : <<${A} + <<${A} + ${B}>> >> +} +""") + + listCodeSnippets.append("""{ + "value"_<<1 if True else 2>> : 25 +} +""") + + listCodeSnippets.append("""{ + "value_<<1 if True else 2>>" : 25 +} +""") + + listCodeSnippets.append("""{ + "choice" : True, + "value"_<<1 if ${choice} else 2>> : 25 +} +""") + + listCodeSnippets.append("""{ + "code" : "1 if True else 2", + "value" : <<${code>> +} +""") + + listCodeSnippets.append("""{ + "code" : "1 if True else 2", + "value" : <<${code}> +} +""") + + listCodeSnippets.append("""{ + "code" : "1 if True else 2", + "value" : > +} +""") + + listCodeSnippets.append("""{ + "A" : 0, + "B" : 1, + "C" : [2,3,4], + "value" : ${C}[<<${A} if True else ${B}>>] +} +""") + + listCodeSnippets.append("""{ + "A" : 0, + "B" : 1, + "C" : [2,3,4], + "value" : ${C}[<<"${A}" if True else "${B}">>] +} +""") + + listCodeSnippets.append("""{ + "A" : "kA", + "B" : "kB", + "C" : {"kA" : "vA", "kB" : "vB"}, + "value" : ${C}[<<${A} if True else ${B}>>] +} +""") + + listCodeSnippets.append("""{ + "A" : "kA", + "B" : "kB", + "C" : {"kA" : "vA", "kB" : "vB"}, + "value" : ${C}[<<"${A}" if True else "${B}">>] +} +""") + + listCodeSnippets.append("""{ + "path_1" : "./imports/AA/imported.AA.jsonp", + "path_2" : "./imports/AA/imported.X.jsonp", + "[import]" : <<${path_1} if True else ${path_2}>> +} +""") + + listCodeSnippets.append("""{ + "A" : <<1 + B>> +} +""") + + listCodeSnippets.append("""{ + "C" : <<1 + ${D}>> +} +""") + + listCodeSnippets.append("""{ + "D" : <<1 / 0>> +} +""") + + listCodeSnippets.append("""{ + "E" : 0, + "F" : <<1 / ${E}>> +} +""") + + listCodeSnippets.append("""{ + "G" : {"a" : 0, "b" : 1}, + "H" : <<1 / ${G}['a']>> +} +""") + + listCodeSnippets.append("""{ + "K" : [0,1], + "L" : <<1 / ${K}[0]>> +} +""") + + listCodeSnippets.append("""{ + "dict" : {"kA" : "vA", "kB" : "vB"}, + "key_list" : <> +} +""") + + + # listCodeSnippets.append("""{ +# } +# """) + + + # -------------------------------------------------------------------------------------------------------------- + # listCodeSnippets.append("""{ # } # """) @@ -3940,11 +4476,11 @@ def GetKeywords(self): # -------------------------------------------------------------------------------------------------------------- - def GetMissingBrackets(self): - """Missing brackets at several positions within a complex data structure + def GetMissingBrackets_1(self): + """Missing brackets at several positions within a complex data structure (1) """ - sHeadline = "Missing brackets at several positions within a complex data structure" + sHeadline = "Missing brackets at several positions within a complex data structure (1)" # data structure 1 sDataStructure1 = """ "params" : {*01* : *02*, @@ -4012,7 +4548,129 @@ def GetMissingBrackets(self): return sHeadline, listCodeSnippets - # eof def GetMissingBrackets(self): + # eof def GetMissingBrackets_1(self): + + # -------------------------------------------------------------------------------------------------------------- + + def GetMissingBrackets_2(self): + """Missing brackets at several positions within a complex data structure (2) + """ + + sHeadline = "Missing brackets at several positions within a complex data structure (2)" + + JSONP = """ "A" : 1, "B" : 2, "C" : 3, "D" : 4, "E" : 5, "F" : 6, "G" : 7, "H" : 8, "I" : 9, "J" : 10, + "params" : [ + 11, + {"A" : 12, + "B" : [ + { + "C" : 13, + ${params}[1]['B'][0]['C'] : 130, + "D" : 14, + ${params.1.B.0.D} : 140, + "E" : 15, + "F" : 16, + "G" : ["017", {"018" : "019"}], + "H" : [{"020" : "021"}, "022"], + "I" : {"023" : ["024", "025"]}, + "J" : {"026" : ["027", {"028" : ["029", "030"]}]} + }, + 31 + ] + }, + 32 + ], + ${params}[1]['B'][0]['E'] : 150, + ${params.1.B.0.F} : 160, + ${params}[1]['B'][0]['J']['026'][1]['028'][0] : "0290", + ${params.1.B.0.J.026.1.028.1} : "0300" """ + + sCodeSnippetPattern = """{ +####DATASTRUCTURE#### +} +""" + + # prepare the data structure pattern (automatically out of JSONP) + sDataStructurePattern = "" + + curly_open = "{" + curly_close = "}" + square_open = "[" + square_close = "]" + + list_placeholder_curly_open = [] + list_placeholder_curly_close = [] + list_placeholder_square_open = [] + list_placeholder_square_close = [] + + cnt_brackets = 0 + + for char in JSONP: + if char == curly_open: + cnt_brackets = cnt_brackets + 1 + numberstring = str(cnt_brackets).rjust(2, "0") + placeholder = f"##{numberstring}##" + sDataStructurePattern = sDataStructurePattern + placeholder + list_placeholder_curly_open.append(placeholder) + elif char == curly_close: + cnt_brackets = cnt_brackets + 1 + numberstring = str(cnt_brackets).rjust(2, "0") + placeholder = f"##{numberstring}##" + sDataStructurePattern = sDataStructurePattern + placeholder + list_placeholder_curly_close.append(placeholder) + elif char == square_open: + cnt_brackets = cnt_brackets + 1 + numberstring = str(cnt_brackets).rjust(2, "0") + placeholder = f"##{numberstring}##" + sDataStructurePattern = sDataStructurePattern + placeholder + list_placeholder_square_open.append(placeholder) + elif char == square_close: + cnt_brackets = cnt_brackets + 1 + numberstring = str(cnt_brackets).rjust(2, "0") + placeholder = f"##{numberstring}##" + sDataStructurePattern = sDataStructurePattern + placeholder + list_placeholder_square_close.append(placeholder) + else: + sDataStructurePattern = sDataStructurePattern + char + + nNrOfPlaceholders = len(list_placeholder_curly_open) + \ + len(list_placeholder_curly_close) + \ + len(list_placeholder_square_open) + \ + len(list_placeholder_square_close) + + # prepare list of code snippets + + listCodeSnippets = [] + + for number_1 in range(1, nNrOfPlaceholders+1): + numberstring_1 = str(number_1).rjust(2, "0") + placeholder_1 = f"##{numberstring_1}##" + sDataStructure = sDataStructurePattern # init a new data structure from pattern sDataStructurePattern + sCodeSnippet = sCodeSnippetPattern # init a new code snippet from code snippet pattern + # remove the bracket at current position + sDataStructure = sDataStructure.replace(placeholder_1, "") + for number_2 in range(1, nNrOfPlaceholders+1): + numberstring_2 = str(number_2).rjust(2, "0") + placeholder_2 = f"##{numberstring_2}##" + if placeholder_2 in list_placeholder_curly_open: + replacement = curly_open + elif placeholder_2 in list_placeholder_curly_close: + replacement = curly_close + elif placeholder_2 in list_placeholder_square_open: + replacement = square_open + elif placeholder_2 in list_placeholder_square_close: + replacement = square_close + else: + replacement = "" # should not happen + sDataStructure = sDataStructure.replace(placeholder_2, replacement) + # eof for number_2 in range(1, nNrOfPlaceholders+1): + sCodeSnippet = sCodeSnippet.replace("####DATASTRUCTURE####", sDataStructure) + listCodeSnippets.append(sCodeSnippet) + # eof for number_1 in range(1, nNrOfPlaceholders+1): + + return sHeadline, listCodeSnippets + + # eof def GetMissingBrackets_2(self): # -------------------------------------------------------------------------------------------------------------- @@ -4571,6 +5229,101 @@ def GetInternalTokenStrings(self): # -------------------------------------------------------------------------------------------------------------- + def GetInlineCode(self): + """Python inline code at several positions within a complex data structure + """ + + sHeadline = "Python inline code at several positions within a complex data structure" + + # scheme: + # "EvT" : 1000, + # "EvF" : 2000, + # # # "EvT" : "EVAL_TRUE", + # # # "EvF" : "EVAL_FALSE", + # "choice" : True, + # "value_1" : <<..>>, + # "value_2" : [10, <<..>>, 11], + # "value_3" : [20, <<..>>, <<..>>, 22], + # "value_4" : [<<..>>, 30, <<..>>], + # "value_5" : {"kA" : 40, "kB" : <<..>>, "kC" : 41}, + # "value_6" : {"kD" : <<..>>, "kE" : <<..>>}, + # "value_7" : {"kF" : [<<..>>, 60], "kG" : [80, <<..>>]}, + # "value_8" : [{"kH" : [<<..>>, 60]}, {"kM" : {"kN" : [70, <<..>>]}}] + + # data structure + sDataStructurePattern = """ "value_1" : ##01##, + "value_2" : [10, ##02##, 11], + "value_3" : [20, ##03##, ##04##, 22], + "value_4" : [##05##, 30, ##06##], + "value_5" : {"kA" : 40, "kB" : ##07##, "kC" : 41}, + "value_6" : {"kD" : ##08##, "kE" : ##09##}, + "value_7" : {"kF" : [##10##, 60], "kG" : [80, ##11##]}, + "value_8" : [{"kH" : [##12##, 60]}, {"kM" : {"kN" : [70, ##13##]}}]""" + + sDefinitions = """ "EvT" : 1000, + "EvF" : 2000, + "choice" : True,""" + # sDefinitions = """ "EvT" : "EVAL_TRUE", + # "EvF" : "EVAL_FALSE", + # "choice" : True,""" + + sCodeSnippetPattern = """{ +####DEFINITIONS#### +####DATASTRUCTURE#### +} +""" + + # We have a list of expressions and we have a list of placeholders like used in sDataStructure. + # The followig code runs in a nested loop: Every expression is placed at every placeholder position. Only one single + # expression and placeholder per iteration. All remaining placeholders in current iteration are replaced by elements + # from a list of filler expressions (simple values) that are only used to complete the code snippet, + # but are not in focus. + + listExpressions = ["<<${EvT} if ${choice} else ${EvF}>>",] + # listExpressions = ["<<\"${EvT}\" if ${choice} else \"${EvF}\">>",] + + nNrOfPlaceholders = 13 + + listPlaceholders = [] + listFillers = [] + for number in range(1, nNrOfPlaceholders+1): + value1 = str(number).rjust(2, "0") + listPlaceholders.append(f"##{value1}##") + value2 = str(number).rjust(3, "0") + listFillers.append(f"{value2}") + + listPositions = listPlaceholders[:] # to support a nested iterations of the same list (better readibility of code because of different names) + + # -- put all things together + listCodeSnippets = [] + for sExpression in listExpressions: + for sPosition in listPositions: + sDataStructure = sDataStructurePattern # init a new data structure from data structure pattern + sCodeSnippet = sCodeSnippetPattern # init a new code snippet from code snippet pattern + oFiller = CListElements(listFillers) # init a new filler object (= content for remaining placeholders) + for sPlaceholder in listPlaceholders: + sFiller = oFiller.GetElement() + if sPosition == sPlaceholder: + sDataStructure = sDataStructure.replace(sPlaceholder, sExpression) + else: + sDataStructure = sDataStructure.replace(sPlaceholder, f"\"{sFiller}\"") + # eof for sPlaceholder in listPlaceholders: + sCodeSnippet = sCodeSnippet.replace("####DEFINITIONS####", sDefinitions) + sCodeSnippet = sCodeSnippet.replace("####DATASTRUCTURE####", sDataStructure) + listCodeSnippets.append(sCodeSnippet) + # eof for sPosition in listPositions: + # eof for sExpression in listExpressions: + +# TODO: Add bad cases / invalid syntax +# TODO: merge of lists +# TODO: indices and dictionary keys by eval + + return sHeadline, listCodeSnippets + + # eof def GetInlineCode(self): + + # -------------------------------------------------------------------------------------------------------------- + # eof class CSnippets(): # -------------------------------------------------------------------------------------------------------------- @@ -4697,7 +5450,10 @@ def GetInternalTokenStrings(self): sHeadline, listCodeSnippets = oSnippets.GetKeywords() bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") -sHeadline, listCodeSnippets = oSnippets.GetMissingBrackets() +sHeadline, listCodeSnippets = oSnippets.GetMissingBrackets_1() +bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") + +sHeadline, listCodeSnippets = oSnippets.GetMissingBrackets_2() bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") sHeadline, listCodeSnippets = oSnippets.GetAdditionalBrackets() @@ -4721,6 +5477,9 @@ def GetInternalTokenStrings(self): sHeadline, listCodeSnippets = oSnippets.GetInternalTokenStrings() bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") +sHeadline, listCodeSnippets = oSnippets.GetInlineCode() +bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") + print() print(COLBG + "done") print() From 4fcda1d20f3054e7b92553e74887514080d3b759 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Wed, 6 Aug 2025 18:45:37 +0200 Subject: [PATCH 06/13] tiny typo --- test/testtools/GenSnippetsJPP.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/testtools/GenSnippetsJPP.py b/test/testtools/GenSnippetsJPP.py index fe639f8..c717213 100644 --- a/test/testtools/GenSnippetsJPP.py +++ b/test/testtools/GenSnippetsJPP.py @@ -3454,10 +3454,10 @@ def GetSeveralParticularSnippets(self): # -- Python inline code # -------------------------------------------------------------------------------------------------------------- - # -- TODO: GOODGASE (snippets to be taken over from selftest) + # -- TODO: GOODCASE (snippets to be taken over from selftest) - # -- BADGASE (from official selftest) + # -- BADCASE (from official selftest) listCodeSnippets.append("""{ // "JPP_2150" From f9e754596ff18ad782ac43d1b0c80a85c66d4162 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Thu, 7 Aug 2025 09:41:48 +0200 Subject: [PATCH 07/13] Further BADCASE tests of section INLINE_CODE added --- test/component_test.py | 4 +- test/testconfig/TestConfig.py | 47 ++++++++++++++++++++++- test/testfiles/jpp-test_config_2192.jsonp | 19 +++++++++ test/testfiles/jpp-test_config_2193.jsonp | 19 +++++++++ test/testfiles/jpp-test_config_2194.jsonp | 21 ++++++++++ test/testtools/GenSnippetsJPP.py | 29 +++++++++++++- 6 files changed, 134 insertions(+), 5 deletions(-) create mode 100644 test/testfiles/jpp-test_config_2192.jsonp create mode 100644 test/testfiles/jpp-test_config_2193.jsonp create mode 100644 test/testfiles/jpp-test_config_2194.jsonp diff --git a/test/component_test.py b/test/component_test.py index f44443d..24872a9 100644 --- a/test/component_test.py +++ b/test/component_test.py @@ -22,8 +22,8 @@ # # -------------------------------------------------------------------------------------------------------------- # -VERSION = "0.63.0" -VERSION_DATE = "06.08.2025" +VERSION = "0.64.0" +VERSION_DATE = "07.08.2025" # # -------------------------------------------------------------------------------------------------------------- #TM*** diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index 3eae149..5769c5f 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -22,7 +22,7 @@ # # -------------------------------------------------------------------------------------------------------------- # -# 06.08.2025 +# 07.08.2025 # # !!! Temporarily tests are deactivated by the following line commented out: # # # listofdictUsecases.append(dictUsecase) @@ -5176,3 +5176,48 @@ # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2192" +dictUsecase['DESCRIPTION'] = "Python inline code is parameter name" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2192.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2193" +dictUsecase['DESCRIPTION'] = "Python inline code is parameter name inside a list" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2193.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2194" +dictUsecase['DESCRIPTION'] = "Python inline code is parameter name inside a dictionary" +dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "BADCASE" +dictUsecase['HINT'] = "Feature still under construction" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2194.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- diff --git a/test/testfiles/jpp-test_config_2192.jsonp b/test/testfiles/jpp-test_config_2192.jsonp new file mode 100644 index 0000000..10738de --- /dev/null +++ b/test/testfiles/jpp-test_config_2192.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code is parameter name + // + "value" : ${<<[3, 4] if True else [5, 6]>>} +} diff --git a/test/testfiles/jpp-test_config_2193.jsonp b/test/testfiles/jpp-test_config_2193.jsonp new file mode 100644 index 0000000..6a2811d --- /dev/null +++ b/test/testfiles/jpp-test_config_2193.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code is parameter name inside a list + // + "A" : ["B", ${<<[3, 4] if True else [5, 6]>>}, "C"] +} diff --git a/test/testfiles/jpp-test_config_2194.jsonp b/test/testfiles/jpp-test_config_2194.jsonp new file mode 100644 index 0000000..4df4294 --- /dev/null +++ b/test/testfiles/jpp-test_config_2194.jsonp @@ -0,0 +1,21 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code is parameter name inside a dictionary + // + "A" : {"kA" : "A", + "kB" : ${<<[3, 4] if True else [5, 6]>>}, + "kC" : "C"} +} diff --git a/test/testtools/GenSnippetsJPP.py b/test/testtools/GenSnippetsJPP.py index c717213..0288f9e 100644 --- a/test/testtools/GenSnippetsJPP.py +++ b/test/testtools/GenSnippetsJPP.py @@ -22,8 +22,8 @@ # # ************************************************************************************************************** # -VERSION = "0.44.0" -VERSION_DATE = "06.08.2025" +VERSION = "0.45.0" +VERSION_DATE = "07.08.2025" # # ************************************************************************************************************** @@ -3774,6 +3774,31 @@ def GetSeveralParticularSnippets(self): } """) + listCodeSnippets.append("""{ + // "JPP_2192" + // Python inline code is parameter name + "value" : ${<<[3, 4] if True else [5, 6]>>} +} +""") + + listCodeSnippets.append("""{ + // "JPP_2193" + // Python inline code is parameter name inside a list + "A" : ["B", ${<<[3, 4] if True else [5, 6]>>}, "C"] +} +""") + + listCodeSnippets.append("""{ + // "JPP_2194" + // Python inline code is parameter name inside a dictionary + "A" : {"kA" : "A", + "kB" : ${<<[3, 4] if True else [5, 6]>>}, + "kC" : "C"} +} +""") + + + # -- Python inline code - old stuff (to be shortened) listCodeSnippets.append("""{ From af47971d6aa57ef7aa440a0b5a5bfa077138f505 Mon Sep 17 00:00:00 2001 From: "Mai Dinh Nam Son (MS/EMC51-XC)" Date: Fri, 8 Aug 2025 16:43:39 +0700 Subject: [PATCH 08/13] Ticket 454 - Python inline code handling --- JsonPreprocessor/CJsonPreprocessor.py | 99 ++++++++++++++++++++------- 1 file changed, 74 insertions(+), 25 deletions(-) diff --git a/JsonPreprocessor/CJsonPreprocessor.py b/JsonPreprocessor/CJsonPreprocessor.py index 69ea01f..ffec6f5 100644 --- a/JsonPreprocessor/CJsonPreprocessor.py +++ b/JsonPreprocessor/CJsonPreprocessor.py @@ -75,6 +75,8 @@ class CNameMangling(Enum): STRINGVALUE = "__StringValueMake-up__" HANDLEIMPORTED = "__CheckImportedHandling__" DYNAMICIMPORTED = "__DynamicImportedHandling__" + PYTHONBUILTIN = "__PythonBuiltInFunction__" + PYBUILTINSTR = "__StrInPythonInlineCode__" class CPythonJSONDecoder(json.JSONDecoder): """ @@ -156,7 +158,7 @@ def __init__(self, keyPattern): def keyNameChecker(self, sKeyName: str): if sKeyName=='' or regex.match(r'^\s+$', sKeyName): - self.errorMsg = f"Empty key name detected. Please enter a valid name." + self.errorMsg = "Empty key name detected. Please enter a valid name." return False if regex.match(self.keyPattern, sKeyName): return True @@ -386,7 +388,7 @@ def __init__(self, syntax: CSyntaxType = CSyntaxType.python , currentCfg : dict self.keyPattern = keyPattern self.lDataTypes = [name for name, value in vars(builtins).items() if isinstance(value, type)] self.specialCharacters = r"!#$%^&()=[]{}|;',?`~" - self.pyCallPattern = r'<<\s*eval(?:(?!<<\s*eval|>>).)*>>' # The pattern of call Python builtin function in JSONP + self.pyCallPattern = r'<<\s*(?:(?!<<\s*|>>).)*>>' # The pattern of call Python builtin function in JSONP self.lDataTypes.append(keyword.kwlist) self.jsonPath = None self.importTree = None @@ -649,7 +651,7 @@ def __checkParamName(self, sInput: str) -> str: / *Type*: str / """ - pattern = rf'\${{\s*([^\[]+)\s*}}' + pattern = r'\${\s*([^\[]+)\s*}' lParams = regex.findall(pattern, sInput, regex.UNICODE) for param in lParams: if "." not in param and param in self.lDataTypes: @@ -750,9 +752,12 @@ def __getNestedValue(sNestedParam : str): oTmpObj = oTmpObj[int(element)] i+=1 try: - ldict = {} - exec(sExec, locals(), ldict) - tmpValue = ldict['value'] + if bPyBuiltIn: + tmpValue = sExec.replace('value = ', '') + else: + ldict = {} + exec(sExec, locals(), ldict) + tmpValue = ldict['value'] except Exception as error: if self.bJSONPreCheck: sNestedParam = self.__removeTokenStr(sNestedParam) @@ -769,7 +774,7 @@ def __getNestedValue(sNestedParam : str): errorMsg = f"{errorMsg} Reason: {error}" if ' or slices' not in str(error) else \ f"{errorMsg} Reason: {str(error).replace(' or slices', '')}" else: - if isinstance(error, KeyError) and regex.search(r"\[\s*" + str(error) + "\s*\]", sNestedParam): + if isinstance(error, KeyError) and regex.search(r"\[\s*" + str(error) + r"\s*\]", sNestedParam): errorMsg = f"Could not resolve expression '{sNestedParam.replace('$${', '${')}'. \ Reason: Key error {error}" else: @@ -778,7 +783,7 @@ def __getNestedValue(sNestedParam : str): return tmpValue bPyBuiltIn = False - if regex.match(self.pyCallPattern, sInputStr): + if regex.search(self.pyCallPattern, sInputStr): bPyBuiltIn = True specialCharacters = r'[]{}' pattern = rf'\$\${{\s*[^{regex.escape(specialCharacters)}]+\s*}}' @@ -1286,7 +1291,7 @@ def __handleList(lInput : list, bNested : bool, parentParams : str = '') -> list oJson = self.currentCfg | oJson tmpJson = copy.deepcopy(oJson) - pattern = rf"\${{\s*[^\[]+\s*}}" + pattern = r"\${\s*[^\[]+\s*}" pattern = rf"{pattern}(\[+\s*'.+'\s*\]+|\[+\s*\d+\s*\]+|\[+\s*\${{.+\s*\]+)*" for k, v in tmpJson.items(): if "${" not in k and CNameMangling.DUPLICATEDKEY_01.value not in k: @@ -1408,13 +1413,11 @@ def __handleList(lInput : list, bNested : bool, parentParams : str = '') -> list elif isinstance(v, list): v = __handleList(v, bNested, parentParams) elif isinstance(v, str) and self.__checkNestedParam(v): + bPyBuiltIn = False # Check and handle the Python builtIn in JSONP - if regex.match(self.pyCallPattern, v): - if regex.match(r'^\s*<<\s*eval\s*>>\s*$', v): - errorMsg = f"The Python builtIn must not be empty. Please check '{self.__removeTokenStr(v)}'" - self.__reset() - raise Exception(errorMsg) - elif "${" not in v: + if regex.search(self.pyCallPattern, v): + bPyBuiltIn = True + if '${' not in v: try: v = self.__pyBuiltInHandle(v) except Exception as error: @@ -1445,7 +1448,8 @@ def __handleList(lInput : list, bNested : bool, parentParams : str = '') -> list raise Exception(errorMsg) v = __loadNestedValue(initValue, v, key=k) # Check and handle the Python builtIn in JSONP - if isinstance(v, str) and regex.match(self.pyCallPattern, v): + if isinstance(v, str) and regex.search(self.pyCallPattern, v): + bPyBuiltIn = True try: v = self.__pyBuiltInHandle(v) except Exception as error: @@ -1466,7 +1470,7 @@ def __handleList(lInput : list, bNested : bool, parentParams : str = '') -> list raise Exception(f"Invalid expression found: '{self.__removeTokenStr(initValue)}'.") else: break - if isinstance(v, str) and regex.search(r'\[[^\]]+\]', v): + if isinstance(v, str) and regex.search(r'\[[^\]]+\]', v) and not bPyBuiltIn: sExec = 'value = ' + v try: ldict = {} @@ -1511,7 +1515,7 @@ def __handleList(lInput : list, bNested : bool, parentParams : str = '') -> list parentParams = '' __jsonUpdated(k, v, oJson, parentParams, keyNested, paramInValue, bDuplicatedHandle, recursive) if keyNested is not None and not bStrConvert: - transTable = str.maketrans({"[":"\[", "]":"\]" }) + transTable = str.maketrans({"[":r"\[", "]":r"\]" }) tmpList = [] for key in self.dUpdatedParams: if regex.match(r"^" + k.translate(transTable) + r"\['.+$", key, regex.UNICODE): @@ -1560,7 +1564,7 @@ def __checkNestedParam(self, sInput : str, bKey=False) -> bool: *raise exception if nested parameter format invalid* """ pattern = rf"^\${{\s*[^{regex.escape(self.specialCharacters)}]+\s*}}(\[.*\])+$" - pattern1 = rf"\${{[^\${{]+}}(\[[^\[]+\])*[^\[]*\${{" + pattern1 = r"\${[^\${]+}(\[[^\[]+\])*[^\[]*\${" pattern2 = r"\[[\p{Nd}\.\-\+'\s]*:[\p{Nd}\.\-\+'\s]*\]|\[[\s\p{Nd}\+\-]*\${.+[}\]][\s\p{Nd}\+\-]*:[\s\p{Nd}\+\-]*\${.+[}\]][\s\p{Nd}\+\-]*\]|" # Slicing pattern pattern2 = pattern2 + r"\[[\s\p{Nd}\+\-]*\${.+[}\]][\s\p{Nd}\+\-]*:[\p{Nd}\.\-\+'\s]*\]|\[[\p{Nd}\.\-\+'\s]*:[\s\p{Nd}\+\-]*\${.+[}\]][\s\p{Nd}\+\-]*\]" # Slicing pattern if not bKey and regex.match(self.pyCallPattern, sInput): @@ -1823,7 +1827,7 @@ def hashContent(sInput : str) -> str: self.__reset() raise Exception(jsonException) self.JPGlobals = self.jsonCheck - importPattern = rf'([\'|"]\s*\[\s*import\s*\](_\d+)*\s*[\'|"]\s*:\s*[\'|"][^\'"]+[\'|"])' + importPattern = r'([\'|"]\s*\[\s*import\s*\](_\d+)*\s*[\'|"]\s*:\s*[\'|"][^\'"]+[\'|"])' sJson = json.dumps(self.jsonCheck) # Check cyclic import by comparing the content of the whole JSONP configuration object. if len(self.importCheck)>1: @@ -1850,15 +1854,59 @@ def __pyBuiltInHandle(self, sInput : str): """ Handles Python builtIn function. """ - sExec = regex.sub(r'<<\s*eval(.*)>>', "evalValue = \\1", sInput) + if CNameMangling.PYBUILTINSTR.value in sInput: + sInput = sInput.replace(CNameMangling.PYBUILTINSTR.value, '"') + if CNameMangling.PYTHONBUILTIN.value in sInput: + sInput = regex.sub(rf'(self\.JPGlobals(?:(?!self\.JPGlobals).)+){CNameMangling.PYTHONBUILTIN.value}', '"\\1"', sInput) + pyInlineCode = regex.findall(self.pyCallPattern, sInput)[0] + sExec = regex.sub(r'<<\s*(.*)>>', "evalValue = \\1", pyInlineCode) try: ldict = {} exec(sExec, locals(), ldict) evalValue = ldict['evalValue'] except Exception as error: raise Exception(error) - + if not isinstance(evalValue, (str, int, float, bool, type(None), list, dict)): + errorMsg = f"The Python builtIn '{self.__removeTokenStr(sInput)}' return the value with \ +the datatype '{type(evalValue)}' is not suitable for JSON." + raise Exception(errorMsg) + if CNameMangling.DYNAMICIMPORTED.value in sInput: + sInput = regex.sub(f'{CNameMangling.DYNAMICIMPORTED.value}', '/', sInput) + sInput = regex.sub(f'{self.pyCallPattern}', f'{evalValue}', sInput) + evalValue = sInput + return evalValue + + def __pyInlineCodeSyntaxCheck(self, sInput): + """ +Checks the syntax of Python inline code. + """ + if regex.match(r'^\s*<<\s*>>\s*$', sInput): + errorMsg = f"The Python builtIn must not be empty. Please check '{self.__removeTokenStr(v)}'" + self.__reset() + raise Exception(errorMsg) + elif regex.search(rf'["\s]*{self.pyCallPattern}[^:]*["\s]*:', sInput): + errorMsg = f"Python inline code is not allowed as key! Please check the line {sInput}" + self.__reset() + raise Exception(errorMsg) + elif regex.search(rf':\s*".*{self.pyCallPattern}[^"]*"', sInput): + errorMsg = f"Python inline code must not be embededed part of a string! Please check the line {sInput}" + self.__reset() + raise Exception(errorMsg) + else: + pyInlineCode = regex.search(self.pyCallPattern, sInput) + if len(pyInlineCode) > 0: + pyInlineCode = pyInlineCode[0] + if pyInlineCode.count('"') % 2 == 1: + errorMsg = f"Invalid syntax in the Python inline code '{pyInlineCode}'." + self.__reset() + raise Exception(errorMsg) + elif regex.search(r'"\s*\${[^"]+"', pyInlineCode): + pyInlineCode = regex.sub(r'"\s*(\${[^"]+)\s*"', f'\\1{CNameMangling.PYTHONBUILTIN.value}', pyInlineCode) + pyInlineCode = regex.sub(r'"(\s*(?:(?!\${)[^"])*)"', \ + f'{CNameMangling.PYBUILTINSTR.value}\\1{CNameMangling.PYBUILTINSTR.value}', pyInlineCode) + sInput = regex.sub(rf'({self.pyCallPattern})', f'"{pyInlineCode}"', sInput) + return sInput def jsonLoad(self, jFile : str): """ @@ -2083,7 +2131,7 @@ def __handleLastElement(sInput : str) -> str: raise Exception(f"{error} in line: '{line}'") line = line.rstrip() if regex.search(self.pyCallPattern, line): - line = regex.sub(rf'({self.pyCallPattern})', '"\\1"', line) + line = self.__pyInlineCodeSyntaxCheck(line) if "${" in line: line = regex.sub(r'\${\s*([^\s][^}]+[^\s])\s*}', '${\\1}', line) curLine = line @@ -2131,6 +2179,7 @@ def __handleLastElement(sInput : str) -> str: item = item.replace(CNameMangling.NESTEDPARAM.value, tmpList03.pop(0)) curItem = item if "${" in item: + tmpList = [] bHandle = False if '"' in item and item.count('"')%2==0: tmpList = regex.findall(r'"[^"]+"', item) @@ -2178,9 +2227,9 @@ def __handleLastElement(sInput : str) -> str: item = __handleLastElement(item) elif not regex.match(r'^[\s{]*"[^"]*"\s*$', item): if CNameMangling.STRINGVALUE.value in item: - item = regex.sub('(^[\s{]*)([^\s].+[^\s])\s*$', '\\1\'\\2\' ', item) + item = regex.sub(r'(^[\s{]*)([^\s].+[^\s])\s*$', '\\1\'\\2\' ', item) else: - item = regex.sub('(^[\s{]*)([^\s].+[^\s])\s*$', '\\1"\\2" ', item) + item = regex.sub(r'(^[\s{]*)([^\s].+[^\s])\s*$', '\\1"\\2" ', item) while CNameMangling.STRINGVALUE.value in item: if "${" in tmpList[0]: sValue = tmpList.pop(0) From 652392aa49aaedcf76a15f9749cee300391da5c7 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Mon, 11 Aug 2025 11:42:54 +0200 Subject: [PATCH 09/13] Some INLINE_CODE testcases fixed --- test/testfiles/jpp-test_config_2100.jsonp | 4 +--- test/testfiles/jpp-test_config_2101.jsonp | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/test/testfiles/jpp-test_config_2100.jsonp b/test/testfiles/jpp-test_config_2100.jsonp index 362e697..4c3604b 100644 --- a/test/testfiles/jpp-test_config_2100.jsonp +++ b/test/testfiles/jpp-test_config_2100.jsonp @@ -18,7 +18,5 @@ "value2" : <<25>>, "value3" : <<2.5>>, "value4" : <>, - "value5" : <>, - "value6" : <>, - "value7" : <> + "value5" : <> } diff --git a/test/testfiles/jpp-test_config_2101.jsonp b/test/testfiles/jpp-test_config_2101.jsonp index 3a73640..4b2250f 100644 --- a/test/testfiles/jpp-test_config_2101.jsonp +++ b/test/testfiles/jpp-test_config_2101.jsonp @@ -17,7 +17,7 @@ "value1" : <<[1, 2]>>, "value2" : <<{"kA" : 1, "kB" : 2, "kC" : 3}>>, "expression1" : [1, 2], - "value3" : <<${expression}>>, + "value3" : <<${expression1}>>, "expression2" : {"kA" : 1, "kB" : 2}, - "value3" : <<${expression}>> + "value3" : <<${expression2}>> } From dad1d19f0f86220a9fd04b46fc24e36d1bc9880c Mon Sep 17 00:00:00 2001 From: qth2gi Date: Mon, 11 Aug 2025 16:54:19 +0200 Subject: [PATCH 10/13] Several INLINE_CODE testcases activated --- test/JPP_TestUsecases.csv | 14 + test/JPP_TestUsecases.html | 464 +++++++++++++++- test/JPP_TestUsecases.rst | 142 ++++- test/JPP_TestUsecases.txt | 58 +- test/component_test.py | 4 +- .../test_27_INLINE_CODE_GOODCASE.py | 80 +++ .../test_28_INLINE_CODE_BADCASE.py | 96 ++++ test/testconfig/TestConfig.py | 523 ++++++++++-------- test/testfiles/jpp-test_config_2101.jsonp | 2 +- test/testfiles/jpp-test_config_2105.jsonp | 12 +- ...2154).jsonp => jpp-test_config_2154.jsonp} | 0 11 files changed, 1164 insertions(+), 231 deletions(-) create mode 100644 test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py create mode 100644 test/pytest/pytestfiles/test_28_INLINE_CODE_BADCASE.py rename test/testfiles/{jpp-test_config_2154).jsonp => jpp-test_config_2154.jsonp} (100%) diff --git a/test/JPP_TestUsecases.csv b/test/JPP_TestUsecases.csv index 4cbf5d3..713303d 100644 --- a/test/JPP_TestUsecases.csv +++ b/test/JPP_TestUsecases.csv @@ -202,3 +202,17 @@ JPP_2055|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing s JPP_2056|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (7) JPP_2057|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (8) JPP_2058|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (9) +JPP_2100|INLINE_CODE|GOODCASE|JSON file containing Python inline code with simple data types +JPP_2101|INLINE_CODE|GOODCASE|JSON file containing Python inline code with composite data types +JPP_2102|INLINE_CODE|GOODCASE|JSON file containing Python inline code with simple conditions +JPP_2103|INLINE_CODE|GOODCASE|JSON file containing Python inline code within lists and dictionaries +JPP_2105|INLINE_CODE|GOODCASE|JSON file containing Python inline code in more complex scenarios +JPP_2107|INLINE_CODE|GOODCASE|JSON file containing Python inline code with import paths +JPP_2150|INLINE_CODE|BADCASE|Python inline code as embedded part of a string (1) +JPP_2151|INLINE_CODE|BADCASE|Python inline code as embedded part of a string (2) +JPP_2152|INLINE_CODE|BADCASE|Python inline code as embedded part of a string (3) +JPP_2180|INLINE_CODE|BADCASE|Python inline code with additional leading angle bracket +JPP_2184|INLINE_CODE|BADCASE|Python inline code inside a dictionary with additional leading angle bracket +JPP_2192|INLINE_CODE|BADCASE|Python inline code is parameter name +JPP_2193|INLINE_CODE|BADCASE|Python inline code is parameter name inside a list +JPP_2194|INLINE_CODE|BADCASE|Python inline code is parameter name inside a dictionary diff --git a/test/JPP_TestUsecases.html b/test/JPP_TestUsecases.html index 3904c5f..14cbea2 100644 --- a/test/JPP_TestUsecases.html +++ b/test/JPP_TestUsecases.html @@ -6737,12 +6737,474 @@ + + + + + +203 + + + + + +JPP_2100 + + + + +INLINE_CODE + + + + +GOODCASE + + + + +JSON file containing Python inline code with simple data types
+Expected: JsonPreprocessor returns expected values + + +
+ + + + + + + +204 + + + + + +JPP_2101 + + + + +INLINE_CODE + + + + +GOODCASE + + + + +JSON file containing Python inline code with composite data types
+Expected: JsonPreprocessor returns expected values + + +
+ + + + + + + +205 + + + + + +JPP_2102 + + + + +INLINE_CODE + + + + +GOODCASE + + + + +JSON file containing Python inline code with simple conditions
+Expected: JsonPreprocessor returns expected values + + +
+ + + + + + + +206 + + + + + +JPP_2103 + + + + +INLINE_CODE + + + + +GOODCASE + + + + +JSON file containing Python inline code within lists and dictionaries
+Expected: JsonPreprocessor returns expected values + + +
+ + + + + + + +207 + + + + + +JPP_2105 + + + + +INLINE_CODE + + + + +GOODCASE + + + + +JSON file containing Python inline code in more complex scenarios
+Expected: JsonPreprocessor returns expected values + + +
+ + + + + + + +208 + + + + + +JPP_2107 + + + + +INLINE_CODE + + + + +GOODCASE + + + + +JSON file containing Python inline code with import paths
+Expected: JsonPreprocessor returns expected values + + +
+ + + + + + + +209 + + + + + +JPP_2150 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code as embedded part of a string (1)
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ + + + + + + +210 + + + + + +JPP_2151 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code as embedded part of a string (2)
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ + + + + + + +211 + + + + + +JPP_2152 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code as embedded part of a string (3)
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ + + + + + + +212 + + + + + +JPP_2180 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code with additional leading angle bracket
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ + + + + + + +213 + + + + + +JPP_2184 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code inside a dictionary with additional leading angle bracket
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ + + + + + + +214 + + + + + +JPP_2192 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code is parameter name
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ + + + + + + +215 + + + + + +JPP_2193 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code is parameter name inside a list
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ + + + + + + +216 + + + + + +JPP_2194 + + + + +INLINE_CODE + + + + +BADCASE + + + + +Python inline code is parameter name inside a dictionary
+Expected: No values are returned, and JsonPreprocessor throws an exception + + +
+ +
 

-
Generated: 05.08.2025 - 16:52:10
+
Generated: 11.08.2025 - 16:48:21
 
diff --git a/test/JPP_TestUsecases.rst b/test/JPP_TestUsecases.rst index 89a6e45..26fe29f 100644 --- a/test/JPP_TestUsecases.rst +++ b/test/JPP_TestUsecases.rst @@ -2125,5 +2125,145 @@ Test Use Cases ---- -Generated: 05.08.2025 - 16:52:10 +* **Test JPP_2100** + + [INLINE_CODE / GOODCASE] + + **JSON file containing Python inline code with simple data types** + + Expected: JsonPreprocessor returns expected values + +---- + +* **Test JPP_2101** + + [INLINE_CODE / GOODCASE] + + **JSON file containing Python inline code with composite data types** + + Expected: JsonPreprocessor returns expected values + +---- + +* **Test JPP_2102** + + [INLINE_CODE / GOODCASE] + + **JSON file containing Python inline code with simple conditions** + + Expected: JsonPreprocessor returns expected values + +---- + +* **Test JPP_2103** + + [INLINE_CODE / GOODCASE] + + **JSON file containing Python inline code within lists and dictionaries** + + Expected: JsonPreprocessor returns expected values + +---- + +* **Test JPP_2105** + + [INLINE_CODE / GOODCASE] + + **JSON file containing Python inline code in more complex scenarios** + + Expected: JsonPreprocessor returns expected values + +---- + +* **Test JPP_2107** + + [INLINE_CODE / GOODCASE] + + **JSON file containing Python inline code with import paths** + + Expected: JsonPreprocessor returns expected values + +---- + +* **Test JPP_2150** + + [INLINE_CODE / BADCASE] + + **Python inline code as embedded part of a string (1)** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +* **Test JPP_2151** + + [INLINE_CODE / BADCASE] + + **Python inline code as embedded part of a string (2)** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +* **Test JPP_2152** + + [INLINE_CODE / BADCASE] + + **Python inline code as embedded part of a string (3)** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +* **Test JPP_2180** + + [INLINE_CODE / BADCASE] + + **Python inline code with additional leading angle bracket** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +* **Test JPP_2184** + + [INLINE_CODE / BADCASE] + + **Python inline code inside a dictionary with additional leading angle bracket** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +* **Test JPP_2192** + + [INLINE_CODE / BADCASE] + + **Python inline code is parameter name** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +* **Test JPP_2193** + + [INLINE_CODE / BADCASE] + + **Python inline code is parameter name inside a list** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +* **Test JPP_2194** + + [INLINE_CODE / BADCASE] + + **Python inline code is parameter name inside a dictionary** + + Expected: No values are returned, and JsonPreprocessor throws an exception + +---- + +Generated: 11.08.2025 - 16:48:21 diff --git a/test/JPP_TestUsecases.txt b/test/JPP_TestUsecases.txt index 8cd44d9..3a61a79 100644 --- a/test/JPP_TestUsecases.txt +++ b/test/JPP_TestUsecases.txt @@ -868,5 +868,61 @@ Test JPP_2058 / PARAMETER_SCOPE / BADCASE Description: JSON file containing a parameter with missing scope (9) Expectation: No values are returned, and JsonPreprocessor throws an exception ------------------------------------------------------------------------------------------------------------------------ -Generated: 05.08.2025 - 16:52:10 +Test JPP_2100 / INLINE_CODE / GOODCASE +Description: JSON file containing Python inline code with simple data types +Expectation: JsonPreprocessor returns expected values +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2101 / INLINE_CODE / GOODCASE +Description: JSON file containing Python inline code with composite data types +Expectation: JsonPreprocessor returns expected values +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2102 / INLINE_CODE / GOODCASE +Description: JSON file containing Python inline code with simple conditions +Expectation: JsonPreprocessor returns expected values +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2103 / INLINE_CODE / GOODCASE +Description: JSON file containing Python inline code within lists and dictionaries +Expectation: JsonPreprocessor returns expected values +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2105 / INLINE_CODE / GOODCASE +Description: JSON file containing Python inline code in more complex scenarios +Expectation: JsonPreprocessor returns expected values +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2107 / INLINE_CODE / GOODCASE +Description: JSON file containing Python inline code with import paths +Expectation: JsonPreprocessor returns expected values +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2150 / INLINE_CODE / BADCASE +Description: Python inline code as embedded part of a string (1) +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2151 / INLINE_CODE / BADCASE +Description: Python inline code as embedded part of a string (2) +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2152 / INLINE_CODE / BADCASE +Description: Python inline code as embedded part of a string (3) +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2180 / INLINE_CODE / BADCASE +Description: Python inline code with additional leading angle bracket +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2184 / INLINE_CODE / BADCASE +Description: Python inline code inside a dictionary with additional leading angle bracket +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2192 / INLINE_CODE / BADCASE +Description: Python inline code is parameter name +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2193 / INLINE_CODE / BADCASE +Description: Python inline code is parameter name inside a list +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Test JPP_2194 / INLINE_CODE / BADCASE +Description: Python inline code is parameter name inside a dictionary +Expectation: No values are returned, and JsonPreprocessor throws an exception +------------------------------------------------------------------------------------------------------------------------ +Generated: 11.08.2025 - 16:48:21 diff --git a/test/component_test.py b/test/component_test.py index 24872a9..fdc6646 100644 --- a/test/component_test.py +++ b/test/component_test.py @@ -22,8 +22,8 @@ # # -------------------------------------------------------------------------------------------------------------- # -VERSION = "0.64.0" -VERSION_DATE = "07.08.2025" +VERSION = "0.65.0" +VERSION_DATE = "11.08.2025" # # -------------------------------------------------------------------------------------------------------------- #TM*** diff --git a/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py b/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py new file mode 100644 index 0000000..23901df --- /dev/null +++ b/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py @@ -0,0 +1,80 @@ +# ************************************************************************************************************** +# Copyright 2020-2023 Robert Bosch GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# -------------------------------------------------------------------------------------------------------------- +# +# test_27_INLINE_CODE_GOODCASE.py +# +# XC-HWP/ESW3-Queckenstedt +# +# 11.08.2025 - 16:48:21 +# +# -------------------------------------------------------------------------------------------------------------- + +import pytest +from pytestlibs.CExecute import CExecute + +# -------------------------------------------------------------------------------------------------------------- + +class Test_INLINE_CODE_GOODCASE: + +# -------------------------------------------------------------------------------------------------------------- + # Expected: JsonPreprocessor returns expected values + @pytest.mark.parametrize( + "Description", ["JSON file containing Python inline code with simple data types",] + ) + def test_JPP_2100(self, Description): + nReturn = CExecute.Execute("JPP_2100") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: JsonPreprocessor returns expected values + @pytest.mark.parametrize( + "Description", ["JSON file containing Python inline code with composite data types",] + ) + def test_JPP_2101(self, Description): + nReturn = CExecute.Execute("JPP_2101") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: JsonPreprocessor returns expected values + @pytest.mark.parametrize( + "Description", ["JSON file containing Python inline code with simple conditions",] + ) + def test_JPP_2102(self, Description): + nReturn = CExecute.Execute("JPP_2102") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: JsonPreprocessor returns expected values + @pytest.mark.parametrize( + "Description", ["JSON file containing Python inline code within lists and dictionaries",] + ) + def test_JPP_2103(self, Description): + nReturn = CExecute.Execute("JPP_2103") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: JsonPreprocessor returns expected values + @pytest.mark.parametrize( + "Description", ["JSON file containing Python inline code in more complex scenarios",] + ) + def test_JPP_2105(self, Description): + nReturn = CExecute.Execute("JPP_2105") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: JsonPreprocessor returns expected values + @pytest.mark.parametrize( + "Description", ["JSON file containing Python inline code with import paths",] + ) + def test_JPP_2107(self, Description): + nReturn = CExecute.Execute("JPP_2107") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- diff --git a/test/pytest/pytestfiles/test_28_INLINE_CODE_BADCASE.py b/test/pytest/pytestfiles/test_28_INLINE_CODE_BADCASE.py new file mode 100644 index 0000000..1d32240 --- /dev/null +++ b/test/pytest/pytestfiles/test_28_INLINE_CODE_BADCASE.py @@ -0,0 +1,96 @@ +# ************************************************************************************************************** +# Copyright 2020-2023 Robert Bosch GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# -------------------------------------------------------------------------------------------------------------- +# +# test_28_INLINE_CODE_BADCASE.py +# +# XC-HWP/ESW3-Queckenstedt +# +# 11.08.2025 - 16:48:21 +# +# -------------------------------------------------------------------------------------------------------------- + +import pytest +from pytestlibs.CExecute import CExecute + +# -------------------------------------------------------------------------------------------------------------- + +class Test_INLINE_CODE_BADCASE: + +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code as embedded part of a string (1)",] + ) + def test_JPP_2150(self, Description): + nReturn = CExecute.Execute("JPP_2150") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code as embedded part of a string (2)",] + ) + def test_JPP_2151(self, Description): + nReturn = CExecute.Execute("JPP_2151") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code as embedded part of a string (3)",] + ) + def test_JPP_2152(self, Description): + nReturn = CExecute.Execute("JPP_2152") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code with additional leading angle bracket",] + ) + def test_JPP_2180(self, Description): + nReturn = CExecute.Execute("JPP_2180") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code inside a dictionary with additional leading angle bracket",] + ) + def test_JPP_2184(self, Description): + nReturn = CExecute.Execute("JPP_2184") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code is parameter name",] + ) + def test_JPP_2192(self, Description): + nReturn = CExecute.Execute("JPP_2192") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code is parameter name inside a list",] + ) + def test_JPP_2193(self, Description): + nReturn = CExecute.Execute("JPP_2193") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- + # Expected: No values are returned, and JsonPreprocessor throws an exception + @pytest.mark.parametrize( + "Description", ["Python inline code is parameter name inside a dictionary",] + ) + def test_JPP_2194(self, Description): + nReturn = CExecute.Execute("JPP_2194") + assert nReturn == 0 +# -------------------------------------------------------------------------------------------------------------- diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index 5769c5f..0445205 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -22,7 +22,7 @@ # # -------------------------------------------------------------------------------------------------------------- # -# 07.08.2025 +# 11.08.2025 # # !!! Temporarily tests are deactivated by the following line commented out: # # # listofdictUsecases.append(dictUsecase) @@ -4431,13 +4431,18 @@ dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2100.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ +[DOTDICT] (5/1) > {value1} [STR] : 'ABC' +[DOTDICT] (5/2) > {value2} [INT] : 25 +[DOTDICT] (5/3) > {value3} [FLOAT] : 2.5 +[DOTDICT] (5/4) > {value4} [BOOL] : True +[DOTDICT] (5/5) > {value5} [NONE] : None """ -# # # listofdictUsecases.append(dictUsecase) +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4446,13 +4451,26 @@ dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2101.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ +[DOTDICT] (6/1) > {value1} [LIST] (2/1) > [INT] : 1 +[DOTDICT] (6/1) > {value1} [LIST] (2/2) > [INT] : 2 +[DOTDICT] (6/2) > {value2} [DOTDICT] (3/1) > {kA} [INT] : 1 +[DOTDICT] (6/2) > {value2} [DOTDICT] (3/2) > {kB} [INT] : 2 +[DOTDICT] (6/2) > {value2} [DOTDICT] (3/3) > {kC} [INT] : 3 +[DOTDICT] (6/3) > {expression1} [LIST] (2/1) > [INT] : 1 +[DOTDICT] (6/3) > {expression1} [LIST] (2/2) > [INT] : 2 +[DOTDICT] (6/4) > {value3} [LIST] (2/1) > [INT] : 1 +[DOTDICT] (6/4) > {value3} [LIST] (2/2) > [INT] : 2 +[DOTDICT] (6/5) > {expression2} [DOTDICT] (2/1) > {kA} [INT] : 1 +[DOTDICT] (6/5) > {expression2} [DOTDICT] (2/2) > {kB} [INT] : 2 +[DOTDICT] (6/6) > {value4} [DOTDICT] (2/1) > {kA} [INT] : 1 +[DOTDICT] (6/6) > {value4} [DOTDICT] (2/2) > {kB} [INT] : 2 """ -# # # listofdictUsecases.append(dictUsecase) +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4461,13 +4479,19 @@ dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2102.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ +[DOTDICT] (6/1) > {value1} [INT] : 1 +[DOTDICT] (6/2) > {choice} [BOOL] : True +[DOTDICT] (6/3) > {value2} [INT] : 1 +[DOTDICT] (6/4) > {A} [INT] : 1 +[DOTDICT] (6/5) > {B} [INT] : 2 +[DOTDICT] (6/6) > {value3} [STR] : 'self.JPGlobals['A']' """ -# # # listofdictUsecases.append(dictUsecase) +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4476,23 +4500,30 @@ dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2103.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ +[DOTDICT] (4/1) > {A} [INT] : 1 +[DOTDICT] (4/2) > {B} [INT] : 2 +[DOTDICT] (4/3) > {choice} [BOOL] : True +[DOTDICT] (4/4) > {values} [DOTDICT] (3/1) > {kA} [STR] : 'A' +[DOTDICT] (4/4) > {values} [DOTDICT] (3/2) > {kB} [INT] : 1 +[DOTDICT] (4/4) > {values} [DOTDICT] (3/3) > {kC} [STR] : 'C' """ -# # # listofdictUsecases.append(dictUsecase) +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Exception: Expecting ',' delimiter dictUsecase['TESTID'] = "JPP_2104" dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code as list index and dictionary key" dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2104.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ @@ -4501,28 +4532,52 @@ del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# JSONP file still partially commented out dictUsecase['TESTID'] = "JPP_2105" dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code in more complex scenarios" dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2105.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ +[DOTDICT] (8/1) > {A} [LIST] (3/1) > [INT] : 1 +[DOTDICT] (8/1) > {A} [LIST] (3/2) > [INT] : 2 +[DOTDICT] (8/1) > {A} [LIST] (3/3) > [INT] : 3 +[DOTDICT] (8/2) > {B} [LIST] (3/1) > [INT] : 4 +[DOTDICT] (8/2) > {B} [LIST] (3/2) > [INT] : 5 +[DOTDICT] (8/2) > {B} [LIST] (3/3) > [INT] : 6 +[DOTDICT] (8/3) > {values} [LIST] (4/1) > [INT] : 1 +[DOTDICT] (8/3) > {values} [LIST] (4/2) > [INT] : 2 +[DOTDICT] (8/3) > {values} [LIST] (4/3) > [INT] : 3 +[DOTDICT] (8/3) > {values} [LIST] (4/4) > [LIST] (6/1) > [INT] : 4 +[DOTDICT] (8/3) > {values} [LIST] (4/4) > [LIST] (6/2) > [INT] : 5 +[DOTDICT] (8/3) > {values} [LIST] (4/4) > [LIST] (6/3) > [INT] : 6 +[DOTDICT] (8/3) > {values} [LIST] (4/4) > [LIST] (6/4) > [INT] : 1 +[DOTDICT] (8/3) > {values} [LIST] (4/4) > [LIST] (6/5) > [INT] : 2 +[DOTDICT] (8/3) > {values} [LIST] (4/4) > [LIST] (6/6) > [INT] : 3 +[DOTDICT] (8/4) > {dict} [DOTDICT] (2/1) > {kA} [STR] : 'vA' +[DOTDICT] (8/4) > {dict} [DOTDICT] (2/2) > {kB} [STR] : 'vB' +[DOTDICT] (8/5) > {key_list} [LIST] (2/1) > [STR] : 'kA' +[DOTDICT] (8/5) > {key_list} [LIST] (2/2) > [STR] : 'kB' +[DOTDICT] (8/6) > {C} [STR] : 'C' +[DOTDICT] (8/7) > {D} [STR] : 'D' +[DOTDICT] (8/8) > {value2} [STR] : 'CD' """ -# # # listofdictUsecases.append(dictUsecase) +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# slicing under discussion dictUsecase['TESTID'] = "JPP_2106" dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with slicing" dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required; slicing still banned" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2106.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ @@ -4536,13 +4591,16 @@ dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Issue because of 'eval' still required; entire import interpreted as path" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2107.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ +[DOTDICT] (3/1) > {path_1} [STR] : './dynamic_imports/AA/imported.AA.jsonp' +[DOTDICT] (3/2) > {path_2} [STR] : './dynamic_imports/AA/BB/imported.BB.jsonp' +[DOTDICT] (3/3) > {level} [STR] : 'AA' """ -# # # listofdictUsecases.append(dictUsecase) +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- @@ -4552,13 +4610,12 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2150.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Python inline code must not be embedded part of a string" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4567,13 +4624,12 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2151.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Python inline code must not be embedded part of a string" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4582,417 +4638,444 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2152.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Python inline code must not be embedded part of a string" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting ',' delimiter +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 dictUsecase['TESTID'] = "JPP_2153" dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a string within a list" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2153.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# error message to be reworked: Python inline code is not allowed as key! +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2154" dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a string within a dictionary" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2154.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2155" dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a key name (1)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2155.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2156" dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a key name (2)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2156.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2157" dictUsecase['DESCRIPTION'] = "Python inline code as embedded part of a key name (3)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2157.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2158" dictUsecase['DESCRIPTION'] = "Python inline code without quotes at left hand side of the colon (1)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2158.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} dictUsecase['TESTID'] = "JPP_2159" +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['DESCRIPTION'] = "Python inline code without quotes at left hand side of the colon (2)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2159.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2160" dictUsecase['DESCRIPTION'] = "Python inline code within quotes at left hand side of the colon (1)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2160.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2161" dictUsecase['DESCRIPTION'] = "Python inline code within quotes at left hand side of the colon (2)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2161.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2162" dictUsecase['DESCRIPTION'] = "Completely invalid Python inline code at left hand side of the colon (1)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2162.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2163" dictUsecase['DESCRIPTION'] = "Completely invalid Python inline code at left hand side of the colon (2)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2163.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2164" dictUsecase['DESCRIPTION'] = "Python inline code as key name at left hand side of the colon (1)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2164.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2165" dictUsecase['DESCRIPTION'] = "Python inline code as key name at left hand side of the colon (2)" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2165.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2166" dictUsecase['DESCRIPTION'] = "Python inline code as list index at left hand side of the colon" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2166.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Error message "Python inline code is not allowed as key!" should be +# rephrased to "Python inline code cannot be used to define a key name." +# https://github.com/test-fullautomation/python-jsonpreprocessor/issues/464 dictUsecase['TESTID'] = "JPP_2167" dictUsecase['DESCRIPTION'] = "Python inline code as dictionary key at left hand side of the colon" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2167.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Exception: 'Expecting value: line 2 column 11 dictUsecase['TESTID'] = "JPP_2168" dictUsecase['DESCRIPTION'] = "Python inline code with missing leading angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2168.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Exception: 'Expecting value: line 2 column 11 dictUsecase['TESTID'] = "JPP_2169" dictUsecase['DESCRIPTION'] = "Python inline code with missing trailing angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2169.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Exception: 'Expecting value: line 2 column 11 dictUsecase['TESTID'] = "JPP_2170" dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing leading angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2170.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Exception: 'Expecting value: line 2 column 11 dictUsecase['TESTID'] = "JPP_2171" dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing trailing angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2171.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Exception: 'Expecting value: line 2 column 11 dictUsecase['TESTID'] = "JPP_2172" dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing leading angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2172.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Exception: 'Expecting value: line 2 column 11 dictUsecase['TESTID'] = "JPP_2173" dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing trailing angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2173.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting ',' delimiter: dictUsecase['TESTID'] = "JPP_2174" dictUsecase['DESCRIPTION'] = "Python inline code with missing both leading angle brackets" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2174.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting value: dictUsecase['TESTID'] = "JPP_2175" dictUsecase['DESCRIPTION'] = "Python inline code with missing both trailing angle brackets" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2175.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting ',' delimiter dictUsecase['TESTID'] = "JPP_2176" dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing both leading angle brackets" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2176.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting value: dictUsecase['TESTID'] = "JPP_2177" dictUsecase['DESCRIPTION'] = "Python inline code inside a list with missing both trailing angle brackets" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2177.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting ',' delimiter dictUsecase['TESTID'] = "JPP_2178" dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing both leading angle brackets" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2178.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting value: dictUsecase['TESTID'] = "JPP_2179" dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with missing both trailing angle brackets" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2179.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- @@ -5002,57 +5085,56 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2180.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Could not evaluate the Python builtIn" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting ',' delimiter: dictUsecase['TESTID'] = "JPP_2181" dictUsecase['DESCRIPTION'] = "Python inline code with additional trailing angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2181.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Python inline code not resolved dictUsecase['TESTID'] = "JPP_2182" dictUsecase['DESCRIPTION'] = "Python inline code inside a list with additional leading angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2182.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting ',' delimiter: dictUsecase['TESTID'] = "JPP_2183" dictUsecase['DESCRIPTION'] = "Python inline code inside a list with additional trailing angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2183.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- @@ -5062,117 +5144,123 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2184.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Could not evaluate the Python builtIn" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting ',' delimiter dictUsecase['TESTID'] = "JPP_2185" dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary with additional trailing angle bracket" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2185.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# 'Could not evaluate the Python builtIn <>. +# Reason: invalid syntax (, line 1)' +# Expected: Data type error (not supported by JSON) dictUsecase['TESTID'] = "JPP_2186" dictUsecase['DESCRIPTION'] = "Python inline code returns data type not supported by JSON" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2186.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Python inline code not resolved dictUsecase['TESTID'] = "JPP_2187" dictUsecase['DESCRIPTION'] = "Python inline code inside a list returns data type not supported by JSON" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2187.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# 'Could not evaluate the Python builtIn <>. +# Reason: invalid syntax (, line 1)' +# Expected: Data type error (not supported by JSON) dictUsecase['TESTID'] = "JPP_2188" dictUsecase['DESCRIPTION'] = "Python inline code inside a dictionary returns data type not supported by JSON" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2188.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting value: +# Nesting not detected dictUsecase['TESTID'] = "JPP_2189" dictUsecase['DESCRIPTION'] = "Nested Python inline code" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2189.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting value: +# Nesting not detected dictUsecase['TESTID'] = "JPP_2190" dictUsecase['DESCRIPTION'] = "Nested Python inline code inside a list" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2190.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} +# Expecting value: +# Nesting not detected dictUsecase['TESTID'] = "JPP_2191" dictUsecase['DESCRIPTION'] = "Nested Python inline code inside a dictionary" dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2191.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" +dictUsecase['EXPECTEDRETURN'] = None # # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- @@ -5182,13 +5270,12 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2192.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Invalid syntax" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -5197,13 +5284,12 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2193.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Invalid syntax" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -5212,12 +5298,11 @@ dictUsecase['EXPECTATION'] = "No values are returned, and JsonPreprocessor throws an exception" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "BADCASE" -dictUsecase['HINT'] = "Feature still under construction" -dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2194.jsonp" -dictUsecase['EXPECTEDEXCEPTION'] = None -dictUsecase['EXPECTEDRETURN'] = """ -""" -# # # listofdictUsecases.append(dictUsecase) +dictUsecase['EXPECTEDEXCEPTION'] = "Invalid syntax" +dictUsecase['EXPECTEDRETURN'] = None +listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- diff --git a/test/testfiles/jpp-test_config_2101.jsonp b/test/testfiles/jpp-test_config_2101.jsonp index 4b2250f..ec684aa 100644 --- a/test/testfiles/jpp-test_config_2101.jsonp +++ b/test/testfiles/jpp-test_config_2101.jsonp @@ -19,5 +19,5 @@ "expression1" : [1, 2], "value3" : <<${expression1}>>, "expression2" : {"kA" : 1, "kB" : 2}, - "value3" : <<${expression2}>> + "value4" : <<${expression2}>> } diff --git a/test/testfiles/jpp-test_config_2105.jsonp b/test/testfiles/jpp-test_config_2105.jsonp index a436b8b..7506511 100644 --- a/test/testfiles/jpp-test_config_2105.jsonp +++ b/test/testfiles/jpp-test_config_2105.jsonp @@ -22,12 +22,12 @@ "dict" : {"kA" : "vA", "kB" : "vB"}, "key_list" : <>, // - "value1" : <<(${A}[0] if True else ${B.1) + 1>>, - "code1" : (${A}[0] if True else ${B.1) + 1, - "value1b" : <<(${code04}) + 4>>, - // + // "value1" : <<(${A}[0] if True else ${B.1) + 1>> + // "code1" : (${A}[0] if True else ${B.1) + 1, + // "value1b" : <<(${code04}) + 4>>, + // // "C" : "C", "D" : "D", - "value2" : <<${C} + ${D}>>, - "value3" : <<"${C}" + "${D}">> + "value2" : <<${C} + ${D}>> + // "value3" : <<"${C}" + "${D}">> } diff --git a/test/testfiles/jpp-test_config_2154).jsonp b/test/testfiles/jpp-test_config_2154.jsonp similarity index 100% rename from test/testfiles/jpp-test_config_2154).jsonp rename to test/testfiles/jpp-test_config_2154.jsonp From 87d6e8353cd7f837bb982e5607e953173f2cc586 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Wed, 13 Aug 2025 15:50:44 +0200 Subject: [PATCH 11/13] Extensions of selftest and documentation --- JsonPreprocessor/JsonPreprocessor.pdf | Bin 357049 -> 359431 bytes .../additional_docs/The JSONP format.tex | 53 ++++++++++- test/component_test.py | 4 +- test/testconfig/TestConfig.py | 30 +++++- test/testfiles/jpp-test_config_0006.jsonp | 62 ++++++++++++ test/testfiles/jpp-test_config_2108.jsonp | 19 ++++ test/testtools/GenSnippetsJPP.py | 89 ++++++++++++++++-- 7 files changed, 245 insertions(+), 12 deletions(-) create mode 100644 test/testfiles/jpp-test_config_0006.jsonp create mode 100644 test/testfiles/jpp-test_config_2108.jsonp diff --git a/JsonPreprocessor/JsonPreprocessor.pdf b/JsonPreprocessor/JsonPreprocessor.pdf index a8c5fa42f036e6e4918828ed5579078558b32cf4..761c1d7fd5b0fb02948cae20e98dc8e0db5311d4 100644 GIT binary patch delta 61265 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ξ&r#j|68yxBg3nhJ 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 diff --git a/packagedoc/additional_docs/The JSONP format.tex b/packagedoc/additional_docs/The JSONP format.tex index 84a0704..a7f838d 100644 --- a/packagedoc/additional_docs/The JSONP format.tex +++ b/packagedoc/additional_docs/The JSONP format.tex @@ -1408,19 +1408,68 @@ \section{Python inline code} <\textless{}\textless{}><(\emph{Python expression})><\textgreater{}\textgreater{}> \end{pythoncode} +\vspace{2ex} + +\textbf{Limitations} + +The Python inline code syntax cannot be used within strings. The following code is invalid: + +\begin{pythoncode} +"param" : "The value is <\textless{}\textless{}><(\emph{Python expression})><\textgreater{}\textgreater{}>" +\end{pythoncode} + The usage of Python inline code is limited to the right hand side of the colon (\emph{key values}). This feature cannot be used to create key names. -The Python inline code syntax cannot be used within strings: +Python inline code cannot be used immediately to select list elements or dictionary keys that shall be overwritten. The following code is invalid: \begin{pythoncode} -"param" : "The value is <\textless{}\textless{}><(\emph{Python expression})><\textgreater{}\textgreater{}>" +"param" : [1,2,3], +${param}[<\textless{}\textless{}>0 if True else 1<\textgreater{}\textgreater{}>] : 4 +\end{pythoncode} + +This is a possible workaround: + +\begin{pythoncode} +"param" : [1,2,3], +"index" : <\textless{}\textless{}>0 if True else 1<\textgreater{}\textgreater{}>, +${param}[${index}] : 4 \end{pythoncode} +% TODO when supported by JsonPreprocessor: +% Python inline code can only be used to return values of data types supported by the JSON format. The following Python inline code returns a \pcode{datetime} object +% and therefore is invalid: +% \begin{pythoncode} +% "now" : <\textless{}\textless{}>from datetime import datetime; now = datetime.now()<\textgreater{}\textgreater{}> +% \end{pythoncode} + +\vspace{2ex} + +\textbf{Further examples} + +\textit{Create a list of dictionary keys:} + +\begin{pythoncode} +"dict" : {"kA" : "vA", "kB" : "vB"}, +"key_list" : <\textless{}\textless{}>list(${dict}.keys())<\textgreater{}\textgreater{}> +\end{pythoncode} + +\textit{Define an import path:} + +\begin{pythoncode} +"path_1" : "./file_1.jsonp", +"path_2" : "./file_2.jsonp" +// +"[import]" : <\textless{}\textless{}>${path_1} if True else ${path_2}<\textgreater{}\textgreater{}> +\end{pythoncode} +% TODO when supported by JsonPreprocessor: + % // Python inline code with import of an additional module + % "element" : <> + % C:\workplace\ROBFW\components\python-jsonpreprocessor\test\testfiles\jpp-test_config_2108.jsonp % -------------------------------------------------------------------------------------------------------------- diff --git a/test/component_test.py b/test/component_test.py index fdc6646..a1903a7 100644 --- a/test/component_test.py +++ b/test/component_test.py @@ -22,8 +22,8 @@ # # -------------------------------------------------------------------------------------------------------------- # -VERSION = "0.65.0" -VERSION_DATE = "11.08.2025" +VERSION = "0.66.0" +VERSION_DATE = "13.08.2025" # # -------------------------------------------------------------------------------------------------------------- #TM*** diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index 0445205..969fcfc 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -22,7 +22,7 @@ # # -------------------------------------------------------------------------------------------------------------- # -# 11.08.2025 +# 13.08.2025 # # !!! Temporarily tests are deactivated by the following line commented out: # # # listofdictUsecases.append(dictUsecase) @@ -556,6 +556,20 @@ listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_0006" +dictUsecase['DESCRIPTION'] = "JSON file with Python data types used as key name" +dictUsecase['EXPECTATION'] = "JsonPreprocessor accepts all key names and returns values" +dictUsecase['SECTION'] = "DATA_TYPES" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_0006.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = None # to be defined +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} dictUsecase['TESTID'] = "JPP_0100" @@ -4603,6 +4617,20 @@ listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2108" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with import of an additional module" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = None +dictUsecase['COMMENT'] = None +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2108.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = None # to be defined +# # # listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} dictUsecase['TESTID'] = "JPP_2150" diff --git a/test/testfiles/jpp-test_config_0006.jsonp b/test/testfiles/jpp-test_config_0006.jsonp new file mode 100644 index 0000000..4e5b283 --- /dev/null +++ b/test/testfiles/jpp-test_config_0006.jsonp @@ -0,0 +1,62 @@ +// Copyright 2020-2024 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python data types used as key name + + "int" : [1,2], + ${int}[0] : 3, + + "float" : {"A" : 1, "B" : 2}, + ${float}['A'] : 3, + + "complex" : [1,2], + ${complex}[0] : 3, + + "bool" : {"A" : 1, "B" : 2}, + ${bool}['A'] : 3, + + "str" : [1,2], + ${str}[0] : 3, + + "list" : {"A" : 1, "B" : 2}, + ${list}['A'] : 3, + + "tuple" : [1,2], + ${tuple}[0] : 3, + + "set" : {"A" : 1, "B" : 2}, + ${set}['A'] : 3, + + "frozenset" : [1,2], + ${frozenset}[0] : 3, + + "dict" : {"A" : 1, "B" : 2}, + ${dict}['A'] : 3, + + "NoneType" : [1,2], + ${NoneType}[0] : 3, + + "None" : {"A" : 1, "B" : 2}, + ${None}['A'] : 3, + + "True" : [1,2], + ${True}[0] : 3, + + "False" : {"A" : 1, "B" : 2}, + ${False}['A'] : 3, + + "DotDict" : [1,2], + ${DotDict}[0] : 3 +} diff --git a/test/testfiles/jpp-test_config_2108.jsonp b/test/testfiles/jpp-test_config_2108.jsonp new file mode 100644 index 0000000..bc765e6 --- /dev/null +++ b/test/testfiles/jpp-test_config_2108.jsonp @@ -0,0 +1,19 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//************************************************************************** +{ + // Python inline code with import of an additional module + // + "element" : <> +} diff --git a/test/testtools/GenSnippetsJPP.py b/test/testtools/GenSnippetsJPP.py index 0288f9e..ad4ad75 100644 --- a/test/testtools/GenSnippetsJPP.py +++ b/test/testtools/GenSnippetsJPP.py @@ -22,8 +22,8 @@ # # ************************************************************************************************************** # -VERSION = "0.45.0" -VERSION_DATE = "07.08.2025" +VERSION = "0.47.0" +VERSION_DATE = "13.08.2025" # # ************************************************************************************************************** @@ -3456,6 +3456,11 @@ def GetSeveralParticularSnippets(self): # -- TODO: GOODCASE (snippets to be taken over from selftest) + listCodeSnippets.append("""{ + // Python inline code with import of an additional module + "element" : <> +} +""") # -- BADCASE (from official selftest) @@ -4426,7 +4431,7 @@ def GetNotExistingParams(self): # -------------------------------------------------------------------------------------------------------------- - def GetKeywords(self): + def GetPythonKeywordsAtSeveralPositions(self): """Python keywords at several positions within a complex data structure """ @@ -4497,7 +4502,74 @@ def GetKeywords(self): return sHeadline, listCodeSnippets - # eof def GetKeywords(self): + # eof def GetPythonKeywordsAtSeveralPositions(self): + + # -------------------------------------------------------------------------------------------------------------- + + def GetPythonKeywordsUsedAsKeyName(self): + + """Python keywords used as key name + """ + + sHeadline = "Python keywords used as key name" + + # data structure + sDataStructurePattern = """ "##01##" : [1,2], + ${##01##}[0] : 3, + // + "##02##" : {"A" : 1, "B" : 2}, + ${##02##}['A'] : 3""" + + sCodeSnippetPattern = """{ +####DATASTRUCTURE#### +} +""" + + # We have a list of expressions and we have a list of placeholders like used in sDataStructure. + # The followig code runs in a nested loop: Every expression is placed at every placeholder position. Only one single + # expression and placeholder per iteration. All remaining placeholders in current iteration are replaced by elements + # from a list of filler expressions (simple values) that are only used to complete the code snippet, + # but are not in focus. + + listExpressions = ["int", "float", "complex", "bool", "str", "list", "tuple", "set", "frozenset", "dict", "NoneType", + "None", "True", "False", "DotDict", + "dev", "class", "self", "return", "import", "[import]"] + + nNrOfPlaceholders = 2 + + listPlaceholders = [] + listFillers = [] + for number in range(1, nNrOfPlaceholders+1): + value1 = str(number).rjust(2, "0") + listPlaceholders.append(f"##{value1}##") + value2 = str(number).rjust(3, "0") + listFillers.append(f"key_{value2}") + + listPositions = listPlaceholders[:] # to support a nested iterations of the same list (better readibility of code because of different names) + + # -- put all things together + listCodeSnippets = [] + for sExpression in listExpressions: + for sPosition in listPositions: + sDataStructure = sDataStructurePattern # init a new data structure from data structure pattern + sCodeSnippet = sCodeSnippetPattern # init a new code snippet from code snippet pattern + oFiller = CListElements(listFillers) # init a new filler object (= content for remaining placeholders) + for sPlaceholder in listPlaceholders: + sFiller = oFiller.GetElement() + if sPosition == sPlaceholder: + sDataStructure = sDataStructure.replace(sPlaceholder, sExpression) + else: + # sDataStructure = sDataStructure.replace(sPlaceholder, f"\"{sFiller}\"") + sDataStructure = sDataStructure.replace(sPlaceholder, f"{sFiller}") + # eof for sPlaceholder in listPlaceholders: + sCodeSnippet = sCodeSnippet.replace("####DATASTRUCTURE####", sDataStructure) + listCodeSnippets.append(sCodeSnippet) + # eof for sPosition in listPositions: + # eof for sExpression in listExpressions: + + return sHeadline, listCodeSnippets + + # eof def GetPythonKeywordsUsedAsKeyName(self): # -------------------------------------------------------------------------------------------------------------- @@ -5216,7 +5288,7 @@ def GetInternalTokenStrings(self): # from a list of filler expressions (simple letters) that are only used to complete the code snippet, but are not in focus. listExpressions = ["__handleColonsInLine__","__handleDuplicatedKey__00","__handleDuplicatedKey__","__ConvertParameterToString__", - "__IndexOfList__","__SlicingIndex__","__StringValueMake-up__"] + "__IndexOfList__","__SlicingIndex__","__StringValueMake-up__","JPavoidDataType_"] listPlaceholders = ["*01*",] @@ -5304,7 +5376,7 @@ def GetInlineCode(self): # from a list of filler expressions (simple values) that are only used to complete the code snippet, # but are not in focus. - listExpressions = ["<<${EvT} if ${choice} else ${EvF}>>",] + listExpressions = ["<<${EvT} if ${choice} else ${EvF}>>", "${<<[3, 4] if True else [5, 6]>>}"] # listExpressions = ["<<\"${EvT}\" if ${choice} else \"${EvF}\">>",] nNrOfPlaceholders = 13 @@ -5472,7 +5544,10 @@ def GetInlineCode(self): sHeadline, listCodeSnippets = oSnippets.GetNotExistingParams() bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") -sHeadline, listCodeSnippets = oSnippets.GetKeywords() +sHeadline, listCodeSnippets = oSnippets.GetPythonKeywordsAtSeveralPositions() +bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") + +sHeadline, listCodeSnippets = oSnippets.GetPythonKeywordsUsedAsKeyName() bSuccess, sResult = oExecutor.Execute(sHeadline, listCodeSnippets, "JPP") sHeadline, listCodeSnippets = oSnippets.GetMissingBrackets_1() From b7fa49f1368607c1a9b960314a29aedd9f15f3df Mon Sep 17 00:00:00 2001 From: "Mai Dinh Nam Son (MS/EMC51-XC)" Date: Thu, 14 Aug 2025 13:09:21 +0700 Subject: [PATCH 12/13] Tiny typo update in an error message log --- JsonPreprocessor/CJsonPreprocessor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JsonPreprocessor/CJsonPreprocessor.py b/JsonPreprocessor/CJsonPreprocessor.py index ffec6f5..fec07d9 100644 --- a/JsonPreprocessor/CJsonPreprocessor.py +++ b/JsonPreprocessor/CJsonPreprocessor.py @@ -1890,7 +1890,7 @@ def __pyInlineCodeSyntaxCheck(self, sInput): self.__reset() raise Exception(errorMsg) elif regex.search(rf':\s*".*{self.pyCallPattern}[^"]*"', sInput): - errorMsg = f"Python inline code must not be embededed part of a string! Please check the line {sInput}" + errorMsg = f"Python inline code must not be embedded part of a string! Please check the line {sInput}" self.__reset() raise Exception(errorMsg) else: From 99bfd8b89c4e21780158809a92894faccad45506 Mon Sep 17 00:00:00 2001 From: "Mai Dinh Nam Son (MS/EMC51-XC)" Date: Thu, 14 Aug 2025 13:52:30 +0700 Subject: [PATCH 13/13] Fixed tiny typo in sefltest --- test/testfiles/jpp-test_config_2167.jsonp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testfiles/jpp-test_config_2167.jsonp b/test/testfiles/jpp-test_config_2167.jsonp index 2adaa36..0d96620 100644 --- a/test/testfiles/jpp-test_config_2167.jsonp +++ b/test/testfiles/jpp-test_config_2167.jsonp @@ -15,6 +15,6 @@ { // Python inline code as dictionary key at left hand side of the colon // - "A" : {"B" : 1, "C" . 2}, + "A" : {"B" : 1, "C" : 2}, ${A}[<<"B" if True else "C">>] : 3 }

g`lPG7Qz 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 diff --git a/JsonPreprocessor/version.py b/JsonPreprocessor/version.py index 05969b4..760e491 100644 --- a/JsonPreprocessor/version.py +++ b/JsonPreprocessor/version.py @@ -18,5 +18,5 @@ # # Version and date of JsonPreprocessor # -VERSION = "0.9.3" -VERSION_DATE = "3.7.2025" +VERSION = "0.10.0" +VERSION_DATE = "25.07.2025" diff --git a/config/robotframework_aio/release_items_JsonPreprocessor.json b/config/robotframework_aio/release_items_JsonPreprocessor.json index a1fbc4f..5b3b5b5 100644 --- a/config/robotframework_aio/release_items_JsonPreprocessor.json +++ b/config/robotframework_aio/release_items_JsonPreprocessor.json @@ -1,6 +1,6 @@ # ************************************************************************************************************** # -# Copyright 2020-2023 Robert Bosch GmbH +# Copyright 2020-2025 Robert Bosch GmbH # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -202,6 +202,23 @@ This feature is an option. If the user does not define the parameter ``keyPatter * Improved and aligned error messages * Added and updated the self test according to the changed features " - ] + ], + "0.14.2.;0.15.0." : [ +" +**Python inline code** + +**JsonPreprocessor** enables to use Python inline code inside JSONP files. + +*Example* + +| ``\"A\" : [1,2,3],`` +| ``\"B\" : [4,5,6],`` +| ``\"C\" : <>`` + +*Result* + +| ``DotDict({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [1, 2, 3, 4, 5, 6]})`` +" + ] } } diff --git a/packagedoc/additional_docs/History.tex b/packagedoc/additional_docs/History.tex index cfb9b9e..6c50ac9 100644 --- a/packagedoc/additional_docs/History.tex +++ b/packagedoc/additional_docs/History.tex @@ -112,4 +112,7 @@ \historychange{- Allowed unicode digits to get a list element\newline - Updated error messages} +\historyversiondate{0.10.0}{07/2025} +\historychange{Added possibility to use Python inline code inside JSONP files} + \end{packagehistory} diff --git a/packagedoc/additional_docs/The JSONP format.tex b/packagedoc/additional_docs/The JSONP format.tex index 70e8748..09670c8 100644 --- a/packagedoc/additional_docs/The JSONP format.tex +++ b/packagedoc/additional_docs/The JSONP format.tex @@ -1188,8 +1188,6 @@ \section{Dynamic key names} A substitution in key names is not allowed! Please update the key name "${strval}_2" \end{pythonlog} - - % -------------------------------------------------------------------------------------------------------------- \newpage @@ -1369,12 +1367,49 @@ \section{Implicit creation of dictionaries}\label{implicit-creation} } \end{pythoncode} +% -------------------------------------------------------------------------------------------------------------- + +\newpage + +\section{Python inline code} + +It might be required to have access to Python builtin functions, e.g. for combining multiple lists into a single list. +In pure Python this can be realized in the following way: + +\begin{pythoncode} +A = [1,2,3] +B = [4,5,6] +C = A + B +print(C) +\end{pythoncode} + +With result: + +\begin{pythonlog} +[1, 2, 3, 4, 5, 6] +\end{pythonlog} + +In JSONP files, the implementation looks as follows: +\begin{pythoncode} +"A" : [1,2,3], +"B" : [4,5,6], +"C" : <\textless{}\textless{}>eval ${A} + ${B}<\textgreater{}\textgreater{}> +\end{pythoncode} +The expression \pcode{$\{A\} + $\{B\}} is handled as Python inline code. It is possible to use dollar operator expressions +inside Python inline code to access any other parameter defined in JSONP files. +\vspace{2ex} +The syntax of Python inline code is: +\begin{pythoncode} +<\textless{}\textless{}>eval <(\emph{Python expression})><\textgreater{}\textgreater{}> +\end{pythoncode} +The usage of Python inline code is limited to the right hand side of the colon (\emph{key values}). +This feature cannot be used to create key names. % -------------------------------------------------------------------------------------------------------------- From 049e537b9273783e3b5ec66a114fab4b17f85fb3 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Tue, 5 Aug 2025 16:46:56 +0200 Subject: [PATCH 03/13] GOODCASE tests of section INLINE_CODE reworked (and already adapted to new syntax without 'eval' keyword) --- JsonPreprocessor/JsonPreprocessor.pdf | Bin 356711 -> 357049 bytes .../release_items_JsonPreprocessor.json | 2 +- .../additional_docs/The JSONP format.tex | 15 +- test/component_test.py | 4 +- test/testconfig/TestConfig.py | 149 +++++++++++++----- test/testfiles/jpp-test_config_2100.jsonp | 40 +---- test/testfiles/jpp-test_config_2101.jsonp | 23 +++ test/testfiles/jpp-test_config_2102.jsonp | 26 +++ test/testfiles/jpp-test_config_2103.jsonp | 27 ++++ test/testfiles/jpp-test_config_2104.jsonp | 28 ++++ test/testfiles/jpp-test_config_2105.jsonp | 34 ++++ test/testfiles/jpp-test_config_2106.jsonp | 23 +++ test/testfiles/jpp-test_config_2107.jsonp | 22 +++ 13 files changed, 319 insertions(+), 74 deletions(-) create mode 100644 test/testfiles/jpp-test_config_2101.jsonp create mode 100644 test/testfiles/jpp-test_config_2102.jsonp create mode 100644 test/testfiles/jpp-test_config_2103.jsonp create mode 100644 test/testfiles/jpp-test_config_2104.jsonp create mode 100644 test/testfiles/jpp-test_config_2105.jsonp create mode 100644 test/testfiles/jpp-test_config_2106.jsonp create mode 100644 test/testfiles/jpp-test_config_2107.jsonp diff --git a/JsonPreprocessor/JsonPreprocessor.pdf b/JsonPreprocessor/JsonPreprocessor.pdf index b3c1f23ec618ac1675bb5d5e44a776958f7010c6..a8c5fa42f036e6e4918828ed5579078558b32cf4 100644 GIT binary patch delta 38829 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 Ay8r+H delta 38458 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