CoreValidation: Added batch build script for IAR examples.
diff --git a/CMSIS/Utilities/buildutils/iarcmd.py b/CMSIS/Utilities/buildutils/iarcmd.py
new file mode 100644
index 0000000..dabf58f
--- /dev/null
+++ b/CMSIS/Utilities/buildutils/iarcmd.py
@@ -0,0 +1,29 @@
+#! python
+
+from buildcmd import BuildCmd
+from string import maketrans
+from datetime import datetime
+import mmap
+
+class IarCmd(BuildCmd):
+
+  def __init__(self, project, config):
+    BuildCmd.__init__(self)
+    self._project = project
+    self._config = config
+    self._log = "iar_{0}.log".format(datetime.now().strftime("%Y%m%d%H%M%S"))
+    
+  def getCommand(self):
+    return "iarbuild.exe"
+    
+  def getArguments(self):
+    return [ self._project, "-build", self._config ]
+  
+  def isSuccess(self):
+    return self._result <= 1
+
+  def getLog(self):
+    try:
+      return open(self._log, "r")
+    except:
+      return None
diff --git a/CMSIS/Utilities/buildutils/testresult.py b/CMSIS/Utilities/buildutils/testresult.py
index 6e24d6d..98646a3 100644
--- a/CMSIS/Utilities/buildutils/testresult.py
+++ b/CMSIS/Utilities/buildutils/testresult.py
@@ -24,17 +24,28 @@
     self._extractXml(log, self._xml)
     self._xml.seek(0)
   
-    report = ElementTree.parse(self._xml).getroot()
-    summary = report[0].findall('summary')[0]
-    self._tests = summary.find('tcnt').text
-    self._executed = summary.find('exec').text
-    self._passed = summary.find('pass').text
-    self._failed = summary.find('fail').text
+    try:
+      report = ElementTree.parse(self._xml).getroot()
+      summary = report[0].findall('summary')[0]
+      self._tests = summary.find('tcnt').text
+      self._executed = summary.find('exec').text
+      self._passed = summary.find('pass').text
+      self._failed = summary.find('fail').text
+      self._avail = True
+    except ElementTree.ParseError as e:
+      self._avail = False
+      self._except = e
           
   def saveXml(self, filename):
     with open(filename, "w") as file:
       self._xml.seek(0)
       shutil.copyfileobj(self._xml, file)
     
+  def isAvailable(self):
+    return self._avail
+    
   def getSummary(self):
-    return self._tests, self._executed, self._passed, self._failed
\ No newline at end of file
+    if self._avail:
+      return self._tests, self._executed, self._passed, self._failed
+    else:
+      raise self._except
\ No newline at end of file