From 1532a0acf9450114aa412629cdb11c19b15b101d Mon Sep 17 00:00:00 2001 From: zenggang Date: Thu, 4 Jan 2024 12:04:45 +0000 Subject: [PATCH] * Add repo unit test. --- .../repo/test/model/getcommitsbyrevisions.php | 27 +++++++++ module/repo/test/model/getexecutionpairs.php | 58 +++++++++++++++++++ module/repo/test/model/getfilecommits.php | 40 +++++++++++++ module/repo/test/model/isclickable.php | 38 ++++++++++++ module/repo/test/model/savetaskrelation.php | 26 +++++++++ module/repo/test/model/updatecommit.php | 30 ++++++++++ module/repo/test/repo.class.php | 46 +++++++++++++++ module/repo/test/yaml/repohistory.yaml | 14 ++--- 8 files changed, 272 insertions(+), 7 deletions(-) create mode 100644 module/repo/test/model/getcommitsbyrevisions.php create mode 100644 module/repo/test/model/getexecutionpairs.php create mode 100644 module/repo/test/model/getfilecommits.php create mode 100644 module/repo/test/model/isclickable.php create mode 100644 module/repo/test/model/savetaskrelation.php create mode 100644 module/repo/test/model/updatecommit.php diff --git a/module/repo/test/model/getcommitsbyrevisions.php b/module/repo/test/model/getcommitsbyrevisions.php new file mode 100644 index 0000000000..1aa4c2236f --- /dev/null +++ b/module/repo/test/model/getcommitsbyrevisions.php @@ -0,0 +1,27 @@ +#!/usr/bin/env php +getCommitsByRevisions(); +timeout=0 +cid=8 + +- 获取版本库1提交信息属性1 @1 +- 获取版本库3提交信息属性3 @3 + +*/ + +zdTable('repo')->config('repo')->gen(4); +zdTable('repohistory')->config('repohistory')->gen(3); + +$repo = $tester->loadModel('repo'); + +$revisions1 = array('c808480afe22d3a55d94e91c59a8f3170212ade0'); +$revisions2 = array('d30919bdb9b4cf8e2698f4a6a30e41910427c01c', '0dbb150d4904c9a9d5a804b6cdddea3cb3d856bb'); + +r($repo->getCommitsByRevisions($revisions1)) && p('1') && e('1'); //获取版本库1提交信息 +r($repo->getCommitsByRevisions($revisions2)) && p('3') && e('3'); //获取版本库3提交信息 diff --git a/module/repo/test/model/getexecutionpairs.php b/module/repo/test/model/getexecutionpairs.php new file mode 100644 index 0000000000..c9a49fc8c9 --- /dev/null +++ b/module/repo/test/model/getexecutionpairs.php @@ -0,0 +1,58 @@ +#!/usr/bin/env php +getExecutionPairs(); +timeout=0 +cid=1 + +- 获取gitlab类型版本库1的分支 + - 属性master @master + - 属性branch1 @branch1 +- 获取gitlab类型版本库1的分支加label + - 属性master @Branch::master + - 属性branch1 @Branch::branch1 + +*/ + +$execution = zdTable('project'); +$execution->id->range('1-10'); +$execution->name->range('项目集1,项目1,项目2,项目3,迭代1,迭代2,阶段1,阶段2,看板1,看板2'); +$execution->type->range('program,project,sprint{2},stage{2},kanban{2}'); +$execution->model->range('[],scrum,waterfall,kanban,[]{6}'); +$execution->parent->range('0,1{3},2{2},3{2},4{2}'); +$execution->project->range('0{4},2{2},3{2},4{2}'); +$execution->status->range('doing'); +$execution->vision->range('rnd'); +$execution->openedBy->range('admin,user1'); +$execution->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD'); +$execution->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD'); +$execution->gen(10); + +$product = zdTable('product'); +$product->id->range('1-3'); +$product->name->range('1-3')->prefix('产品'); +$product->code->range('1-3')->prefix('product'); +$product->type->range('normal'); +$product->status->range('normal'); +$product->PO->range('admin'); +$product->QD->range('user1'); +$product->RD->range('user2'); +$product->gen(3); + +$projectProduct = zdTable('projectproduct'); +$projectProduct->project->range('2{3}, 3{3}, 4{3}, 5, 6, 7, 8, 9, 10'); +$projectProduct->product->range('1-3'); +$projectProduct->branch->range('0'); +$projectProduct->gen(9); + +$productID = 3; +$branch = 1; + +$repo = $tester->loadModel('repo'); + +r($repo->getExecutionPairs($productID)) && p('4,3') && e('项目3,项目2'); // 获取执行键值对 diff --git a/module/repo/test/model/getfilecommits.php b/module/repo/test/model/getfilecommits.php new file mode 100644 index 0000000000..d727b168c1 --- /dev/null +++ b/module/repo/test/model/getfilecommits.php @@ -0,0 +1,40 @@ +#!/usr/bin/env php +getFileCommits(); +timeout=0 +cid=8 + +- 获取代码文件得提交信息 + - 第0条的revision属性 @c808480afe22d3a55d94e91c59a8f3170212ade0 + - 第0条的date属性 @2023-12-13 19:00:25 +- 获取操作为删除文件得提交信息 @0 +- 获取svn代码库得提交信息 + - 第0条的revision属性 @1 + - 第0条的comment属性 @+ Add file. + +*/ + +zdTable('pipeline')->gen(4); +zdTable('repo')->config('repo')->gen(5); +zdTable('repohistory')->config('repohistory')->gen(4); +$repoBranch = zdTable('repobranch'); +$repoBranch->branch->range('branch3'); +$repoBranch->gen(1); +zdTable('repofiles')->gen(10); + +$repo = new repoTest(); + +$gitlabID = 1; +$giteaID = 3; +$branch = 'branch3'; +$parent = '/trunk/zentaoext/zentaopro/cmmi/db'; + +r($repo->getFileCommitsTest($gitlabID, $branch)) && p('0:revision,date') && e('c808480afe22d3a55d94e91c59a8f3170212ade0,2023-12-13 19:00:25'); //获取代码文件得提交信息 +r($repo->getFileCommitsTest($giteaID, '')) && p() && e('0'); //获取操作为删除文件得提交信息 +r($repo->getFileCommitsTest(4, '', $parent)) && p('0:revision,comment') && e('1,+ Add file.'); //获取svn代码库得提交信息 diff --git a/module/repo/test/model/isclickable.php b/module/repo/test/model/isclickable.php new file mode 100644 index 0000000000..7af1cb7a3d --- /dev/null +++ b/module/repo/test/model/isclickable.php @@ -0,0 +1,38 @@ +#!/usr/bin/env php +config('repo')->gen(4); +zdTable('repohistory')->config('repohistory')->gen(3); + +$repoModel = $tester->loadModel('repo'); + +$repo1 = new stdclass(); +$repo1->exec = 'disabled'; + +$repo2 = new stdclass(); +$repo2->exec = ''; + +$repo3 = new stdclass(); +$repo3->report = 'disabled'; + +$repo4 = new stdclass(); +$repo4->report = ''; + +r($repoModel->isClickable($repo1, 'execJob')) && p() && e('0'); //计算exec为disabled是否能进行执行任务操作 +r($repoModel->isClickable($repo2, 'execJob')) && p() && e('1'); //计算exec为空是否能进行执行任务操作 +r($repoModel->isClickable($repo3, 'reportView')) && p() && e('0'); //计算report为disabled是否能进行执行任务操作 +r($repoModel->isClickable($repo4, 'reportView')) && p() && e('1'); //计算report为空是否能进行执行任务操作 diff --git a/module/repo/test/model/savetaskrelation.php b/module/repo/test/model/savetaskrelation.php new file mode 100644 index 0000000000..229e2f1dd7 --- /dev/null +++ b/module/repo/test/model/savetaskrelation.php @@ -0,0 +1,26 @@ +#!/usr/bin/env php +saveTaskRelation(); +timeout=0 +cid=8 + +- 保存任务和分支的关联关系 + - 属性AID @2 + - 属性BID @1 + - 属性extra @master + +*/ + +$repo = new repoTest(); + +$repoID = 1; +$taskID = 2; +$branch = 'master'; + +r($repo->saveTaskRelationTest($repoID, $taskID, $branch)) && p('AID,BID,extra') && e('2,1,master'); //保存任务和分支的关联关系 diff --git a/module/repo/test/model/updatecommit.php b/module/repo/test/model/updatecommit.php new file mode 100644 index 0000000000..913f78217c --- /dev/null +++ b/module/repo/test/model/updatecommit.php @@ -0,0 +1,30 @@ +#!/usr/bin/env php +updateCommit(); +timeout=0 +cid=8 + +- 保存任务和分支的关联关系 + - 属性AID @2 + - 属性BID @1 + - 属性extra @master + +*/ + +zdTable('pipeline')->gen(4); +zdTable('repo')->config('repo')->gen(5); +zdTable('repohistory')->config('repohistory')->gen(4); + +$repo = new repoTest(); + +$gitlabID = 1; +$svnID = 4; + +r($repo->updateCommitTest($gitlabID)) && p() && e('1'); //更新gitlab代码库 +r($repo->updateCommitTest($svnID)) && p('5:id,comment') && e('5,+ Add secondary file.'); //更新svn代码库 diff --git a/module/repo/test/repo.class.php b/module/repo/test/repo.class.php index 1e50232a94..bcfd81ed5a 100644 --- a/module/repo/test/repo.class.php +++ b/module/repo/test/repo.class.php @@ -730,4 +730,50 @@ class repoTest return $result; } + public function saveTaskRelationTest(int $repoID, int $taskID, string $branch) + { + $this->objectModel->saveTaskRelation($repoID, $taskID, $branch); + + if(dao::isError()) return dao::getError(); + + return $this->objectModel->dao->select('*')->from(TABLE_RELATION) + ->where('AType')->eq('task') + ->andWhere('AID')->eq($taskID) + ->andWhere('BID')->eq($repoID) + ->andWhere('relation')->eq('linkrepobranch') + ->andWhere('BType')->eq('repobranch') + ->fetch(); + } + + public function updateCommitTest(int $repoID, int $objectID = 0, string $branchID = '') + { + $result = $this->objectModel->updateCommit($repoID, $objectID, $branchID); + + $repo = $this->objectModel->getByID($repoID); + if($repo->SCM == 'Gitlab') return $result; + return $this->objectModel->dao->select('*')->from(TABLE_REPOHISTORY)->where('repo')->eq($repoID)->fetchAll('id'); + } + + public function checkDeletedBranchesTest(int $repoID, array $latestBranches) + { + $result = $this->objectModel->checkDeletedBranches($repoID, $latestBranches); + + $repoHistoryCount = $this->objectModel->dao->select('*')->from(TABLE_REPOHISTORY)->count(); + $repoBranchCount = $this->objectModel->dao->select('*')->from(TABLE_REPOBRANCH)->count(); + $repoFilesCount = $this->objectModel->dao->select('*')->from(TABLE_REPOFILES)->count(); + + return array('repoHistoryCount' => $repoHistoryCount, 'repoBranchCount' => $repoBranchCount, 'repoFilesCount' => $repoFilesCount); + } + + public function getFileCommitsTest(int $repoID, string $branch, string $parent = '') + { + $repo = $this->objectModel->getByID($repoID); + $result = $this->objectModel->getFileCommits($repo, $branch, $parent); + + return $result; + } + + public function getFileTreeTest(int $repoID, string $branch = '', array $diffs = null) + { + } } diff --git a/module/repo/test/yaml/repohistory.yaml b/module/repo/test/yaml/repohistory.yaml index efd7b2c9d2..138d3e0e73 100644 --- a/module/repo/test/yaml/repohistory.yaml +++ b/module/repo/test/yaml/repohistory.yaml @@ -12,38 +12,38 @@ fields: format: "" - field: repo note: "代码库ID" - range: "1,3{2}" + range: "1,3{2},4" prefix: "" postfix: "" loop: 0 format: "" - field: revision note: "查看版本" - range: "c808480afe22d3a55d94e91c59a8f3170212ade0,d30919bdb9b4cf8e2698f4a6a30e41910427c01c,0dbb150d4904c9a9d5a804b6cdddea3cb3d856bb" + range: "c808480afe22d3a55d94e91c59a8f3170212ade0,d30919bdb9b4cf8e2698f4a6a30e41910427c01c,0dbb150d4904c9a9d5a804b6cdddea3cb3d856bb,1" prefix: "" postfix: "" loop: 0 format: "" - field: commit note: "提交" - range: "1,2,1" + range: "1,2,1,1" prefix: "" postfix: "" loop: 0 format: "" - field: comment note: "注释" - range: "[代码注释],[更新 LICENSE],[Initial commit]" + range: "[代码注释],[更新 LICENSE],[Initial commit],[+ Add file.]" postfix: "" loop: 0 format: "" - field: committer note: "作者" - range: 1-10000 - prefix: "提交者" + range: "admin,gitea{2},admin" + prefix: "" postfix: "" loop: 0 format: "" - field: time note: "提交时间" - range: "[2023-12-13 19:00:25],[2023-12-18 19:00:25],[2023-12-13 13:04:27]" + range: "[2023-12-13 19:00:25],[2023-12-18 19:00:25],[2023-12-13 13:04:27],[2023-12-14 09:04:27]"