From 10fee88d42fe37d83f0a37b3dae69b674f8055f3 Mon Sep 17 00:00:00 2001 From: Neha Malcom Francis Date: Fri, 5 Jan 2024 17:09:17 +0530 Subject: [PATCH] tools: binman: ti_board_cfg: Check for linting problems Use yamllint for checking whether YAML configuration files are adhering to default yamllint rules. Signed-off-by: Neha Malcom Francis Suggested-by: Nishanth Menon --- tools/binman/etype/ti_board_config.py | 5 +++++ tools/binman/ftest.py | 6 ++++++ tools/binman/test/323_ti_board_cfg_phony.dts | 14 ++++++++++++++ tools/binman/test/yaml/config.yaml | 4 ++-- tools/binman/test/yaml/config_phony.yaml | 18 ++++++++++++++++++ tools/buildman/requirements.txt | 1 + 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 tools/binman/test/323_ti_board_cfg_phony.dts create mode 100644 tools/binman/test/yaml/config_phony.yaml diff --git a/tools/binman/etype/ti_board_config.py b/tools/binman/etype/ti_board_config.py index 94f894c281..2c3bb8f7b5 100644 --- a/tools/binman/etype/ti_board_config.py +++ b/tools/binman/etype/ti_board_config.py @@ -9,6 +9,7 @@ import os import struct import yaml +import yamllint from collections import OrderedDict from jsonschema import validate @@ -18,6 +19,7 @@ from binman.entry import Entry from binman.etype.section import Entry_section from dtoc import fdt_util from u_boot_pylib import tools +from yamllint import config BOARDCFG = 0xB BOARDCFG_SEC = 0xD @@ -244,6 +246,9 @@ class Entry_ti_board_config(Entry_section): with open(self._schema_file, 'r') as sch: self.schema_yaml = yaml.safe_load(sch) + yaml_config = config.YamlLintConfig("extends: default") + for p in yamllint.linter.run(open(self._config_file, "r"), yaml_config): + self.Raise(f"Yamllint error: {p.line}: {p.rule}") try: validate(self.file_yaml, self.schema_yaml) except Exception as e: diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index 90482518f1..8a44bc051b 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -7030,6 +7030,12 @@ fdt fdtmap Extract the devicetree blob from the fdtmap data = self._DoReadFile('293_ti_board_cfg.dts') self.assertEqual(TI_BOARD_CONFIG_DATA, data) + def testTIBoardConfigLint(self): + """Test that an incorrectly linted config file would generate error""" + with self.assertRaises(ValueError) as e: + data = self._DoReadFile('323_ti_board_cfg_phony.dts') + self.assertIn("Yamllint error", str(e.exception)) + def testTIBoardConfigCombined(self): """Test that a schema validated combined board config file can be generated""" data = self._DoReadFile('294_ti_board_cfg_combined.dts') diff --git a/tools/binman/test/323_ti_board_cfg_phony.dts b/tools/binman/test/323_ti_board_cfg_phony.dts new file mode 100644 index 0000000000..441296de4f --- /dev/null +++ b/tools/binman/test/323_ti_board_cfg_phony.dts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0+ +/dts-v1/; + +/ { + #address-cells = <1>; + #size-cells = <1>; + + binman { + ti-board-config { + config = "yaml/config_phony.yaml"; + schema = "yaml/schema.yaml"; + }; + }; +}; diff --git a/tools/binman/test/yaml/config.yaml b/tools/binman/test/yaml/config.yaml index 5f799a6e3a..c2be32128b 100644 --- a/tools/binman/test/yaml/config.yaml +++ b/tools/binman/test/yaml/config.yaml @@ -10,9 +10,9 @@ main-branch: b: 0 arr: [0, 0, 0, 0] another-arr: - - #1 + - # 1 c: 0 d: 0 - - #2 + - # 2 c: 0 d: 0 diff --git a/tools/binman/test/yaml/config_phony.yaml b/tools/binman/test/yaml/config_phony.yaml new file mode 100644 index 0000000000..d76fcb3b82 --- /dev/null +++ b/tools/binman/test/yaml/config_phony.yaml @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Test config +# +--- + +main-branch : + obj : + a : 0x0 + b: 0 + arr: [0, 0, 0, 0] + another-arr: + - # 1 + c: 0 + d: 0 + - # 2 + c: 0 + d: 0 diff --git a/tools/buildman/requirements.txt b/tools/buildman/requirements.txt index a1efcb9d4b..4a31e69e4c 100644 --- a/tools/buildman/requirements.txt +++ b/tools/buildman/requirements.txt @@ -1,2 +1,3 @@ jsonschema==4.17.3 pyyaml==6.0 +yamllint==1.26.3 -- 2.39.5