@@ -13,61 +13,73 @@ import (
1313 "schedctl/internal/schedulers"
1414)
1515
16+ const (
17+ rustyImage = "ghcr.io/schedkit/scx_rusty:latest"
18+ rustyDigest = "sha256:abc"
19+ rustyName = "scx_rusty"
20+ rustyDescription = "Rust user-space scheduler"
21+ rustyDocs = "https://example.com/docs"
22+ rustySource = "https://github.com/sched-ext/scx"
23+ rustyVersion = "1.0.0"
24+ rustyKernelMin = "6.12"
25+ sparseImage = "ghcr.io/example/sparse:latest"
26+ )
27+
1628func TestBuildPopulatesAllCuratedFields (t * testing.T ) {
1729 created := time .Date (2026 , 4 , 1 , 12 , 0 , 0 , 0 , time .UTC )
1830 img := schedulers.SchedulerImage {
19- ImageURI : "ghcr.io/schedkit/scx_rusty:latest" ,
31+ ImageURI : rustyImage ,
2032 Source : schedulers .SourceManifest ,
2133 }
2234 raw := schedulers.ImageInfo {
23- ImageRef : "ghcr.io/schedkit/scx_rusty:latest" ,
24- Digest : "sha256:abc" ,
35+ ImageRef : rustyImage ,
36+ Digest : rustyDigest ,
2537 Created : & created ,
2638 Architecture : "amd64" ,
2739 OS : "linux" ,
2840 Labels : map [string ]string {
29- info .LabelTitle : "scx_rusty" ,
30- info .LabelDescription : "Rust user-space scheduler" ,
31- info .LabelDocumentation : "https://example.com/docs" ,
32- info .LabelSource : "https://github.com/sched-ext/scx" ,
33- info .LabelVersion : "1.0.0" ,
41+ info .LabelTitle : rustyName ,
42+ info .LabelDescription : rustyDescription ,
43+ info .LabelDocumentation : rustyDocs ,
44+ info .LabelSource : rustySource ,
45+ info .LabelVersion : rustyVersion ,
3446 info .LabelRevision : "deadbee" ,
3547 info .LabelAuthors : "scx team" ,
3648 info .LabelLicenses : "GPL-2.0" ,
3749 info .LabelVendor : "schedkit" ,
38- info .LabelKernelMin : "6.12" ,
50+ info .LabelKernelMin : rustyKernelMin ,
3951 },
4052 }
4153
42- r := info .Build ("scx_rusty" , img , raw )
54+ r := info .Build (rustyName , img , raw )
4355
4456 assert .Equal (t , info .SchemaVersion , r .SchemaVersion )
45- assert .Equal (t , "scx_rusty" , r .Scheduler )
57+ assert .Equal (t , rustyName , r .Scheduler )
4658 assert .Equal (t , "manifest" , r .Source )
47- assert .Equal (t , "ghcr.io/schedkit/scx_rusty:latest" , r .ImageRef )
48- assert .Equal (t , "sha256:abc" , r .Digest )
59+ assert .Equal (t , rustyImage , r .ImageRef )
60+ assert .Equal (t , rustyDigest , r .Digest )
4961 assert .Equal (t , & created , r .Created )
5062 assert .Equal (t , "amd64" , r .Architecture )
5163 assert .Equal (t , "linux" , r .OS )
52- assert .Equal (t , "scx_rusty" , r .Title )
53- assert .Equal (t , "Rust user-space scheduler" , r .Description )
54- assert .Equal (t , "https://example.com/docs" , r .Documentation )
55- assert .Equal (t , "https://github.com/sched-ext/scx" , r .SourceURL )
56- assert .Equal (t , "1.0.0" , r .Version )
64+ assert .Equal (t , rustyName , r .Title )
65+ assert .Equal (t , rustyDescription , r .Description )
66+ assert .Equal (t , rustyDocs , r .Documentation )
67+ assert .Equal (t , rustySource , r .SourceURL )
68+ assert .Equal (t , rustyVersion , r .Version )
5769 assert .Equal (t , "deadbee" , r .Revision )
5870 assert .Equal (t , "scx team" , r .Authors )
5971 assert .Equal (t , "GPL-2.0" , r .Licenses )
6072 assert .Equal (t , "schedkit" , r .Vendor )
61- assert .Equal (t , "6.12" , r .KernelMin )
73+ assert .Equal (t , rustyKernelMin , r .KernelMin )
6274}
6375
6476func TestBuildOmitsMissingLabels (t * testing.T ) {
6577 img := schedulers.SchedulerImage {
66- ImageURI : "ghcr.io/example/sparse:latest" ,
78+ ImageURI : sparseImage ,
6779 Source : schedulers .SourceDirect ,
6880 }
6981 raw := schedulers.ImageInfo {
70- ImageRef : "ghcr.io/example/sparse:latest" ,
82+ ImageRef : sparseImage ,
7183 Labels : map [string ]string {
7284 info .LabelTitle : "sparse" ,
7385 },
@@ -103,11 +115,11 @@ func TestBuildWithEmptyLabelMap(t *testing.T) {
103115func TestWriteJSONOmitsEmptyFields (t * testing.T ) {
104116 r := info.Report {
105117 SchemaVersion : info .SchemaVersion ,
106- Scheduler : "scx_rusty" ,
118+ Scheduler : rustyName ,
107119 Source : "manifest" ,
108- ImageRef : "ghcr.io/schedkit/scx_rusty:latest" ,
109- Digest : "sha256:abc" ,
110- Title : "scx_rusty" ,
120+ ImageRef : rustyImage ,
121+ Digest : rustyDigest ,
122+ Title : rustyName ,
111123 }
112124 var buf bytes.Buffer
113125 err := info .WriteJSON (& buf , r )
@@ -116,8 +128,8 @@ func TestWriteJSONOmitsEmptyFields(t *testing.T) {
116128 var decoded map [string ]any
117129 assert .NoError (t , json .Unmarshal (buf .Bytes (), & decoded ))
118130 assert .Equal (t , "1" , decoded ["schema_version" ])
119- assert .Equal (t , "scx_rusty" , decoded ["scheduler" ])
120- assert .Equal (t , "sha256:abc" , decoded ["digest" ])
131+ assert .Equal (t , rustyName , decoded ["scheduler" ])
132+ assert .Equal (t , rustyDigest , decoded ["digest" ])
121133 _ , hasEmpty := decoded ["description" ]
122134 assert .False (t , hasEmpty , "empty fields should be omitted from JSON" )
123135 _ , hasKernel := decoded ["kernel_min_version" ]
@@ -126,29 +138,29 @@ func TestWriteJSONOmitsEmptyFields(t *testing.T) {
126138
127139func TestWriteTextIncludesKeyFields (t * testing.T ) {
128140 r := info.Report {
129- Scheduler : "scx_rusty" ,
130- Title : "scx_rusty" ,
131- Description : "Rust user-space scheduler" ,
132- ImageRef : "ghcr.io/schedkit/scx_rusty:latest" ,
133- Digest : "sha256:abc" ,
134- KernelMin : "6.12" ,
135- Documentation : "https://example.com/docs" ,
136- SourceURL : "https://github.com/sched-ext/scx" ,
137- Version : "1.0.0" ,
141+ Scheduler : rustyName ,
142+ Title : rustyName ,
143+ Description : rustyDescription ,
144+ ImageRef : rustyImage ,
145+ Digest : rustyDigest ,
146+ KernelMin : rustyKernelMin ,
147+ Documentation : rustyDocs ,
148+ SourceURL : rustySource ,
149+ Version : rustyVersion ,
138150 }
139151 var buf bytes.Buffer
140152 info .WriteText (& buf , r )
141153 out := buf .String ()
142154
143155 for _ , want := range []string {
144- "scx_rusty" ,
145- "Rust user-space scheduler" ,
146- "ghcr.io/schedkit/scx_rusty:latest" ,
147- "sha256:abc" ,
148- "6.12" ,
149- "https://example.com/docs" ,
150- "https://github.com/sched-ext/scx" ,
151- "1.0.0" ,
156+ rustyName ,
157+ rustyDescription ,
158+ rustyImage ,
159+ rustyDigest ,
160+ rustyKernelMin ,
161+ rustyDocs ,
162+ rustySource ,
163+ rustyVersion ,
152164 } {
153165 assert .True (t , strings .Contains (out , want ), "expected text output to contain %q" , want )
154166 }
0 commit comments