diff --git a/module/repo/test/lib/repo.unittest.class.php b/module/repo/test/lib/repo.unittest.class.php index 96f5d3a070..3b6a430b89 100755 --- a/module/repo/test/lib/repo.unittest.class.php +++ b/module/repo/test/lib/repo.unittest.class.php @@ -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() diff --git a/module/repo/test/model/rmclientversionfile.php b/module/repo/test/model/rmclientversionfile.php index 69b97d4ebd..50c037220c 100755 --- a/module/repo/test/model/rmclientversionfile.php +++ b/module/repo/test/model/rmclientversionfile.php @@ -1,19 +1,29 @@ #!/usr/bin/env php 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'); //测试删除文件 \ No newline at end of file +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:特殊字符文件名处理 \ No newline at end of file