コード例 #1
0
    def __check_copy_src(file: Path):
        if not file.exists():
            raise HappyPyException('文件不存在:%s' % file)

        if not file.is_file():
            raise HappyPyException('"%s" 不能是文件夹或链接,必须是普通文件' % file)

        if not file.is_absolute():
            raise HappyPyException('文件 "%s" 必须为绝对路径' % file)
コード例 #2
0
        def foo(message):
            global current_n

            if message != 'hello':
                raise HappyPyException('callback_succeed_once参数测试')

            if current_n < max_n:
                current_n += 1
                raise HappyPyException('callback_succeed_once用于测试的异常')

            return current_n
コード例 #3
0
    def load(filename: str, happy_config_object: HappyConfigBase):
        if not isinstance(happy_config_object, HappyConfigBase):
            raise HappyPyException(
                'happy_config_object 不是 HappyConfigBase 类的子类对象。')

        try:
            if not os.path.exists(filename):
                print("[Error] 配置文件 %s 不存在" % filename)
                exit(1)

            with open(filename, 'r', encoding='UTF-8') as f:
                content = f.readlines()
                HappyConfigParser._loads(''.join(content), happy_config_object)
        except Exception as e:
            print("[Error] 配置文件读取错误:%s" % str(e))
            exit(1)
コード例 #4
0
    def __do_xxx_directive(cmd, name, is_check, expected_result, got_result, is_show_error) -> CheckDirectiveState:
        if not cmd:
            return CheckDirectiveState.NOT_RUNNING

        hlog.info('"%s" Directive: Running...' % name)
        hlog.info('"%s" Directive: %s' % (name, cmd))
        result = get_exit_status_of_cmd(cmd, is_show_error=is_show_error, is_show_output=True)

        if is_check:
            # check 指令直接返回运行结果
            return CheckDirectiveState.YES if result else CheckDirectiveState.NO

        if result != expected_result:
            # 与 test 指令期望不符
            raise HappyPyException(
                '"%s" Directive: "%s"..."%s" expected, got "%s"' % (name, cmd, expected_result, got_result))
コード例 #5
0
    def load(filename: str, happy_config_object: HappyConfigBase):
        from configparser import ConfigParser

        # TODO 配置文件与HappyConfigBase定义不一致时,抛出异常

        if not isinstance(happy_config_object, HappyConfigBase):
            raise HappyPyException(
                'happy_config_object 不是 HappyConfigBase 类的子类对象。')

        try:
            if not os.path.exists(filename):
                print("[Error] 配置文件 %s 不存在" % filename)
                exit(1)

            cfg = ConfigParser()
            cfg.read(filename)

            class_attrs = happy_config_object.__dict__
            section = happy_config_object.section

            for name, value in class_attrs.items():
                if name == '_section':
                    continue

                t = type(value)

                if t is str:
                    v = cfg.get(section, name)
                    exec("happy_config_object.%s='%s'" % (name, v))
                elif t is int:
                    v = cfg.getint(section, name)
                    exec("happy_config_object.%s=%d" % (name, v))
                elif t is bool:
                    v = cfg.getboolean(section, name)
                    exec("happy_config_object.%s=%s" % (name, v))
                elif t is float:
                    v = cfg.getfloat(section, name)
                    exec("happy_config_object.%s=%f" % (name, v))
                else:
                    v = cfg.getboolean(section, name)
                    exec("happy_config_object.%s=%s" % (name, v))
        except Exception as e:
            print("[Error] 配置文件读取错误:%s" % str(e))
            exit(1)
コード例 #6
0
    def __check_copy_set(self):
        # 不是复制命令
        if self.__run.find('COPY ') != 0:
            return

        cmd_parts = self.__run.split(' ')

        if len(cmd_parts) != 3:
            raise HappyPyException('无效的复制命令:%s' % self.__run)

        copy_src = Path(sys.argv[0]).absolute().parent / 'local_files' / cmd_parts[1]
        copy_dst = PurePath(cmd_parts[2])

        self.__check_copy_src(copy_src)
        self.__check_copy_dst(copy_dst)

        self.__is_copy_mode = True
        self.__copy_src = str(copy_src)
        self.__copy_dst = str(copy_dst)
コード例 #7
0
ファイル: app.py プロジェクト: fifilyu/labinx
def get_point(source):
    point = LabinxPoint()
    point.description = source['description'] if 'description' in source else ''

    for json_cmd in source['cmds']:
        cmd = LabinxCmd()
        cmd.description = json_cmd['description']
        cmd.check = json_cmd['check'] if 'check' in json_cmd else ''
        cmd.test_true = json_cmd['test_true'] if 'test_true' in json_cmd else ''
        cmd.test_false = json_cmd['test_false'] if 'test_false' in json_cmd else ''

        if 'run' in json_cmd:
            cmd.set_run(json_cmd['run'])
        else:
            raise HappyPyException('缺少 run 参数')

        point.add(cmd)

    return point
コード例 #8
0
    def _loads(content: str, happy_config_object: HappyConfigBase):
        from configparser import ConfigParser

        if not isinstance(happy_config_object, HappyConfigBase):
            raise HappyPyException(
                'happy_config_object 不是 HappyConfigBase 类的子类对象。')

        try:
            cfg = ConfigParser()
            cfg.read_string(content)

            class_attrs = happy_config_object.__dict__
            section = happy_config_object.section

            for name, value in class_attrs.items():
                if name == '_section':
                    continue

                t = type(value)

                if t is str:
                    v = cfg.get(section, name)
                    exec("happy_config_object.%s='%s'" % (name, v))
                elif t is int:
                    v = cfg.getint(section, name)
                    exec("happy_config_object.%s=%d" % (name, v))
                elif t is bool:
                    v = cfg.getboolean(section, name)
                    exec("happy_config_object.%s=%s" % (name, v))
                elif t is float:
                    v = cfg.getfloat(section, name)
                    exec("happy_config_object.%s=%f" % (name, v))
                elif t is list:
                    v = cfg.get(section, name).split(',')
                    exec("happy_config_object.%s=%s" % (name, v))
                else:
                    v = cfg.getboolean(section, name)
                    exec("happy_config_object.%s=%s" % (name, v))
        except Exception as e:
            print("[Error] 配置文件读取错误:%s" % str(e))
            exit(1)
コード例 #9
0
 def test_hpe(self):
     try:
         raise HappyPyException('自定义错误')
     except HappyPyException as e:
         self.assertEqual('自定义错误', str(e))
コード例 #10
0
 def __check_copy_dst(file: PurePath):
     if not file.is_absolute():
         raise HappyPyException('文件 "%s" 必须为绝对路径' % file)