Files
judge/dsl/ast.go
Mikhail Kornilovich 8cf2584ce5
Some checks failed
go-test / go test (push) Successful in 12s
Release / Build & publish (push) Failing after 1m7s
make max output settings
2026-06-10 11:37:59 +03:00

111 lines
2.3 KiB
Go

package dsl
import (
"time"
)
type File struct {
Build string
BuildLinux string
BuildWindows string
BuildDarwin string
BuildDefaults *BuildConfig
Builds []*BuildConfig
Toolchains []*ToolchainSpec
Timeout time.Duration
MemoryLimit int64
Binary string
Sources string
// MaxOutput caps captured stdout/stderr per test (bytes). Zero means use the
// runner default. Raise it for suites whose expected output is large.
MaxOutput int64
NormalizeCRLF bool
TrimTrailingWS bool
Groups []*Group
}
type Group struct {
Name string
Weight float64
Timeout time.Duration
MemoryLimit int64
Env map[string]string
Scoring ScoringMode
Wrapper string
Tests []*Test
Pattern *Pattern
}
type ScoringMode int
const (
ScoringPartial ScoringMode = iota
ScoringAllOrNone
)
type Pattern struct {
InputGlob string
OutputGlob string
DirsGlob string
InputFile string
OutputFile string
// StageAll, valid only in dir mode, stages every file found in each matched
// directory into the test's working directory (basenames preserved), except
// the OutputFile and ArgsFile. Use it when the program discovers its own
// inputs in the working directory instead of receiving a single input file.
StageAll bool
// ArgsFile, valid only in dir mode, reads the program arguments from this
// file inside each matched directory (whitespace-separated). It takes
// precedence over Args. Placeholders are still substituted.
ArgsFile string
Args []string
}
func (p *Pattern) IsDirMode() bool {
return p.DirsGlob != ""
}
type Test struct {
Name string
Timeout time.Duration
MemoryLimit int64
Env map[string]string
Wrapper string
Stdin *string
Args []string
InFiles map[string]string
ExitCode *int
Stdout Matcher
Stderr Matcher
OutFiles map[string]string
}
func (t *Test) SetInputFile(inputName string, inputContent []byte) {
t.InFiles[inputName] = string(inputContent)
}
func (t *Test) SetStdin(inputContent []byte) {
s := string(inputContent)
t.Stdin = &s
}
func (t *Test) SetOutputFile(outputName string, outputContent []byte) {
t.OutFiles[outputName] = string(outputContent)
t.Stdout = NoMatcher{}
}
func (t *Test) SetStdout(outputContent []byte) {
t.Stdout = ExactMatcher{Value: string(outputContent)}
}