From 76eab0ff6cac312b40cebf0b97adfcaed7178272 Mon Sep 17 00:00:00 2001 From: fly6516 Date: Tue, 25 Feb 2025 11:29:14 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BC=98=E5=8C=96=E4=BA=86enhance?= =?UTF-8?q?dmultiFileRunner.ts=E7=9A=84=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=E5=85=B6=E8=83=BD=E5=85=BC=E5=AE=B9=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actions/enhancedmultiFileRunner.ts | 14 ++---- src/app/page.tsx | 59 ++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/actions/enhancedmultiFileRunner.ts b/src/actions/enhancedmultiFileRunner.ts index 769f644..0d2ce97 100644 --- a/src/actions/enhancedmultiFileRunner.ts +++ b/src/actions/enhancedmultiFileRunner.ts @@ -183,17 +183,11 @@ export const runMultiFileCodeWithOptionalTestData = async (params: { return { error: `Execution failed with exit code ${exitCode.StatusCode}. Output: ${output}` }; } - // 如果指定了结果输出文件和正确答案文件,执行比较 - if (resultOutputFile && expectedAnswerFiles && expectedAnswerFiles.length > 0) { + // 如果指定了结果输出文件,读取其内容 + if (resultOutputFile) { const resultFilePath = path.join(tempDir, resultOutputFile); - - const comparisonResults = await Promise.all(expectedAnswerFiles.map(async (expectedFile) => { - const expectedFilePath = path.join(tempDir, testDataPath, expectedFile); - const isMatch = await compareResults(resultFilePath, expectedFilePath); - return { expectedFile, isMatch }; - })); - - return { output, comparisonResults }; + const resultFileContent = await fs.readFile(resultFilePath, 'utf-8'); + return { output, resultFileContent }; } return { output }; diff --git a/src/app/page.tsx b/src/app/page.tsx index d2943eb..4a89d62 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,19 +1,21 @@ 'use client'; import React, { useState } from 'react'; -import path from 'path'; -import fs from 'fs'; import { runMultiFileCodeWithOptionalTestData } from '@/actions/enhancedmultiFileRunner'; const TestPage = () => { const [code, setCode] = useState(''); const [language, setLanguage] = useState('c'); const [result, setResult] = useState(''); + const [consoleOutput, setConsoleOutput] = useState(''); const [loading, setLoading] = useState(false); + const [resultFileContent, setResultFileContent] = useState(''); const handleRun = async () => { setLoading(true); setResult(''); + setConsoleOutput(''); + setResultFileContent(''); const testFiles = [ { name: 'input1.txt', content: '1 2 3' }, @@ -39,10 +41,21 @@ const TestPage = () => { resultOutputFile: 'result.txt', }); - setResult(JSON.stringify(result, null, 2)); + if (result.error) { + setConsoleOutput(result.error); + } else { + setConsoleOutput(result.output); + if (result.comparisonResults) { + setResult(JSON.stringify(result.comparisonResults, null, 2)); + } + + // 设置 result.txt 的内容 + if (result.resultFileContent) { + setResultFileContent(result.resultFileContent); + } + } } catch (error) { - // 使用类型断言确保 error 是 Error 类型 - setResult(`Error: ${(error as Error).message}`); + setConsoleOutput(`Error: ${(error as Error).message}`); } finally { setLoading(false); } @@ -91,7 +104,7 @@ const TestPage = () => { {loading ? 'Running...' : 'Run Code'}
-

Result

+

Console Output

 {
                         borderRadius: '5px',
                     }}
                 >
-          {result || 'No results yet.'}
-        
+ {consoleOutput || 'No console output yet.'} +
+ {result && ( +
+

Result

+
+                        {result || 'No results yet.'}
+                    
+
+ )} + {resultFileContent && ( +
+

Result File Content (result.txt)

+
+                        {resultFileContent || 'No result file content yet.'}
+                    
+
+ )} ); };