试用前走查的修改:报错看得见、学生找得到作业、运行区和设计器的若干体验问题
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s

- 运行区:编译错误、运行异常、控制台输出和保存的图片移到窗体下面,不再被实训台挤成 0 高;缩放和放大按钮移到桌面上方,不压窗体的关闭按钮;放大后也能停止程序;点停止后清掉窗体
- 运行异常:常见 .NET 异常配中文说明,显示出错的文件、行号和方法,点击跳到代码
- 运行中的下拉列表挂到页面最外层,能伸出窗体和分组框(小窗体也能选到 COM4、COM5)
- 学生登录后进"我的作业";任务面板从工具栏下面开始,不挡导航;记住上次做的实验,从数据库页面返回、恢复数据时默认用它
- 代码页和设计页左栏都占 3/5,文件标签放不下时换行;实验选择框加宽;关闭粘性滚动
- 设计器:双击生成的事件方法带缩进;双击工具箱放进选中控件所在的容器并错开位置;新控件比容器宽时按比例缩小;无边框窗体不画标题栏
- 中文界面:代码编辑器(查找替换等)、属性窗口的颜色选项
- SQL:DATEADD、DATEDIFF、DATEPART 的日期单位(day、hour)解析成 IdentifierLiteral 时报"不支持",补上
- 项目 8 的预置环境数据改成建库那天之前的 7 天;p6-t3 评分项改为"按日期查询环境数据"
- 没有 AI 建议时不显示"全部采纳 AI 建议"和相关说明;导出 CSV 只给纯数字的文字加制表符

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-27 08:49:42 +08:00
1 parent da623fa648
commit f6024dc113
30 files changed
+537 -255

No files matched your search

+41
View File
@@ -806,3 +806,44 @@ test.skipIf(config.sandbox === 'none')(
},
30000,
)
test('运行时异常:常见的 .NET 异常配中文说明,带出错的文件、行号和方法', async () => {
const { runner } = await runMain(
'exception',
`
Console.WriteLine("start");
int n = int.Parse("abc");`,
)
const error = await runner.next('exception')
expect(error.message).toStartWith('文字转换成数字或日期时格式不对')
expect(error.message).toContain('System.FormatException')
expect(error).toMatchObject({ file: 'Program.cs', line: 11 })
expect(error.detail).toBe('出错位置:Program.cs 第 11 行(Main 方法)')
}, 30000)
test('数据库:DATEADD、DATEDIFF、DATEPART 的日期单位写成关键字(day、hour)', async () => {
const dbDir = resolve(ROOT, '.runs', 'test-dateadd-db')
await rm(dbDir, { recursive: true, force: true })
await mkdir(dbDir, { recursive: true })
const { runner } = await runMain(
'dateadd',
`
var master = new SqlConnection("Data Source=.;User ID=sa");
master.Open();
new SqlCommand("CREATE DATABASE T", master).ExecuteNonQuery();
var conn = new SqlConnection("Data Source=.;Initial Catalog=T");
conn.Open();
foreach (var sql in new[] {
"SELECT DATEADD(hour, 8, DATEADD(day, -7, '2024-01-16'))",
"SELECT DATEDIFF(day, '2024-01-01 23:00', '2024-01-02 01:00')",
"SELECT DATEPART(hh, '2024-01-16 09:05:03')",
})
Console.WriteLine("result=" + new SqlCommand(sql, conn).ExecuteScalar());`,
'using System.Data.SqlClient;',
dbDir,
)
await runner.finished()
const output = runner.messages.flatMap((m) => (m.type === 'console' ? [m.text] : [])).join('')
expect(runner.messages.filter((m) => m.type === 'exception')).toEqual([])
expect(output).toBe('result=2024/1/9 8:00:00\nresult=1\nresult=9\n')
}, 30000)