示例#1
0
def fcmm_init():
    """
    初始化fcmm程序
    """
    # 获取启动参数
    config = load_fcmm_config()

    # 处理真实路径(在其他路径被调用的情况不会找错位置)
    fcmm_path = os.path.split(
        os.path.realpath(inspect.getfile(inspect.currentframe())))[0]
    temp_str = os.getcwd()
    os.chdir(fcmm_path)
    config['fcmm_path'] = fcmm_path
    config['temp_path'] = os.path.realpath(config['temp_path'])
    config['backup_path'] = os.path.realpath(config['backup_path'])
    os.chdir(temp_str)

    RunTools.set_global_var('config', config)  # 设置到全局变量中

    # 创建临时目录
    with ExceptionTools.ignored((FileExistsError)):
        FileTools.create_dir(config['temp_path'])
        RunTools.set_global_var('temp_path', config['temp_path'])

    # 创建备份目录
    if config['backup_before'] != 'false':
        with ExceptionTools.ignored((FileExistsError)):
            FileTools.create_dir(config['backup_path'])
            RunTools.set_global_var('backup_path', config['backup_path'])

    # 初始化命令行参数
    config_cmd_para = cmd_para_init(config)
    RunTools.set_global_var('config_cmd_para', config_cmd_para)
示例#2
0
    def setUp(self):
        """
        启动测试执行的初始化
        """
        self.current_path = os.path.realpath('')
        if os.path.exists(TEST_PATH):
            FileTools.remove_dir(TEST_PATH)

        FileTools.create_dir(TEST_PATH)

        shutil.copyfile('../fcmm4git/fcmm.json', 'fcmm.json')

        fcmm.fcmm_init()
        return
示例#3
0
    def setUp(self):
        """
        启动测试执行的初始化
        """
        global TEST_PATH
        if os.path.exists(TEST_PATH):
            FileTools.remove_dir(TEST_PATH)

        FileTools.create_dir(TEST_PATH)

        # 删除临时和备份目录
        if os.path.exists(TEMP_PATH):
            FileTools.remove_dir(TEMP_PATH)

        if os.path.exists(BACKUP_PATH):
            FileTools.remove_dir(BACKUP_PATH)

        return
示例#4
0
    def test_json_file(self):
        """
        测试JSON文件处理
        """
        FileTools.create_dir(TEST_PATH + 'json_file/')
        json_obj = dict()
        json_obj['key_1'] = 'value1'
        json_obj['key_2'] = 'value2'
        json_obj['key_3'] = dict()
        json_obj['key_3']['key_3_1'] = 'value3_1'
        json_obj['key_3']['key_3_2'] = 'value3_2'
        json_obj['key_4'] = ['value4_1', 'value4_2']

        FCMMTools.save_to_json_file(TEST_PATH + 'json_file/.fcmm4git',
                                    json_obj)
        get_json_obj = FCMMTools.get_fcmm_config(TEST_PATH + 'json_file/')

        self.assertDictEqual(json_obj, get_json_obj, 'JSON文件处理失败')
        return
