diff --git a/src/sonic-config-engine/portconfig.py b/src/sonic-config-engine/portconfig.py index 2eceb81bcac4..260632b754f9 100644 --- a/src/sonic-config-engine/portconfig.py +++ b/src/sonic-config-engine/portconfig.py @@ -261,9 +261,9 @@ def parse_platform_json_file(hwsku_json_file, platform_json_file): port_dict = readJson(platform_json_file) hwsku_dict = readJson(hwsku_json_file) - if not port_dict: + if port_dict is None: raise Exception("port_dict is none") - if not hwsku_dict: + if hwsku_dict is None: raise Exception("hwsku_dict is none") if INTF_KEY not in port_dict or INTF_KEY not in hwsku_dict: @@ -285,8 +285,8 @@ def parse_platform_json_file(hwsku_json_file, platform_json_file): ports.update(child_ports) - if not ports: - raise Exception("Ports dictionary is empty") + if ports is None: + raise Exception("Ports dictionary is None") for i in ports.keys(): port_alias_map[ports[i]["alias"]]= i diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index 26692399d950..93f5cd125478 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -317,7 +317,7 @@ def main(): if args.port_config is None: args.port_config = device_info.get_path_to_port_config_file(hwsku) (ports, _, _) = get_port_config(hwsku, platform, args.port_config, asic_id) - if not ports: + if ports is None: print('Failed to get port config', file=sys.stderr) sys.exit(1) deep_update(data, {'PORT': ports}) diff --git a/src/sonic-config-engine/tests/test_cfggen_platformJson.py b/src/sonic-config-engine/tests/test_cfggen_platformJson.py index 4c7fc9729e78..1765fb4f3a2c 100644 --- a/src/sonic-config-engine/tests/test_cfggen_platformJson.py +++ b/src/sonic-config-engine/tests/test_cfggen_platformJson.py @@ -2,11 +2,17 @@ import json import os import subprocess +import sys import tests.common_utils as utils from unittest import TestCase +from portconfig import get_port_config, INTF_KEY +if sys.version_info.major == 3: + from unittest import mock +else: + import mock # Global Variable PLATFORM_OUTPUT_FILE = "platform_output.json" @@ -85,3 +91,10 @@ def test_platform_json_all_ethernet_interfaces(self): output_dict = ast.literal_eval(output.strip()) expected = ast.literal_eval(json.dumps(fh_data)) self.assertDictEqual(output_dict, expected) + + @mock.patch('portconfig.readJson', mock.MagicMock(return_value={INTF_KEY:{}})) + @mock.patch('os.path.isfile', mock.MagicMock(return_value=True)) + def test_platform_json_no_interfaces(self): + (ports, _, _) = get_port_config(port_config_file=self.platform_json) + self.assertNotEqual(ports, None) + self.assertEqual(ports, {})