From 559d6422e23dcf5cd393dd96a062b70b46547fb8 Mon Sep 17 00:00:00 2001 From: liugang Date: Tue, 11 Nov 2025 15:34:11 +0800 Subject: [PATCH] + [misc] Add unit test script for repoZen::syncLocalCommit() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- module/repo/test/zen/synclocalcommit.php | 73 ++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 module/repo/test/zen/synclocalcommit.php diff --git a/module/repo/test/zen/synclocalcommit.php b/module/repo/test/zen/synclocalcommit.php new file mode 100755 index 0000000000..4df1d333dc --- /dev/null +++ b/module/repo/test/zen/synclocalcommit.php @@ -0,0 +1,73 @@ +#!/usr/bin/env php +id = 1; +$repo1->SCM = 'Git'; +$repo1->name = 'testrepo1'; + +$repo2 = new stdClass(); +$repo2->id = 2; +$repo2->SCM = 'Subversion'; +$repo2->name = 'testrepo2'; + +$repo3 = new stdClass(); +$repo3->id = 3; +$repo3->SCM = 'Git'; +$repo3->name = 'testrepo3'; + +$repo4 = new stdClass(); +$repo4->id = 4; +$repo4->SCM = 'Git'; +$repo4->name = 'testrepo4'; + +$repo5 = new stdClass(); +$repo5->id = 5; +$repo5->SCM = 'Git'; +$repo5->name = 'testrepo5'; + +$repo6 = new stdClass(); +$repo6->id = 6; +$repo6->SCM = 'Git'; +$repo6->name = 'testrepo6'; + +$repo7 = new stdClass(); +$repo7->id = 7; +$repo7->SCM = 'Git'; +$repo7->name = 'testrepo7'; + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($repoZenTest->syncLocalCommitTest($repo1, '', false)) && p() && e('0'); // 步骤1:日志文件不存在时应返回空字符串 +r($repoZenTest->syncLocalCommitTest($repo2, "Line 1\nLine 2\nfatal: repository not found\n", true)) && p() && e('fatal: repository not found'); // 步骤2:日志包含fatal错误时应返回错误行内容 +r($repoZenTest->syncLocalCommitTest($repo3, "Line 1\nLine 2\nfailed to connect\n", true)) && p() && e('failed to connect'); // 步骤3:日志包含failed错误时应返回错误行内容 +r($repoZenTest->syncLocalCommitTest($repo4, "Line 1\nLine 2\ndone\n", true)) && p() && e('0'); // 步骤4:日志包含done标记且成功完成时应删除文件并返回空字符串 +r($repoZenTest->syncLocalCommitTest($repo5, "Line 1\nempty repository\n", true)) && p() && e('0'); // 步骤5:日志包含empty repository标记时应删除文件并返回空字符串 +r($repoZenTest->syncLocalCommitTest($repo6, "Line 1\nTotal 100 objects\n", true)) && p() && e('1'); // 步骤6:日志包含Total标记但未完成finishCount时应返回处理中状态 +r($repoZenTest->syncLocalCommitTest($repo7, "Line 1\nCounting objects: 100%\nCompressing objects: 100%\nTotal 100 objects\n", true)) && p() && e('0'); // 步骤7:日志包含Total标记和finishCount及finishCompress时应删除文件并返回空字符串 \ No newline at end of file