internal/relui: render artifacts without targets
Some of our older artifact results may not have a target. We should
still be able to render the page regardless.
Cleans up a duplicative variable in the home template.
For golang/go#53295
Change-Id: I55f56bb1dd71b828c262869173af34e95799d6fa
Reviewed-on: https://go-review.googlesource.com/c/build/+/413580
Run-TryBot: Alex Rakoczy <alex@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Alex Rakoczy <alex@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
diff --git a/internal/relui/templates/task_list.html b/internal/relui/templates/task_list.html
index b5df9c5..a2882ab 100644
--- a/internal/relui/templates/task_list.html
+++ b/internal/relui/templates/task_list.html
@@ -112,35 +112,38 @@
{{end}}
{{define "itemResult"}}
- {{$resultDetail := .}}
- {{if eq $resultDetail.Kind "Artifact"}}
+ {{if eq .Kind "Artifact"}}
<dl class="TaskList-itemResultDetailList">
<dt class="TaskList-itemResultTerm">Name</dt>
<dd class="TaskList-itemResultDefinition">
- {{$resultDetail.Artifact.Target.Name}}
+ {{with .Artifact.Target}}
+ {{.Name}}
+ {{else}}
+ {{.Artifact.Filename}}
+ {{end}}
</dd>
<dt class="TaskList-itemResultTerm">Filename</dt>
<dd class="TaskList-itemResultDefinition">
- {{$resultDetail.Artifact.Filename}}
+ {{.Artifact.Filename}}
</dd>
<dt class="TaskList-itemResultTerm">ScratchPath</dt>
<dd class="TaskList-itemResultDefinition">
- {{$resultDetail.Artifact.ScratchPath}}
+ {{.Artifact.ScratchPath}}
</dd>
<dt class="TaskList-itemResultTerm">StagingPath</dt>
<dd class="TaskList-itemResultDefinition">
- {{$resultDetail.Artifact.StagingPath}}
+ {{.Artifact.StagingPath}}
</dd>
</dl>
- {{else if eq $resultDetail.Kind "Artifacts"}}
+ {{else if eq .Kind "Artifacts"}}
<dt class="TaskList-itemResultTerm">Filenames</dt>
<dd class="TaskList-itemResultDefinition">
- {{range $artifact := $resultDetail.Artifacts}}
+ {{range $artifact := .Artifacts}}
{{$artifact.Filename}} <span class="TaskList-itemResultArtifactSize">{{prettySize $artifact.Size}}</span>
{{end}}
</dd>
- {{else if eq $resultDetail.Kind "Outputs"}}
- {{range $key, $value := $resultDetail.Outputs}}
+ {{else if eq .Kind "Outputs"}}
+ {{range $key, $value := .Outputs}}
<dt class="TaskList-itemResultTerm">
{{$key}}
</dt>
@@ -148,8 +151,8 @@
{{template "itemResult" $value}}
</dd>
{{end}}
- {{else if eq $resultDetail.Kind "JSON"}}
- {{range $key, $value := $resultDetail.JSON}}
+ {{else if eq .Kind "JSON"}}
+ {{range $key, $value := .JSON}}
<dt class="TaskList-itemResultTerm">
{{$key}}
</dt>
@@ -157,12 +160,12 @@
{{$value}}
</dd>
{{end}}
- {{else if eq $resultDetail.Kind "String"}}
+ {{else if eq .Kind "String"}}
<dt class="TaskList-itemResultTerm">
String
</dt>
<dd class="TaskList-itemResultDefinition TaskList-itemResultDefinition--string">
- {{$resultDetail.String}}
+ {{.String}}
</dd>
{{end}}
{{end}}
diff --git a/internal/relui/web_test.go b/internal/relui/web_test.go
index 6060e73..6d4638c 100644
--- a/internal/relui/web_test.go
+++ b/internal/relui/web_test.go
@@ -26,6 +26,7 @@
"github.com/google/uuid"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/pgxpool"
+ "golang.org/x/build/internal/releasetargets"
"golang.org/x/build/internal/relui/db"
"golang.org/x/build/internal/workflow"
)
@@ -105,7 +106,11 @@
if _, err := q.CreateWorkflow(ctx, wf); err != nil {
t.Fatalf("CreateWorkflow(_, %v) = _, %v, wanted no error", wf, err)
}
- tp := db.CreateTaskParams{WorkflowID: wf.ID, Name: "TestTask"}
+ tp := db.CreateTaskParams{
+ WorkflowID: wf.ID,
+ Name: "TestTask",
+ Result: nullString(`{"Filename": "foo.exe"}`),
+ }
if _, err := q.CreateTask(ctx, tp); err != nil {
t.Fatalf("CreateTask(_, %v) = _, %v, wanted no error", tp, err)
}
@@ -791,6 +796,18 @@
wantKind: "String",
},
{
+ desc: "artifact",
+ input: `{"Filename": "foo.exe", "Target": {"Name": "windows-test"}}`,
+ want: &resultDetail{Artifact: artifact{Filename: "foo.exe", Target: &releasetargets.Target{Name: "windows-test"}}},
+ wantKind: "Artifact",
+ },
+ {
+ desc: "artifact missing target",
+ input: `{"Filename": "foo.exe"}`,
+ want: &resultDetail{Artifact: artifact{Filename: "foo.exe"}},
+ wantKind: "Artifact",
+ },
+ {
desc: "nested json string",
input: `{"SomeOutput": "hello"}`,
want: &resultDetail{Outputs: map[string]*resultDetail{"SomeOutput": {String: "hello"}}},