Add missing git attributes

Change-Id: I0fd68ed33da702a02d183fc31edd1e0441b3e009
Signed-off-by: Kevin Peng <kevin.peng@arm.com>
diff --git a/irq_test_tool/irq_test_executor.py b/irq_test_tool/irq_test_executor.py
index d98096f..86ddf8f 100644
--- a/irq_test_tool/irq_test_executor.py
+++ b/irq_test_tool/irq_test_executor.py
@@ -1,180 +1,180 @@
-#-------------------------------------------------------------------------------

-# Copyright (c) 2020, Arm Limited. All rights reserved.

-#

-# SPDX-License-Identifier: BSD-3-Clause

-#

-#-------------------------------------------------------------------------------

-

-from irq_test_abstract_debugger import Location

-import logging

-import json

-

-def create_locations_from_file(breakpoints_file_name):

-    """Internal function to create Location objects of a breakpoints data file

-    """

-    # Read in the points to break at

-    logging.info("Reading breakpoints file '%s'", breakpoints_file_name)

-    breakpoints_file = open(breakpoints_file_name)

-    breakpoints = json.load(breakpoints_file)

-    logging.debug("breakpoints: %s", str(breakpoints))

-

-    #TODO: go over the breakpoints and try to set them as a sanity check

-

-    locations = {}

-

-    for loc_name in breakpoints['breakpoints']:

-        bkpt = breakpoints['breakpoints'][loc_name]

-        offset = 0

-

-        if 'file' in bkpt:

-            filename = bkpt['file']

-        else:

-            filename = None

-

-        if 'symbol' in bkpt:

-            symbol = bkpt['symbol']

-            if 'offset' in bkpt:

-                offset = bkpt['offset']

-            else:

-                offset = 0

-        else:

-            if 'offset' in bkpt:

-                logging.error("In location %s offset is included without a"

-                              " symbol")

-                exit(2)

-            symbol = None

-

-        if 'line' in bkpt:

-            line = bkpt['line']

-            try:

-                int(line)

-            except ValueError:

-                logging.error("In location %s line is not a valid int",

-                              loc_name)

-                exit(2)

-        else:

-            line = None

-

-        if symbol:

-            if line or filename:

-                logging.error("In location %s nor filename nor line should"

-                              "be present when symbol is present", loc_name)

-                exit(2)

-

-        if (not line and filename) or (line and not filename):

-            logging.error("In location %s line and filename have to be "

-                          "present the same time", loc_name)

-            exit(2)

-

-        if (not symbol) and (not filename):

-            logging.error("In location %s no symbol nor code location is "

-                          "specified at all", loc_name)

-            exit(2)

-

-        loc = Location(symbol=symbol, offset=offset, filename=filename, line=line)

-

-        locations[loc_name] = loc

-

-    return locations

-

-class TestExecutor(object):

-    """ This class implements the test logic.

-

-    It reads the input files, and executes the steps of the testcase. It receives an

-    AbstractDebugger instance on creation. The test execution is implemented in the

-    execute function.

-    """

-

-    def __init__(self, debugger):

-        self.debugger = debugger

-

-    def execute(self, irqs_filename, breakpoints_filename, testcase_filename):

-        """ Execute a testcase

-

-        Execute the testcase defined in 'testcase_filename', using the IRQs and

-        breakpoints defined in irqs_filename and breakpoints_filename.

-        """

-        # Read in the list of IRQs

-        logging.info("Reading irqs file '%s'", irqs_filename)

-        irqs_file = open(irqs_filename)

-        irqs = json.load(irqs_file)

-        logging.debug("irqs: %s", str(irqs))

-

-        # read in the test sequence

-        logging.info("Reading test sequence file '%s'", testcase_filename)

-        test_file = open(testcase_filename)

-        test = json.load(test_file)

-        logging.debug("testcase: %s", str(test))

-

