Fix of double printing of errors in MO (#14224)
* Fix of double printing of errors. * Added log test. * Small correction. * Test fix.
This commit is contained in:
parent
3dceb7c3bb
commit
20bd062d5e
@ -27,13 +27,17 @@ from openvino.runtime import serialize
|
||||
|
||||
|
||||
def main(cli_parser: argparse.ArgumentParser, framework=None):
|
||||
argv = cli_parser.parse_args()
|
||||
argv.model_name = get_model_name_from_args(argv)
|
||||
argv = vars(argv)
|
||||
|
||||
# Initialize logger with 'ERROR' as default level to be able to form nice messages
|
||||
# before arg parser deliver log_level requested by user
|
||||
init_logger('ERROR', False)
|
||||
logger = log.getLogger()
|
||||
# Disable logging for parse_args() as inner convert runs parse_args() second time
|
||||
# which result in duplicating of warnings
|
||||
logger.disabled = True
|
||||
argv = cli_parser.parse_args()
|
||||
logger.disabled = False
|
||||
argv.model_name = get_model_name_from_args(argv)
|
||||
argv = vars(argv)
|
||||
|
||||
if framework is not None:
|
||||
argv['framework'] = framework
|
||||
|
@ -61,6 +61,21 @@ def test_main_test():
|
||||
assert not status.returncode
|
||||
|
||||
|
||||
def test_main_error_log():
|
||||
setup_env()
|
||||
args = [sys.executable,
|
||||
os.path.join(os.path.dirname(__file__), 'main_test_error_log.py')]
|
||||
|
||||
status = subprocess.run(args, env=os.environ, capture_output=True)
|
||||
test_log = status.stderr.decode("utf-8").replace("\r\n", "\n")
|
||||
|
||||
# Check that log has exactly one warning from parse_args and
|
||||
# exactly one error message "FW ERROR"
|
||||
ref_log = "[ WARNING ] warning\n[ FRAMEWORK ERROR ] FW ERROR MESSAGE\n"
|
||||
|
||||
assert test_log == ref_log
|
||||
|
||||
|
||||
def test_mo_extensions_test():
|
||||
setup_env()
|
||||
args = [sys.executable, '-m', 'pytest',
|
||||
|
27
tools/mo/unit_tests/mo/main_test_error_log.py
Normal file
27
tools/mo/unit_tests/mo/main_test_error_log.py
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright (C) 2018-2022 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import argparse
|
||||
from unittest.mock import patch
|
||||
|
||||
from openvino.tools.mo.utils.error import FrameworkError
|
||||
|
||||
|
||||
def mocked_parse_args(*argv):
|
||||
# Mock parse_args method which generates warning
|
||||
import logging as log
|
||||
log.error("warning", extra={'is_warning': True})
|
||||
argv = argparse.Namespace()
|
||||
return argv
|
||||
|
||||
|
||||
@patch('argparse.ArgumentParser.parse_args', mocked_parse_args)
|
||||
@patch('openvino.tools.mo.convert_impl.driver', side_effect=FrameworkError('FW ERROR MESSAGE'))
|
||||
def run_main(mock_driver):
|
||||
from openvino.tools.mo.main import main
|
||||
# runs main() method where driver() raises FrameworkError
|
||||
main(argparse.ArgumentParser())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_main()
|
Loading…
Reference in New Issue
Block a user