feat(tools): add ability to skip tests for AArch32

Adds ability to skip tests based on build architecture.
Testsuite name needs to be added in
tftf/tests/aarch32_tests_to_skip.txt for aarch32

Signed-off-by: Shruti Gupta <shruti.gupta@arm.com>
Change-Id: I04a83b7e794534dd60bee41e31d24b994a37ce09
diff --git a/Makefile b/Makefile
index 13aeef9..5c9645b 100644
--- a/Makefile
+++ b/Makefile
@@ -509,12 +509,17 @@
 
 endef
 
+ifeq (${ARCH},aarch32)
+        ARCH_TESTS_SKIP_LIST    := tftf/tests/aarch32_tests_to_skip.txt
+endif
+
 $(AUTOGEN_DIR):
 	$(Q)mkdir -p "$@"
 
-$(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h: $(AUTOGEN_DIR) ${TESTS_FILE} ${PLAT_TESTS_SKIP_LIST}
+$(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h: $(AUTOGEN_DIR) ${TESTS_FILE} ${PLAT_TESTS_SKIP_LIST} $(ARCH_TESTS_SKIP_LIST)
 	@echo "  AUTOGEN $@"
-	tools/generate_test_list/generate_test_list.pl $(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h  ${TESTS_FILE} $(PLAT_TESTS_SKIP_LIST)
+	tools/generate_test_list/generate_test_list.pl $(AUTOGEN_DIR)/tests_list.c \
+		$(AUTOGEN_DIR)/tests_list.h  ${TESTS_FILE} $(PLAT_TESTS_SKIP_LIST) $(ARCH_TESTS_SKIP_LIST)
 ifeq ($(SMC_FUZZING), 1)
 	$(Q)mkdir -p  ${BUILD_PLAT}/smcf
 	dtc ${SMC_FUZZ_DTS} >> ${BUILD_PLAT}/smcf/dtb
diff --git a/tftf/tests/aarch32_tests_to_skip.txt b/tftf/tests/aarch32_tests_to_skip.txt
new file mode 100644
index 0000000..cdc298d
--- /dev/null
+++ b/tftf/tests/aarch32_tests_to_skip.txt
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+Realm payload at EL1
+
diff --git a/tools/generate_test_list/generate_test_list.pl b/tools/generate_test_list/generate_test_list.pl
index 702a983..5d6d4b7 100755
--- a/tools/generate_test_list/generate_test_list.pl
+++ b/tools/generate_test_list/generate_test_list.pl
@@ -5,7 +5,6 @@
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
-
 #
 # Arg0: Name of the C file to generate.
 # Arg1: Name of the header file to generate.
@@ -17,6 +16,7 @@
 my $TESTLIST_HDR_FILENAME = $ARGV[1];
 my $XML_TEST_FILENAME     = $ARGV[2];
 my $SKIPPED_LIST_FILENAME = $ARGV[3];
+my $SKIPPED_LIST_FILENAME2 = $ARGV[4];
 
 use strict;
 use warnings;
@@ -47,7 +47,6 @@
 my @all_testcases   = $root->findnodes("//testcase");
 my @all_testsuites  = $root->findnodes("//testsuite");
 
-
 # Check the validity of the XML file:
 # - A testsuite name must be unique.
 # - A testsuite name must not contain a '/' character.
@@ -80,52 +79,56 @@
 # Get the list of tests to skip.
 # For each test to skip, find it in the XML tree and remove its node.
 #
-if (($SKIPPED_LIST_FILENAME) && (open SKIPPED_FILE, "<", $SKIPPED_LIST_FILENAME)) {
-  my @lines = <SKIPPED_FILE>;
-  close $SKIPPED_LIST_FILENAME;
+sub skip_test {
+  my $file = $_[0];
+  if (($file) && (open SKIPPED_FILE, "<", $file)) {
+    my @lines = <SKIPPED_FILE>;
 
-  # Remove the newlines from the end of each line.
-  chomp @lines;
+    # Remove the newlines from the end of each line.
+    chomp @lines;
 
-  my $line_no = 0;
-  my $testsuite_name;
-  my $testcase_name;
-  my $index = 0;
+    my $line_no = 0;
+    my $testsuite_name;
+    my $testcase_name;
+    my $index = 0;
 
-  for my $line (@lines) {
-    ++$line_no;
+    for my $line (@lines) {
+      ++$line_no;
 
-    # Skip empty lines.
-    if ($line =~ /^ *$/) { next; }
-    # Skip comments.
-    if ($line =~ /^#/) { next; }
+      # Skip empty lines.
+      if ($line =~ /^ *$/) { next; }
+      # Skip comments.
+      if ($line =~ /^#/) { next; }
 
-    ($testsuite_name, $testcase_name) = split('/', $line);
+      ($testsuite_name, $testcase_name) = split('/', $line);
 
-    my @testsuites = $root->findnodes("//testsuite[\@name=\"$testsuite_name\"]");
-    if (!@testsuites) {
-      print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test suite '$testsuite_name' doesn't exist or has already been deleted.\n";
-      next;
+      my @testsuites = $root->findnodes("//testsuite[\@name=\"$testsuite_name\"]");
+      if (!@testsuites) {
+        print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test suite '$testsuite_name' doesn't exist or has already been deleted.\n";
+        next;
+      }
+
+      if (!defined $testcase_name) {
+        print "INFO: Testsuite '$testsuite_name' will be skipped.\n";
+        $testsuites[0]->unbindNode();
+        next;
+      }
+
+      my @testcases = $testsuites[0]->findnodes("testcase[\@name=\"$testcase_name\"]");
+      if (!@testcases) {
+        print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test case '$testsuite_name/$testcase_name' doesn't exist or has already been deleted.\n";
+        next;
+      }
+
+      print "INFO: Testcase '$testsuite_name/$testcase_name' will be skipped.\n";
+      $testcases[0]->unbindNode();
     }
-
-    if (!defined $testcase_name) {
-      print "INFO: Testsuite '$testsuite_name' will be skipped.\n";
-      $testsuites[0]->unbindNode();
-      next;
-    }
-
-    my @testcases = $testsuites[0]->findnodes("testcase[\@name=\"$testcase_name\"]");
-    if (!@testcases) {
-      print "WARNING: $SKIPPED_LIST_FILENAME:$line_no: Test case '$testsuite_name/$testcase_name' doesn't exist or has already been deleted.\n";
-      next;
-    }
-
-    print "INFO: Testcase '$testsuite_name/$testcase_name' will be skipped.\n";
-    $testcases[0]->unbindNode();
+    close (SKIPPED_FILE);
   }
 }
 
-
+skip_test($SKIPPED_LIST_FILENAME);
+skip_test($SKIPPED_LIST_FILENAME2);
 @all_testcases = $root->findnodes("//testcase");
 
 #