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");
#