framework/config: fix issue with string values

Message ID 20210625130753.18155-1-ohilyard@iol.unh.edu (mailing list archive)
State Accepted
Headers
Series framework/config: fix issue with string values |

Commit Message

Owen Hilyard June 25, 2021, 1:07 p.m. UTC
  From: Owen Hilyard <ohilyard@iol.unh.edu>

String values were ran through 'eval' like everything else as part of
parsing config files. This will work the first time if there are quotes
around the value, but if the --update-expected flag is passed, it will
re-write the config file without quotes around the string value. This
then cause an error when the value is 'eval'ed again, since it will now
be evaluated as a variable.

Signed-off-by: Owen Hilyard <ohilyard@iol.unh.edu>
---
 framework/config.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
  

Comments

Tu, Lijuan July 1, 2021, 8:49 a.m. UTC | #1
> -----Original Message-----
> From: ohilyard@iol.unh.edu <ohilyard@iol.unh.edu>
> Sent: 2021年6月25日 21:08
> To: Tu, Lijuan <lijuan.tu@intel.com>
> Cc: dts@dpdk.org; Owen Hilyard <ohilyard@iol.unh.edu>
> Subject: [PATCH] framework/config: fix issue with string values
> 
> From: Owen Hilyard <ohilyard@iol.unh.edu>
> 
> String values were ran through 'eval' like everything else as part of parsing
> config files. This will work the first time if there are quotes around the value, but
> if the --update-expected flag is passed, it will re-write the config file without
> quotes around the string value. This then cause an error when the value is
> 'eval'ed again, since it will now be evaluated as a variable.
> 
> Signed-off-by: Owen Hilyard <ohilyard@iol.unh.edu>

Applied, thanks
  

Patch

diff --git a/framework/config.py b/framework/config.py
index 30604773..88ae8ea5 100644
--- a/framework/config.py
+++ b/framework/config.py
@@ -147,7 +147,10 @@  class SuiteConf(UserConf):
 
         conf = dict(case_confs)
         for key, data_string in list(conf.items()):
-            case_cfg[key] = eval(data_string)
+            try:
+                case_cfg[key] = eval(data_string)
+            except NameError:  # happens when data_string is actually a string, not an int, bool or dict
+                case_cfg[key] = data_string
 
         return case_cfg