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)
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
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
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
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命令处理失败')