[PATCH 3/3] oeqa/runtime/parselogs: escape special character for grep

Yi Zhao
2016-01-07T03:30:08Z

Sometimes the grep output is not correct if the log message contains
some special characters. Use re.escape to escape all non-alphanumerics
before grep

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
meta/lib/oeqa/runtime/parselogs.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/meta/lib/oeqa/runtime/parselogs.py b/meta/lib/oeqa/runtime/parselogs.py
index fc2bc38..7fc7932 100644
--- a/meta/lib/oeqa/runtime/parselogs.py
+++ b/meta/lib/oeqa/runtime/parselogs.py
@@ -1,6 +1,7 @@
import os
import unittest
import subprocess
+import re
from oeqa.oetest import oeRuntimeTest
from oeqa.utils.decorators import *

@@ -50,7 +51,7 @@ x86_common = [
qemux86_common = [
'wrong ELF class',
"fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.",
- "can't claim BAR ",
+ "can\'t claim BAR ",
] + common_errors

ignore_errors = {
@@ -221,7 +222,8 @@ class ParseLogsTest(oeRuntimeTest):
results[log.replace('target_logs/','')] = {}
rez = result.splitlines()
for xrez in rez:
- command = "grep \"\\"+str(xrez)+"\" -B "+str(lines_before)+" -A "+str(lines_after)+" "+str(log)
+ nxrez = re.escape(xrez)
+ command = "grep -E \""+str(nxrez)+"\" -B "+str(lines_before)+" -A "+str(lines_after)+" "+str(log)
try:
grep_output = subprocess.check_output(command, shell=True)
except:
--
1.7.9.5