From bdbb348297d3f7b6de930a55d85cb9dca9e33b2a Mon Sep 17 00:00:00 2001 From: liugang Date: Mon, 8 Sep 2025 22:28:09 +0800 Subject: [PATCH] + [misc] Add unit tests for metricModel::saveLogs() 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 --- .../metric/test/lib/metric.unittest.class.php | 36 +++++++++++++++ module/metric/test/model/savelogs.php | 44 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100755 module/metric/test/model/savelogs.php diff --git a/module/metric/test/lib/metric.unittest.class.php b/module/metric/test/lib/metric.unittest.class.php index 6e4268dfd9..0dbe39f6ad 100644 --- a/module/metric/test/lib/metric.unittest.class.php +++ b/module/metric/test/lib/metric.unittest.class.php @@ -330,4 +330,40 @@ class metricTest return $result; } + + /** + * Test saveLogs method. + * + * @param string $log + * @access public + * @return mixed + */ + public function saveLogsTest($log = '') + { + $logFile = $this->objectModel->getLogFile(); + $originalExists = file_exists($logFile); + $originalContent = $originalExists ? file_get_contents($logFile) : ''; + + $this->objectModel->saveLogs($log); + if(dao::isError()) return dao::getError(); + + $result = array(); + $result['fileExists'] = file_exists($logFile); + + if($result['fileExists']) { + $content = file_get_contents($logFile); + $result['hasPhpHeader'] = !$originalExists && strpos($content, "") === 0; + $result['hasTimestamp'] = preg_match('/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/', $content); + $result['hasLogContent'] = strpos($content, trim($log)) !== false; + + // Clean up: restore original content or remove file + if($originalExists) { + file_put_contents($logFile, $originalContent); + } else { + unlink($logFile); + } + } + + return $result; + } } \ No newline at end of file diff --git a/module/metric/test/model/savelogs.php b/module/metric/test/model/savelogs.php new file mode 100755 index 0000000000..d65da51128 --- /dev/null +++ b/module/metric/test/model/savelogs.php @@ -0,0 +1,44 @@ +#!/usr/bin/env php +saveLogsTest('Test log message')) && p('fileExists,hasTimestamp,hasLogContent') && e('1,1,1'); // 步骤1:正常情况 +r($metricTest->saveLogsTest('')) && p('fileExists,hasTimestamp') && e('1,1'); // 步骤2:空字符串 +r($metricTest->saveLogsTest('Log with special chars: @#$%^&*()')) && p('fileExists,hasLogContent') && e('1,1'); // 步骤3:特殊字符 +r($metricTest->saveLogsTest("Multi\nline\nlog\ncontent")) && p('fileExists,hasLogContent') && e('1,1'); // 步骤4:多行内容 +r($metricTest->saveLogsTest('Another log entry')) && p('fileExists,hasLogContent') && e('1,1'); // 步骤5:追加写入 \ No newline at end of file