+ [misc] Add unit tests for extensionZen::copyPackageFiles() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-12 08:25:46 +08:00
co-authored by Claude
parent bdee58ac13
commit 110187171a
2 changed files with 109 additions and 0 deletions
+14
View File
@@ -138,4 +138,18 @@ class extensionZenTest extends baseTest
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test copyPackageFiles method.
*
* @param string $extension 插件代号
* @access public
* @return array
*/
public function copyPackageFilesTest(string $extension)
{
$result = $this->invokeArgs('copyPackageFiles', [$extension]);
if(dao::isError()) return dao::getError();
return $result;
}
}
+95
View File
@@ -0,0 +1,95 @@
#!/usr/bin/env php
<?php
/**
title=测试 extensionZen::copyPackageFiles();
timeout=0
cid=0
- 执行$result1 @1
- 执行$result2 @0
- 执行$result3 @0
- 执行$result4) > 0 @1
- 执行$md5Len @32
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zen.class.php';
su('admin');
global $tester, $app, $config;
$app->rawModule = 'extension';
$app->rawMethod = 'browse';
$extensionTest = new extensionZenTest();
// 获取测试路径
$extensionModel = $tester->loadModel('extension');
$pkgRoot = $extensionModel->pkgRoot;
// 步骤1: 测试空插件包目录
$ext1 = 'test_empty_pkg';
$dir1 = $pkgRoot . $ext1 . DS;
if(!is_dir($dir1)) mkdir($dir1, 0777, true);
$result1 = $extensionTest->copyPackageFilesTest($ext1);
r(is_array($result1)) && p() && e('1');
if(is_dir($dir1)) rmdir($dir1);
// 步骤2: 测试只有db目录的插件包
$ext2 = 'test_db_pkg';
$dir2 = $pkgRoot . $ext2 . DS;
$dbDir2 = $dir2 . 'db' . DS;
if(!is_dir($dbDir2)) mkdir($dbDir2, 0777, true);
file_put_contents($dbDir2 . 'test.sql', 'SQL');
$result2 = $extensionTest->copyPackageFilesTest($ext2);
r(count($result2)) && p() && e('0');
if(file_exists($dbDir2 . 'test.sql')) unlink($dbDir2 . 'test.sql');
if(is_dir($dbDir2)) rmdir($dbDir2);
if(is_dir($dir2)) rmdir($dir2);
// 步骤3: 测试只有doc目录的插件包
$ext3 = 'test_doc_pkg';
$dir3 = $pkgRoot . $ext3 . DS;
$docDir3 = $dir3 . 'doc' . DS;
if(!is_dir($docDir3)) mkdir($docDir3, 0777, true);
file_put_contents($docDir3 . 'readme.md', 'README');
$result3 = $extensionTest->copyPackageFilesTest($ext3);
r(count($result3)) && p() && e('0');
if(file_exists($docDir3 . 'readme.md')) unlink($docDir3 . 'readme.md');
if(is_dir($docDir3)) rmdir($docDir3);
if(is_dir($dir3)) rmdir($dir3);
// 步骤4: 测试包含module文件的插件包
$ext4 = 'test_module_pkg';
$dir4 = $pkgRoot . $ext4 . DS;
$modDir4 = $dir4 . 'module' . DS . 'testcopy' . DS;
if(!is_dir($modDir4)) mkdir($modDir4, 0777, true);
file_put_contents($modDir4 . 'test.php', '<?php');
$result4 = $extensionTest->copyPackageFilesTest($ext4);
r(count($result4) > 0) && p() && e('1');
$targetDir4 = $app->getAppRoot() . 'module' . DS . 'testcopy' . DS;
if(file_exists($targetDir4 . 'test.php')) unlink($targetDir4 . 'test.php');
if(is_dir($targetDir4)) rmdir($targetDir4);
if(file_exists($modDir4 . 'test.php')) unlink($modDir4 . 'test.php');
if(is_dir($modDir4)) rmdir($modDir4);
if(is_dir($dir4 . 'module')) rmdir($dir4 . 'module');
if(is_dir($dir4)) rmdir($dir4);
// 步骤5: 测试返回值MD5格式
$ext5 = 'test_md5_pkg';
$dir5 = $pkgRoot . $ext5 . DS;
$cfgDir5 = $dir5 . 'config' . DS;
if(!is_dir($cfgDir5)) mkdir($cfgDir5, 0777, true);
file_put_contents($cfgDir5 . 'test.php', '<?php');
$result5 = $extensionTest->copyPackageFilesTest($ext5);
$md5Len = 0;
foreach($result5 as $file => $md5) { $md5Len = strlen($md5); break; }
r($md5Len) && p() && e('32');
$targetCfg5 = $app->getAppRoot() . 'config' . DS;
foreach($result5 as $file => $md5) if(file_exists($file)) unlink($file);
if(file_exists($cfgDir5 . 'test.php')) unlink($cfgDir5 . 'test.php');
if(is_dir($cfgDir5)) rmdir($cfgDir5);
if(is_dir($dir5)) rmdir($dir5);