# Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
# secGear is licensed under the Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http://license.coscl.org.cn/MulanPSL2
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
# PURPOSE.
# See the Mulan PSL v2 for more details.

import pytest

from secharden.exceptions import RuntimeException
from secharden.executor import CmdExecutor, CmdTemplate, CmdParameter


class TestExecutor:

    def test_normal(self):
        c = CmdExecutor(['echo'])
        template = CmdTemplate('name')
        param = CmdParameter(template)
        c.add_args(param)
        assert c.run() == 'name\n'

    def test_error(self):
        c = CmdExecutor(['ls'])
        template = CmdTemplate('/nonexistent_directory')
        param = CmdParameter(template)
        c.add_args(param)
        with pytest.raises(RuntimeException):
            c.run()