# SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import pytest from click.testing import CliRunner from imgtool.main import imgtool from imgtool import imgtool_version # all available imgtool commands COMMANDS = [ "create", "dumpinfo", "getpriv", "getpub", "getpubhash", "keygen", "sign", "verify", "version", ] def test_new_command(): """Check that no new commands had been added, so that tests would be updated in such case""" for cmd in imgtool.commands: assert cmd in COMMANDS def test_help(): """Simple test for the imgtool's help option, mostly just to see that it can be started""" runner = CliRunner() result_short = runner.invoke(imgtool, ["-h"]) assert result_short.exit_code == 0 result_long = runner.invoke(imgtool, ["--help"]) assert result_long.exit_code == 0 assert result_short.output == result_long.output # by default help should be also produced result_empty = runner.invoke(imgtool) assert result_empty.exit_code == 0 assert result_empty.output == result_short.output def test_version(): """Check that some version info is produced""" runner = CliRunner() result = runner.invoke(imgtool, ["version"]) assert result.exit_code == 0 assert result.output == imgtool_version + "\n" result_help = runner.invoke(imgtool, ["version", "-h"]) assert result_help.exit_code == 0 assert result_help.output != result.output def test_unknown(): """Check that unknown command will be handled""" runner = CliRunner() result = runner.invoke(imgtool, ["unknown"]) assert result.exit_code != 0 @pytest.mark.parametrize("command", COMMANDS) def test_cmd_help(command): """Check that all commands have some help""" runner = CliRunner() result_short = runner.invoke(imgtool, [command, "-h"]) assert result_short.exit_code == 0 result_long = runner.invoke(imgtool, [command, "--help"]) assert result_long.exit_code == 0 assert result_short.output == result_long.output @pytest.mark.parametrize("command1", COMMANDS) @pytest.mark.parametrize("command2", COMMANDS) def test_cmd_dif_help(command1, command2): """Check that all commands have some different help""" runner = CliRunner() result_general = runner.invoke(imgtool, "--help") assert result_general.exit_code == 0 result_cmd1 = runner.invoke(imgtool, [command1, "--help"]) assert result_cmd1.exit_code == 0 assert result_cmd1.output != result_general.output if command1 != command2: result_cmd2 = runner.invoke(imgtool, [command2, "--help"]) assert result_cmd2.exit_code == 0 assert result_cmd1.output != result_cmd2.output