MCPcopy Create free account
hub / github.com/LanceLRQ/deer-executor / runTestCaseGen

Function runTestCaseGen

client/packmgr/generator.go:21–68  ·  view source on GitHub ↗

运行测试数据生成

(session *executor.JudgeSession, tCase *structs.TestCase, withAnswer bool)

Source from the content-addressed store, hash-verified

19
20// 运行测试数据生成
21func runTestCaseGen(session *executor.JudgeSession, tCase *structs.TestCase, withAnswer bool) error {
22 // 如果是generator脚本
23 if tCase.UseGenerator {
24 ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
25 defer cancel()
26 inbytes, err := utils.CallGenerator(ctx, tCase, session.ConfigDir)
27 if err != nil {
28 return err
29 }
30 // 写入到文件
31 err = ioutil.WriteFile(path.Join(session.ConfigDir, tCase.Input), inbytes, 0664)
32 if err != nil {
33 return err
34 }
35 log.Printf("[generator] generate input done!")
36 }
37 if withAnswer {
38 fin, err := os.Open(path.Join(session.ConfigDir, tCase.Input))
39 if err != nil {
40 return err
41 }
42 fout, err := os.Create(path.Join(session.ConfigDir, tCase.Output))
43 if err != nil {
44 return err
45 }
46 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
47 defer cancel()
48 rel, err := utils.RunUnixShell(&structs.ShellOptions{
49 Context: ctx,
50 Name: session.Commands[0],
51 Args: session.Commands[1:],
52 StdWriter: &structs.ShellWriters{
53 Input: fin,
54 Output: fout,
55 Error: nil,
56 },
57 })
58 if err != nil {
59 return err
60 }
61 if !rel.Success {
62 log.Printf("[generator] run answer code error: %s", rel.Stderr)
63 return errors.Errorf("[generator] run answer code error: %s", rel.Stderr)
64 }
65 log.Printf("[generator] generate answer done!")
66 }
67 return nil
68}
69
70// 运行test cases的数据生成
71// caseIndex < 0 表示校验全部

Callers 1

runTestCaseGeneratorFunction · 0.85

Calls 3

CallGeneratorFunction · 0.92
RunUnixShellFunction · 0.92
ErrorfMethod · 0.80

Tested by

no test coverage detected