ThinkAdmin/tests/path-functions-test.php
Anyon 4e2b7ab2fc test(quality): 增加 v8 回归测试与静态分析配置
补齐 v8 分支的自动化质量保障,使插件化迁移、发布安装和架构边界都能在目标仓库内验证。

主要内容:

- 新增 PHPUnit 配置和 smoke 测试,覆盖发布、安装与 think 命令加载。

- 新增根级 tests 用例,验证路由、构建器、插件边界和业务集成行为。

- 新增 PHPStan 配置与运行时 stub,避免 Composer 插件环境误报。

- 保留旧包、旧 View 和旧 helper 命名空间的防回归检查。
2026-05-08 15:31:09 +08:00

85 lines
3.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
/**
* +----------------------------------------------------------------------
* | ThinkAdmin Plugin for ThinkAdminDeveloper
* +----------------------------------------------------------------------
* | Copyright (c) 2014~2026 ThinkAdmin [ thinkadmin.top ]
* +----------------------------------------------------------------------
* | Official Website: https://thinkadmin.top
* +----------------------------------------------------------------------
* | Licensed: https://mit-license.org
* | Disclaimer: https://thinkadmin.top/disclaimer
* | Vip Rights: https://thinkadmin.top/vip-introduce
* +----------------------------------------------------------------------
* | Gitee Repository: https://gitee.com/zoujingli/ThinkAdmin
* | Github Repository: https://github.com/zoujingli/ThinkAdmin
* +----------------------------------------------------------------------
*/
// 加载基础文件
require __DIR__ . '/vendor/autoload.php';
use think\admin\Library;
use think\App;
// 初始化应用
$app = new App(__DIR__);
Library::$sapp = $app;
echo "========================================\n";
echo "路径函数测试\n";
echo "========================================\n\n";
// 测试环境判断
echo "【环境判断测试】\n";
echo 'is_phar(): ' . (is_phar() ? 'true' : 'false') . "\n";
echo 'Phar::running(): ' . (Phar::running() ?: 'empty') . "\n";
echo 'Phar::running(false): ' . (Phar::running(false) ?: 'empty') . "\n\n";
// 测试 syspath
echo "【syspath 测试 - 系统路径(代码/资源)】\n";
echo 'syspath(): ' . syspath() . "\n";
echo "syspath('app'): " . syspath('app') . "\n";
echo "syspath('config'): " . syspath('config') . "\n";
echo "syspath('vendor'): " . syspath('vendor') . "\n";
echo "syspath('runtime'): " . syspath('runtime') . "\n";
echo "syspath('public'): " . syspath('public') . "\n";
echo "syspath('.env'): " . syspath('.env') . "\n\n";
// 测试 runpath
echo "【runpath 测试 - 运行路径(可写数据)】\n";
echo 'runpath(): ' . runpath() . "\n";
echo "runpath('runtime'): " . runpath('runtime') . "\n";
echo "runpath('public'): " . runpath('public') . "\n";
echo "runpath('.env'): " . runpath('.env') . "\n";
echo "runpath('database'): " . runpath('database') . "\n";
echo "runpath('safefile'): " . runpath('safefile') . "\n\n";
// 路径对比分析
echo "【路径对比分析】\n";
$paths = ['app', 'config', 'vendor', 'runtime', 'public', '.env', 'database'];
echo "提示在普通环境下syspath 和 runpath 返回相同路径\n";
echo " 在 PHAR 环境下syspath 返回 phar:// 路径runpath 返回外部路径\n\n";
foreach ($paths as $path) {
$sys = syspath($path);
$run = runpath($path);
$same = $sys === $run ? '相同' : '不同';
$sysProto = str_starts_with($sys, 'phar://') ? 'phar' : 'file';
$runProto = str_starts_with($run, 'phar://') ? 'phar' : 'file';
echo sprintf(
"%-12s | syspath(%-4s): %-55s [%s] | runpath: %-60s [%s] | %s\n",
$path,
$path,
basename($sys),
$sysProto,
basename($run),
$runProto,
$same
);
}
echo "\n========================================\n";
echo "测试完成\n";
echo "========================================\n";