高级
工具镜像

工具镜像

我们提供了一些工具类的容器镜像,为用户使用 Seele 提供了方便。

diff-scripts 镜像

镜像的源文件位于 images/diff-scripts (opens in a new tab)。可在评测任务中使用 image: darkyzhou/diff-scripts 引用此镜像。

diff-scripts 提供了两个脚本文件 diff-strictdiff-loose,用于对比评测程序的输出内容和标准答案内容之间是否存在差异,它们基于 GNU 的 diffutils。

diff-strict

检查当前目录的 user.outstandard.out 文件内容是否完全一致。

  • 若存在除了末尾空白字符和数量不同的空白字符外的差异,退出码为 8
  • 仅存在末尾空白字符或数量不同的空白字符上的差异,退出码为 9
  • 若不存在差异,退出码为 0
  • 若文件不存在,退出码为 1

diff-loose

检查当前目录的 user.outstandard.out 文件内容是否基本一致。

  • 若存在除了末尾空白字符、数量不同的空白字符以及数量不同的空行外的差异,退出码为 8
  • 若不存在上述差异,退出码为 0
  • 若文件不存在,退出码为 1

使用方法

脚本文件总是固定使用当前目录的 user.out 文件作为评测程序的输出内容,使用 standard.out 作为标准答案内容。我们在使用执行任务时可以通过 files 属性来修改挂载文件的名称。

下面的例子展示了 diff-loose 的使用方法,diff-strict 的使用同理。在这个例子中,我们将评测程序的输出流重定向到文件 __user_output 中,然后结合答案文件 __answer 挂载到工具镜像中进行比较。

steps:
  run:
    # ...
    fd:
      stdout: "__user_output"
 
  compare:
    action: "seele/run-judge/run@1"
    image: "harbor.matrix.moe/docker.io/darkyzhou/diff-scripts"
    command: "diff-loose"
    files:
        - "__user_output:user.out"
        - "__answer:standard.out"