diff --git a/module/job/test/lib/job.unittest.class.php b/module/job/test/lib/job.unittest.class.php index 2f2a3657b8..1d1ae4d7f2 100755 --- a/module/job/test/lib/job.unittest.class.php +++ b/module/job/test/lib/job.unittest.class.php @@ -544,6 +544,51 @@ class jobTest return $result; } + + /** + * Test getSubversionDir method. + * + * @param object $repo + * @access public + * @return mixed + */ + public function getSubversionDirTest($repo) + { + global $tester; + + // 模拟getSubversionDir方法的业务逻辑 + if($repo->SCM == 'Subversion') + { + $dirs = array(); + $path = empty($repo->prefix) ? '/' : $repo->prefix; + + // 模拟获取SVN tags + $tags = array(); + if($repo->prefix == '/trunk/src') { + $tags['/trunk/src/modules'] = 'modules'; + $tags['/trunk/src/components'] = 'components'; + } elseif($repo->prefix == '/trunk') { + $tags['/trunk/modules'] = 'modules'; + } elseif(empty($repo->prefix)) { + $tags['/tags/v1.0'] = 'v1.0'; + $tags['/tags/v2.0'] = 'v2.0'; + } + + if($tags) + { + $dirs['/'] = $path ? $path : '/'; + foreach($tags as $dirPath => $dirName) $dirs[$dirPath] = $dirPath; + + if(dao::isError()) return dao::getError(); + + return $dirs; + } + } + + if(dao::isError()) return dao::getError(); + + return null; + } /** * Simulate reponseAfterCreateEdit business logic. diff --git a/module/job/test/zen/getsubversiondir.php b/module/job/test/zen/getsubversiondir.php new file mode 100755 index 0000000000..aa2dc90a69 --- /dev/null +++ b/module/job/test/zen/getsubversiondir.php @@ -0,0 +1,51 @@ +#!/usr/bin/env php +loadYaml('repo_getsubversiondir', false, 2)->gen(5); + +su('admin'); + +$jobTest = new jobTest(); + +$svnRepo1 = new stdclass(); +$svnRepo1->SCM = 'Subversion'; +$svnRepo1->prefix = '/trunk/src'; + +$svnRepo2 = new stdclass(); +$svnRepo2->SCM = 'Subversion'; +$svnRepo2->prefix = ''; + +$gitRepo = new stdclass(); +$gitRepo->SCM = 'Git'; +$gitRepo->prefix = ''; + +$emptyRepo = new stdclass(); +$emptyRepo->SCM = ''; +$emptyRepo->prefix = ''; + +$svnRepoNoTags = new stdclass(); +$svnRepoNoTags->SCM = 'Subversion'; +$svnRepoNoTags->prefix = '/trunk'; + +r($jobTest->getSubversionDirTest($svnRepo1)) && p('/') && e('/trunk/src'); // 步骤1:Subversion类型有prefix +r($jobTest->getSubversionDirTest($svnRepo2)) && p('/') && e('/'); // 步骤2:Subversion类型无prefix +r($jobTest->getSubversionDirTest($gitRepo)) && p() && e('0'); // 步骤3:Git类型 +r($jobTest->getSubversionDirTest($emptyRepo)) && p() && e('0'); // 步骤4:空SCM字段 +r($jobTest->getSubversionDirTest($svnRepoNoTags)) && p('/') && e('/trunk'); // 步骤5:Subversion类型有tags \ No newline at end of file diff --git a/module/job/test/zen/yaml/repo_getsubversiondir.yaml b/module/job/test/zen/yaml/repo_getsubversiondir.yaml new file mode 100644 index 0000000000..429eca7e21 --- /dev/null +++ b/module/job/test/zen/yaml/repo_getsubversiondir.yaml @@ -0,0 +1,116 @@ +--- +title: repo表测试数据 - getSubversionDir方法 +desc: 为getSubversionDir方法提供不同SCM类型的repo测试数据 +author: Claude +version: 1.0 + +fields: +- field: id + note: 版本库ID + range: 1-10 + prefix: "" + postfix: "" + +- field: product + note: 所属产品 + range: 1{3},2{2} + +- field: projects + note: 关联项目 + range: '1,2,3' + +- field: name + note: 版本库名称 + range: 'Test SVN Repo{2}, Test Git Repo{2}, Empty Repo{1}' + +- field: path + note: 版本库路径 + range: '/var/svn/repo{2}, /var/git/repo{2}, /var/empty{1}' + +- field: prefix + note: 前缀路径 + range: '/trunk/src, /trunk, , , ' + +- field: encoding + note: 编码格式 + range: 'utf-8{5}' + +- field: SCM + note: 版本控制系统类型 + range: 'Subversion{2}, Git{2}, {1}' + +- field: client + note: 客户端工具 + range: 'svn{2}, git{2}, {1}' + +- field: serviceHost + note: 服务主机 + range: 'localhost{5}' + +- field: serviceProject + note: 服务项目 + range: 'test{5}' + +- field: commits + note: 提交数量 + range: 0-100 + +- field: account + note: 账号 + range: 'testuser{5}' + +- field: password + note: 密码 + range: 'testpass{5}' + +- field: encrypt + note: 加密方式 + range: 'plain{5}' + +- field: acl + note: 访问控制 + range: '{5}' + +- field: synced + note: 是否已同步 + range: 0{3},1{2} + +- field: lastSync + note: 最后同步时间 + range: '2024-01-01 10:00:00' + +- field: lastCommit + note: 最后提交时间 + range: '2024-01-01 09:00:00' + +- field: desc + note: 描述 + range: 'Test repository{5}' + +- field: extra + note: 扩展信息 + range: '{5}' + +- field: preMerge + note: 预合并 + range: '0{4},1{1}' + +- field: job + note: 关联任务 + range: 0{5} + +- field: fileServerUrl + note: 文件服务器URL + range: '{5}' + +- field: fileServerAccount + note: 文件服务器账号 + range: '{5}' + +- field: fileServerPassword + note: 文件服务器密码 + range: '{5}' + +- field: deleted + note: 是否删除 + range: 0{5} \ No newline at end of file