-        # TODO: crosscheck the tests file against the breakpoints and the irq's

-        #       available

-

-        locations = create_locations_from_file(breakpoints_filename)

-

-        self.debugger.clear_breakpoints()

-

-        # execute the test

-        steps = test['steps']

-        for i, step in enumerate(steps):

-

-            logging.info("---- Step %d ----", i)

-

-            continue_execution = False

-

-            if 'wait_for' in step:

-                bp_name = step['wait_for']

-                self.debugger.set_breakpoint(bp_name, locations[bp_name])

-                next_to_break_at = bp_name

-                continue_execution = True

-            elif 'expect' in step:

-                bp_name = step['expect']

-                self.debugger.set_breakpoint(bp_name, locations[bp_name])

-                next_to_break_at = bp_name

-

-                # Find the next wait_for in the test sequence, and set a

-                # breakpoint for that as well. So that it can be detected if an

-                # expected breakpoint is missed.

-

-                wait_for_found = False

-                ii = i+1

-

-                while ii < len(steps) and not wait_for_found:

-                    next_step = steps[ii]

-                    if 'wait_for' in next_step:

-                        next_bp_name = next_step['wait_for']

-                        self.debugger.set_breakpoint(next_bp_name,

-                                                     locations[next_bp_name])

-                        wait_for_found = True

-                    ii += 1

-

-                continue_execution = True

-

-

-            if 'trigger' in step:

-                irqs_dict = irqs['irqs']

-                irq = irqs_dict[step['trigger']]

-                line_nu = irq['line_num']

-                self.debugger.trigger_interrupt(line_nu)

-

-

-            if continue_execution:

-                self.debugger.continue_execution()

-

-                triggered_breakpoint = self.debugger.get_triggered_breakpoint()

-

-                if triggered_breakpoint is None:

-                    logging.error("No breakpoint was hit?????")

-                    exit(0)

-

-                if triggered_breakpoint != next_to_break_at:

-                    logging.error("execution stopped at '%s' instead of '%s'",

-                                triggered_breakpoint, next_to_break_at)

-                    exit(0)

-            else:

-                logging.error("execution stopped as no breakpoint is set")

-                exit(1)

-

-            self.debugger.clear_breakpoints()

-

-        logging.info("All the steps in the test file are executed successfully"

-                     " with the expected result.")