示例#5
0
    def test_init(self):
        """
        测试init
        """
        print('测试init')
        global TEST_PATH, TEST_REPO_URL, FCMM_PATH, TEMP_PATH, BACKUP_PATH
        # 常用参数
        root_dir = TEST_PATH + '/init/'
        test_repo_name = fcmm_git_cmd.FcmmGitCmd.get_remote_repo_name(
            TEST_REPO_URL)
        repo_dir = root_dir + test_repo_name + '/'

        # 准备远程环境
        print('准备远程环境')
        FileTools.create_dir(root_dir)
        os.chdir(root_dir)
        self.assertTrue(
            subprocess.run('git clone %s' % (TEST_REPO_URL),
                           shell=True).returncode == 0, '准备远程环境: clone命令处理失败')
        os.chdir(repo_dir)
        # 清空文件夹
        subprocess.run('git rm * -r', shell=True)
        repo_info = fcmm_git_cmd.FcmmGitCmd.get_repo_info(repo_dir)
        if repo_info['repo'].is_dirty():
            # 有修改,要提交及上传
            self.assertTrue(
                subprocess.run('git commit -m "fcmm4git test clear file"',
                               shell=True).returncode == 0, '准备远程环境: rm命令处理失败')
            self.assertTrue(
                subprocess.run('git push -f origin master',
                               shell=True).returncode == 0,
                '准备远程环境: push命令处理失败')

        os.chdir(root_dir)
        FileTools.remove_dir(repo_dir)

        # 测试本地目录上传服务器
        print('测试本地目录上传服务器')
        local_repo_name = 'local'
        local_repo_path = root_dir + local_repo_name + '/'
        FileTools.create_dir(local_repo_path)
        os.chdir(local_repo_path)
        subprocess.run(
            'echo "test local to remote: no pkg v0.1.2" > readme.md',
            shell=True)

        print('测试本地目录上传服务器,成功但不建立lb-pkg')
        self.assertTrue(
            subprocess.run(
                'python %s/fcmm.py init -b local -url %s -v v0.1.2 -force -n -r'
                % (FCMM_PATH, TEST_REPO_URL),
                shell=True).returncode == 0, '本地目录上传: init命令处理失败')
        # 检查处理情况,先是备份
        file_list = FileTools.get_filelist(
            path=BACKUP_PATH,
            regex_str=test_repo_name.replace('.', '\.') + '\.bak\..*\.tar')
        self.assertTrue(len(file_list) > 0, '本地目录上传: 备份文件不存在')
        # 分支信息
        repo_info = fcmm_git_cmd.FcmmGitCmd.get_repo_info(local_repo_path)
        has_pkg = False
        for branch in repo_info['repo'].branches:
            if branch.name == 'lb-pkg':
                has_pkg = True
                break
        self.assertFalse(has_pkg, '本地目录上传: 不应建立lb-pkg')

        print('测试本地目录上传服务器,非强制被拒绝')
        self.assertFalse(
            subprocess.run(
                'python %s/fcmm.py init -b local -url %s -v v0.0.9' %
                (FCMM_PATH, TEST_REPO_URL),
                shell=True).returncode == 0, '本地目录上传: init命令处理失败')

        print('测试本地目录上传服务器,成功并建立lb-pkg')
        subprocess.run(
            'echo "test local to remote: with pkg v0.0.9" > readme1.md',
            shell=True)
        FileTools.remove_file(local_repo_path + '.fcmm4git')
        FileTools.remove_file(local_repo_path + 'readme.md')
        self.assertTrue(
            subprocess.run(
                'python %s/fcmm.py init -b local -url %s -v v0.0.9 -force' %
                (FCMM_PATH, TEST_REPO_URL),
                shell=True).returncode == 0, '本地目录上传: init命令处理失败')
        # 检查处理情况,先是备份
        file_list = FileTools.get_filelist(
            path=BACKUP_PATH,
            regex_str=test_repo_name.replace('.', '\.') + '\.bak\..*\.tar')
        self.assertTrue(len(file_list) > 0, '本地目录上传: 备份文件不存在')
        # 分支信息
        repo_info = fcmm_git_cmd.FcmmGitCmd.get_repo_info(local_repo_path)
        has_pkg = False
        for branch in repo_info['repo'].branches:
            if branch.name == 'lb-pkg':
                has_pkg = True
                break
        self.assertTrue(has_pkg, '本地目录上传: 没有成功建立lb-pkg')

        print('测试从服务器下载并建立本地目录,远程已带有fcmm4git')
        local_repo_name = 'remote1'
        local_repo_path = root_dir + local_repo_name + '/'
        FileTools.create_dir(local_repo_path)
        os.chdir(local_repo_path)
        subprocess.run(
            'echo "test remote to local: no pkg v0.1.3" > readme.md',
            shell=True)
        self.assertTrue(
            subprocess.run(
                'python %s/fcmm.py init -b remote -url %s -v v0.1.3 -force -n'
                % (FCMM_PATH, TEST_REPO_URL),
                shell=True).returncode == 0, '服务器下载并建立本地目录: init命令处理失败')