* [misc] Enhance unit tests for repoModel::rmClientVersionFile() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-25 09:16:32 +08:00
co-authored by Claude
parent 4abeebd779
commit 59f171adc6
2 changed files with 99 additions and 12 deletions
+82 -5
View File
@@ -535,16 +535,93 @@ class repoTest
return $objects;
}
public function rmClientVersionFileTest()
/**
* Test rmClientVersionFile method.
*
* @param string $testType 测试类型
* @access public
* @return mixed
*/
public function rmClientVersionFileTest($testType = 'existing_file')
{
file_put_contents('clientFile.txt', 'rmClientVersionFileTest');
$this->objectModel->session->set('clientVersionFile', 'clientFile.txt');
// 清理之前的测试文件
$testFiles = array('clientFile.txt', 'special_chars_!@#$.txt');
foreach($testFiles as $file)
{
if(file_exists($file)) @unlink($file);
}
$objects = $this->objectModel->rmClientVersionFile();
$result = array('success' => false, 'sessionCleared' => false, 'fileDeleted' => true);
switch($testType)
{
case 'existing_file':
// 测试步骤1:有文件且文件存在
file_put_contents('clientFile.txt', 'rmClientVersionFileTest');
$this->objectModel->session->set('clientVersionFile', 'clientFile.txt');
$result['initialFileExists'] = file_exists('clientFile.txt');
$this->objectModel->rmClientVersionFile();
$result['sessionCleared'] = empty($this->objectModel->session->clientVersionFile);
$result['fileDeleted'] = !file_exists('clientFile.txt');
$result['success'] = $result['sessionCleared'] && $result['fileDeleted'];
break;
case 'nonexistent_file':
// 测试步骤2:有文件路径但文件不存在
$this->objectModel->session->set('clientVersionFile', 'nonexistent_file.txt');
$this->objectModel->rmClientVersionFile();
$result['sessionCleared'] = empty($this->objectModel->session->clientVersionFile);
$result['fileDeleted'] = true; // 文件本来就不存在
$result['success'] = $result['sessionCleared'];
break;
case 'empty_string':
// 测试步骤3:session中为空字符串
$this->objectModel->session->set('clientVersionFile', '');
$this->objectModel->rmClientVersionFile();
$result['sessionCleared'] = true; // 本来就是空
$result['fileDeleted'] = true; // 没有文件操作
$result['success'] = true;
break;
case 'null':
// 测试步骤4:session中没有该属性
unset($_SESSION['clientVersionFile']);
$this->objectModel->rmClientVersionFile();
$result['sessionCleared'] = true; // 没有该属性
$result['fileDeleted'] = true; // 没有文件操作
$result['success'] = true;
break;
case 'special_chars':
// 测试步骤5:特殊字符文件名处理
$specialFile = 'special_chars_!@#$.txt';
file_put_contents($specialFile, 'special chars test');
$this->objectModel->session->set('clientVersionFile', $specialFile);
$this->objectModel->rmClientVersionFile();
$result['sessionCleared'] = empty($this->objectModel->session->clientVersionFile);
$result['fileDeleted'] = !file_exists($specialFile);
$result['success'] = $result['sessionCleared'] && $result['fileDeleted'];
break;
default:
$result['success'] = false;
break;
}
if(dao::isError()) return dao::getError();
return $this->objectModel->session->clientVersionFile == '' && !file_exists('clientFile.txt') ;
return $result['success'] ? 1 : 0;
}
public function checkConnectionTest()
+17 -7
View File
@@ -1,19 +1,29 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/repo.unittest.class.php';
su('admin');
/**
title=测试 repoModel->rmClientVersionFile();
title=测试 repoModel::rmClientVersionFile();
timeout=0
cid=1
cid=0
- 测试删除文件 @1
- 测试步骤1:有文件且文件存在 @1
- 测试步骤2:有文件路径但文件不存在 @1
- 测试步骤3:session中为空字符串 @1
- 测试步骤4:session中没有该属性 @1
- 测试步骤5:特殊字符文件名处理 @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/repo.unittest.class.php';
su('admin');
$repo = new repoTest();
r($repo->rmClientVersionFileTest()) && p() && e('1'); //测试删除文件
r($repo->rmClientVersionFileTest('existing_file')) && p() && e('1'); //测试步骤1:有文件且文件存在
r($repo->rmClientVersionFileTest('nonexistent_file')) && p() && e('1'); //测试步骤2:有文件路径但文件不存在
r($repo->rmClientVersionFileTest('empty_string')) && p() && e('1'); //测试步骤3:session中为空字符串
r($repo->rmClientVersionFileTest('null')) && p() && e('1'); //测试步骤4:session中没有该属性
r($repo->rmClientVersionFileTest('special_chars')) && p() && e('1'); //测试步骤5:特殊字符文件名处理