+#-------------------------------------------------------------------------------
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+from irq_test_abstract_debugger import Location
+import logging
+import json
+
+def create_locations_from_file(breakpoints_file_name):
+    """Internal function to create Location objects of a breakpoints data file
+    """
+    # Read in the points to break at
+    logging.info("Reading breakpoints file '%s'", breakpoints_file_name)
+    breakpoints_file = open(breakpoints_file_name)
+    breakpoints = json.load(breakpoints_file)
+    logging.debug("breakpoints: %s", str(breakpoints))
+
+    #TODO: go over the breakpoints and try to set them as a sanity check
+
+    locations = {}
+
+    for loc_name in breakpoints['breakpoints']:
+        bkpt = breakpoints['breakpoints'][loc_name]
+        offset = 0
+
+        if 'file' in bkpt:
+            filename = bkpt['file']
+        else:
+            filename = None
+
+        if 'symbol' in bkpt:
+            symbol = bkpt['symbol']
+            if 'offset' in bkpt:
+                offset = bkpt['offset']
+            else:
+                offset = 0
+        else:
+            if 'offset' in bkpt:
+                logging.error("In location %s offset is included without a"
+                              " symbol")
+                exit(2)
+            symbol = None
+
+        if 'line' in bkpt:
+            line = bkpt['line']
+            try:
+                int(line)
+            except ValueError:
+                logging.error("In location %s line is not a valid int",
+                              loc_name)
+                exit(2)
+        else:
+            line = None
+
+        if symbol:
+            if line or filename:
+                logging.error("In location %s nor filename nor line should"
+                              "be present when symbol is present", loc_name)
+                exit(2)
+
+        if (not line and filename) or (line and not filename):
+            logging.error("In location %s line and filename have to be "
+                          "present the same time", loc_name)
+            exit(2)
+
+        if (not symbol) and (not filename):
+            logging.error("In location %s no symbol nor code location is "
+                          "specified at all", loc_name)
+            exit(2)
+
+        loc = Location(symbol=symbol, offset=offset, filename=filename, line=line)
+
+        locations[loc_name] = loc
+
+    return locations
+
+class TestExecutor(object):
+    """ This class implements the test logic.
+
+    It reads the input files, and executes the steps of the testcase. It receives an
+    AbstractDebugger instance on creation. The test execution is implemented in the
+    execute function.
+    """
+
+    def __init__(self, debugger):
+        self.debugger = debugger
+
+    def execute(self, irqs_filename, breakpoints_filename, testcase_filename):
+        """ Execute a testcase
+
+        Execute the testcase defined in 'testcase_filename', using the IRQs and
+        breakpoints defined in irqs_filename and breakpoints_filename.
+        """
+        # Read in the list of IRQs
+        logging.info("Reading irqs file '%s'", irqs_filename)
+        irqs_file = open(irqs_filename)
+        irqs = json.load(irqs_file)
+        logging.debug("irqs: %s", str(irqs))
+
+        # read in the test sequence
+        logging.info("Reading test sequence file '%s'", testcase_filename)
+        test_file = open(testcase_filename)
+        test = json.load(test_file)
+        logging.debug("testcase: %s", str(test))
+
+        # TODO: crosscheck the tests file against the breakpoints and the irq's
+        #       available
+
+        locations = create_locations_from_file(breakpoints_filename)
+
+        self.debugger.clear_breakpoints()
+
+        # execute the test
+        steps = test['steps']
+        for i, step in enumerate(steps):
+
+            logging.info("---- Step %d ----", i)
+
+            continue_execution = False
+
+            if 'wait_for' in step:
+                bp_name = step['wait_for']
+                self.debugger.set_breakpoint(bp_name, locations[bp_name])
+                next_to_break_at = bp_name
+                continue_execution = True
+            elif 'expect' in step:
+                bp_name = step['expect']
+                self.debugger.set_breakpoint(bp_name, locations[bp_name])
+                next_to_break_at = bp_name
+
+                # Find the next wait_for in the test sequence, and set a
+                # breakpoint for that as well. So that it can be detected if an
+                # expected breakpoint is missed.
+
+                wait_for_found = False
+                ii = i+1
+
+                while ii < len(steps) and not wait_for_found:
+                    next_step = steps[ii]
+                    if 'wait_for' in next_step:
+                        next_bp_name = next_step['wait_for']
+                        self.debugger.set_breakpoint(next_bp_name,
+                                                     locations[next_bp_name])
+                        wait_for_found = True
+                    ii += 1
+
+                continue_execution = True
+
+
+            if 'trigger' in step:
+                irqs_dict = irqs['irqs']
+                irq = irqs_dict[step['trigger']]
+                line_nu = irq['line_num']
+                self.debugger.trigger_interrupt(line_nu)
+
+
+            if continue_execution:
+                self.debugger.continue_execution()
+
+                triggered_breakpoint = self.debugger.get_triggered_breakpoint()
+
+                if triggered_breakpoint is None:
+                    logging.error("No breakpoint was hit?????")
+                    exit(0)
+
+                if triggered_breakpoint != next_to_break_at:
+                    logging.error("execution stopped at '%s' instead of '%s'",
+                                triggered_breakpoint, next_to_break_at)
+                    exit(0)
+            else:
+                logging.error("execution stopped as no breakpoint is set")
+                exit(1)
+
+            self.debugger.clear_breakpoints()
+
+        logging.info("All the steps in the test file are executed successfully"
+                     " with the expected result.")