scripts: tests: sanitycheck: Add more testcases for Class TestSuite
test_testsuite_class.py: Added testcases for add_configurations(),
get_all_testcases(), get_toolchain() and get_platforms() functions
test_data/board_config: board root directory for all board
configurations. This is also to add the platform configurations
in a list which is used for further testing.
conftest.py: Added fixtures for all_testcases_dict (returns a
dictionary of testcases) and platforms_list (returns a list of
all platforms using add_configurations function).
Signed-off-by: Aastha Grover <aastha.grover@intel.com>
diff --git a/scripts/tests/sanitycheck/test_data/board_config/1_level/2_level/board_config_3.yaml b/scripts/tests/sanitycheck/test_data/board_config/1_level/2_level/board_config_3.yaml
new file mode 100644
index 0000000..a80ccb1
--- /dev/null
+++ b/scripts/tests/sanitycheck/test_data/board_config/1_level/2_level/board_config_3.yaml
@@ -0,0 +1,15 @@
+identifier: demo_board_3
+name: DEMO_Board_3
+type: mcu
+arch: arm_demo
+toolchain:
+ - zephyr
+ - gnuarmemb
+ - xtools
+ram: 256
+flash: 1024
+supported:
+ - supported_board_1
+ - supported_board_2
+testing:
+ default: true
diff --git a/scripts/tests/sanitycheck/test_testsuite_class.py b/scripts/tests/sanitycheck/test_testsuite_class.py
index 02f24ff..9b37166 100755
--- a/scripts/tests/sanitycheck/test_testsuite_class.py
+++ b/scripts/tests/sanitycheck/test_testsuite_class.py
@@ -9,11 +9,12 @@
'''
import sys
import os
+import pytest
ZEPHYR_BASE = os.getenv("ZEPHYR_BASE")
sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/sanity_chk"))
-from sanitylib import TestCase
+from sanitylib import TestCase, TestSuite, Platform
def test_testsuite_add_testcases(class_testsuite):
""" Testing add_testcase function of Testsuite class in sanitycheck """
@@ -38,3 +39,46 @@
testcase = class_testsuite.testcases.get(tests_rel_dir + 'test_a/test_a.check_1')
assert testcase.name == tests_rel_dir + 'test_a/test_a.check_1'
assert all(isinstance(n, TestCase) for n in class_testsuite.testcases.values())
+
+@pytest.mark.parametrize("board_root_dir", [("board_config_file_not_exist"), ("board_config")])
+def test_add_configurations(test_data, class_testsuite, board_root_dir):
+ """ Testing add_configurations function of TestSuite class in Sanitycheck
+ Test : Asserting on default platforms list
+ """
+ class_testsuite.board_roots = os.path.abspath(test_data + board_root_dir)
+ suite = TestSuite(class_testsuite.board_roots, class_testsuite.roots, class_testsuite.outdir)
+ if board_root_dir == "board_config":
+ suite.add_configurations()
+ assert sorted(suite.default_platforms) == sorted(['demo_board_1', 'demo_board_3'])
+ elif board_root_dir == "board_config_file_not_exist":
+ suite.add_configurations()
+ assert sorted(suite.default_platforms) != sorted(['demo_board_1'])
+
+def test_get_all_testcases(class_testsuite, all_testcases_dict):
+ """ Testing get_all_testcases function of TestSuite class in Sanitycheck """
+ class_testsuite.testcases = all_testcases_dict
+ expected_tests = ['test_b.check_1', 'test_b.check_2', 'test_c.check_1', 'test_c.check_2', 'test_a.check_1', 'test_a.check_2', 'sample_test.app']
+ assert len(class_testsuite.get_all_tests()) == 7
+ assert sorted(class_testsuite.get_all_tests()) == sorted(expected_tests)
+
+def test_get_toolchain(class_testsuite, monkeypatch, capsys):
+ """ Testing get_toolchain function of TestSuite class in Sanitycheck
+ Test 1 : Test toolchain returned by get_toolchain function is same as in the environment.
+ Test 2 : Monkeypatch to delete the ZEPHYR_TOOLCHAIN_VARIANT env var
+ and check if appropriate error is raised"""
+ monkeypatch.setenv("ZEPHYR_TOOLCHAIN_VARIANT", "zephyr")
+ toolchain = class_testsuite.get_toolchain()
+ assert toolchain in ["zephyr"]
+
+ monkeypatch.delenv("ZEPHYR_TOOLCHAIN_VARIANT", raising=False)
+ with pytest.raises(SystemExit):
+ class_testsuite.get_toolchain()
+ out, _ = capsys.readouterr()
+ assert out == "E: Variable ZEPHYR_TOOLCHAIN_VARIANT is not defined\n"
+
+def test_get_platforms(class_testsuite, platforms_list):
+ """ Testing get_platforms function of TestSuite class in Sanitycheck """
+ class_testsuite.platforms = platforms_list
+ platform = class_testsuite.get_platform("demo_board_1")
+ assert isinstance(platform, Platform)
+ assert platform.name == "demo_board_1"