diff --git a/netplan_cli/cli/core.py b/netplan_cli/cli/core.py index 918df9997..57414f6a6 100644 --- a/netplan_cli/cli/core.py +++ b/netplan_cli/cli/core.py @@ -20,6 +20,7 @@ import logging import os +import sys from . import utils from netplan import NetplanException, NetplanValidationException, NetplanParserException @@ -59,7 +60,10 @@ def main(self): except NetplanParserException as e: message = f'{e.filename}:{e.line}:{e.column}: {e}' logging.warning(f'Command failed: {message}') + sys.exit(1) except NetplanValidationException as e: logging.warning(f'Command failed: {e.filename}: {e}') + sys.exit(1) except NetplanException as e: logging.warning(f'Command failed: {e}') + sys.exit(1) diff --git a/tests/cli/test_units.py b/tests/cli/test_units.py index c50cf8e78..3e95700d2 100644 --- a/tests/cli/test_units.py +++ b/tests/cli/test_units.py @@ -144,7 +144,9 @@ def test_raises_exception_main_function(self): old_argv = sys.argv args = ['get', '--root-dir', self.tmproot] sys.argv = [old_argv[0]] + args - Netplan().main() + with self.assertRaises(SystemExit) as e: + Netplan().main() + self.assertEqual(1, e.exception.code) sys.argv = old_argv args = log.call_args.args @@ -164,7 +166,9 @@ def test_raises_exception_main_function_permission_denied(self): old_argv = sys.argv args = ['get', '--root-dir', self.tmproot] sys.argv = [old_argv[0]] + args - Netplan().main() + with self.assertRaises(SystemExit) as e: + Netplan().main() + self.assertEqual(1, e.exception.code) sys.argv = old_argv args = log.call_args.args @@ -181,8 +185,11 @@ def test_get_validation_error_exception(self): old_argv = sys.argv args = ['get', '--root-dir', self.tmproot] sys.argv = [old_argv[0]] + args - Netplan().main() + with self.assertRaises(SystemExit) as e: + Netplan().main() + self.assertEqual(1, e.exception.code) sys.argv = old_argv + args = log.call_args.args self.assertIn('etc/netplan/test.yaml: Error in network definition', args[0]) @@ -200,7 +207,10 @@ def test_set_generic_validation_error_exception(self): old_argv = sys.argv args = ['get', '--root-dir', self.tmproot] sys.argv = [old_argv[0]] + args - Netplan().main() + with self.assertRaises(SystemExit) as e: + Netplan().main() + self.assertEqual(1, e.exception.code) sys.argv = old_argv + args = log.call_args.args self.assertIn("VRF routes table mismatch", args[0]) diff --git a/tools/run_asan.sh b/tools/run_asan.sh index 0b906fb04..9550676a2 100755 --- a/tools/run_asan.sh +++ b/tools/run_asan.sh @@ -28,6 +28,12 @@ mkdir -p ${BUILDDIR}/fakeroot/{etc/netplan,run} for yaml in examples/*.yaml do + ## Ignore OpenVSwitch-related files for this test + ## As ovs is an optional dependency, it may not be available + if [[ "${yaml}" == *"openvswitch"* ]]; then + echo "Skipping OpenVSwitch file ${yaml}" + continue + fi filepath=${BUILDDIR}/fakeroot/etc/netplan/${yaml##*/} filename=$(basename ${filepath}) cp ${yaml} ${BUILDDIR}/fakeroot/etc/netplan/