@@ -22,127 +22,173 @@ import (
2222
2323func TestTranslateAtom (t * testing.T ) {
2424 cases := []struct {
25- name string
26- atom string
27- want string
28- wantError bool
25+ name string
26+ atom keyValue
27+ want string
28+ wantTarget string
2929 }{
3030 {
31- name : "empty" ,
32- atom : "" ,
33- want : "" ,
34- },
35- {
36- name : "basic" ,
37- atom : `target:"//my-target"` ,
38- want : `id.target_id="//my-target"` ,
31+ name : "label atom" ,
32+ atom : keyValue {"label" , "foo" },
33+ want : `invocation_attributes.labels:"foo"` ,
34+ wantTarget : `invocation.invocation_attributes.labels:"foo"` ,
3935 },
4036 {
41- name : "case-sensitive key" ,
42- atom : `TARGET:"//MY-TARGET"` ,
43- wantError : true ,
37+ name : "target atom" ,
38+ atom : keyValue {"target" , "//my-target" },
39+ want : `id.target_id="//my-target"` ,
40+ wantTarget : `id.target_id="//my-target"` ,
4441 },
42+ }
43+
44+ for _ , tc := range cases {
45+ t .Run (tc .name , func (t * testing.T ) {
46+ // Invocation queries (queryTarget = false)
47+ got , err := translateAtom (tc .atom , false )
48+ if err != nil {
49+ t .Fatalf ("translateAtom(%q, %t) errored: %v" , tc .atom , false , err )
50+ }
51+ if tc .want != got {
52+ t .Errorf ("translateAtom(%q, %t) differed; got %q, want %q" , tc .atom , false , got , tc .want )
53+ }
54+ // Configured Target queries (queryTarget = true)
55+ gotTarget , err := translateAtom (tc .atom , true )
56+ if err != nil {
57+ t .Fatalf ("translateAtom(%q, %t) errored: %v" , tc .atom , true , err )
58+ }
59+ if tc .wantTarget != gotTarget {
60+ t .Errorf ("translateAtom(%q, %t) differed; got %q, want %q" , tc .atom , true , gotTarget , tc .wantTarget )
61+ }
62+ })
63+ }
64+ }
65+
66+ func TestTranslateAtom_Error (t * testing.T ) {
67+ cases := []struct {
68+ name string
69+ atom keyValue
70+ }{
4571 {
46- name : "multiple colons" ,
47- atom : `target:"//path/to:my-target"` ,
48- want : `id.target_id="//path/to:my-target"` ,
72+ name : "empty" ,
73+ atom : keyValue {"" , "" },
4974 },
5075 {
51- name : "unquoted" ,
52- atom : `target://my-target` ,
53- want : `id.target_id="//my-target"` ,
76+ name : "case-sensitive key" ,
77+ atom : keyValue {"TARGET" , "//MY-TARGET" },
5478 },
5579 {
56- name : "partial quotes" ,
57- atom : `target://my-target"` ,
58- want : `id.target_id="//my-target"` ,
80+ name : "missing key" ,
81+ atom : keyValue {"" , "//path/to:my-target" },
5982 },
6083 {
61- name : "not enough parts" ,
62- atom : "target" ,
63- wantError : true ,
84+ name : "missing value" ,
85+ atom : keyValue {"target" , "" },
6486 },
6587 {
66- name : "unknown atom" ,
67- atom : "label:foo" ,
68- wantError : true ,
88+ name : "unknown atom" ,
89+ atom : keyValue {"custom-property" , "foo" },
6990 },
7091 }
7192
7293 for _ , tc := range cases {
7394 t .Run (tc .name , func (t * testing.T ) {
74- got , err := translateAtom (tc .atom )
75- if tc .want != got {
76- t .Errorf ("translateAtom(%q) differed; got %q, want %q" , tc .atom , got , tc .want )
95+ // Invocation queries (queryTarget = false)
96+ _ , err := translateAtom (tc .atom , false )
97+ if err == nil {
98+ t .Fatalf ("translateAtom(%q, %t): want error but got none" , tc .atom , false )
7799 }
78- if err == nil && tc . wantError {
79- t . Errorf ( "translateAtom(%q) did not error as expected" , tc .atom )
80- } else if err != nil && ! tc . wantError {
81- t .Errorf ("translateAtom(%q) errored unexpectedly: %v " , tc .atom , err )
100+ // Configured Target queries (queryTarget = true)
101+ _ , err = translateAtom ( tc .atom , true )
102+ if err == nil {
103+ t .Fatalf ("translateAtom(%q, %t): want error but got none " , tc .atom , true )
82104 }
83105 })
84106 }
85107}
86108
87109func TestTranslateQuery (t * testing.T ) {
88110 cases := []struct {
89- name string
90- query string
91- want string
92- wantError bool
111+ name string
112+ query string
113+ want string
93114 }{
94115 {
95116 name : "empty" ,
96117 query : "" ,
97118 want : "" ,
98119 },
99120 {
100- name : "basic" ,
121+ name : "label" ,
122+ query : `label:"foo"` ,
123+ want : `invocation_attributes.labels:"foo"` ,
124+ },
125+ {
126+ name : "target" ,
101127 query : `target:"//my-target"` ,
102128 want : `id.target_id="//my-target"` ,
103129 },
104130 {
105- name : "case-sensitive key" ,
106- query : `TARGET:"//MY-TARGET"` ,
107- wantError : true ,
131+ name : "multiple labels" ,
132+ query : `label:"foo" label:"bar"` ,
133+ want : `invocation_attributes.labels:"foo" invocation_attributes.labels:"bar"` ,
134+ },
135+ {
136+ name : "mixed" ,
137+ query : `label:"foo" target:"//my-target" label:"bar"` ,
138+ want : `invocation.invocation_attributes.labels:"foo" id.target_id="//my-target" invocation.invocation_attributes.labels:"bar"` ,
108139 },
109140 {
110141 name : "multiple colons" ,
111142 query : `target:"//path/to:my-target"` ,
112143 want : `id.target_id="//path/to:my-target"` ,
113144 },
145+ }
146+
147+ for _ , tc := range cases {
148+ t .Run (tc .name , func (t * testing.T ) {
149+ got , err := TranslateQuery (tc .query )
150+ if err != nil {
151+ t .Fatalf ("translateQuery(%q) errored: %v" , tc .query , err )
152+ }
153+ if tc .want != got {
154+ t .Errorf ("translateQuery(%q) differed; got %q, want %q" , tc .query , got , tc .want )
155+ }
156+ })
157+ }
158+ }
159+
160+ func TestTranslateQuery_Error (t * testing.T ) {
161+ cases := []struct {
162+ name string
163+ query string
164+ }{
165+ {
166+ name : "case-sensitive key" ,
167+ query : `TARGET:"//MY-TARGET"` ,
168+ },
114169 {
115- name : "unquoted" ,
116- query : `target://my-target` ,
117- wantError : true ,
170+ name : "unquoted" ,
171+ query : `target://my-target` ,
118172 },
119173 {
120- name : "partial quotes" ,
121- query : `target://my-target"` ,
122- wantError : true ,
174+ name : "partial quotes" ,
175+ query : `target://my-target"` ,
123176 },
124177 {
125- name : "invalid query" ,
126- query : `label:foo` ,
127- wantError : true ,
178+ name : "invalid query" ,
179+ query : `label:foo` ,
128180 },
129181 {
130- name : "partial match" ,
131- query : `some_target:foo` ,
132- wantError : true ,
182+ name : "partial match" ,
183+ query : `some_target:foo` ,
133184 },
134185 }
135186
136187 for _ , tc := range cases {
137188 t .Run (tc .name , func (t * testing.T ) {
138- got , err := TranslateQuery (tc .query )
139- if tc .want != got {
140- t .Errorf ("translateQuery(%q) differed; got %q, want %q" , tc .query , got , tc .want )
141- }
142- if tc .wantError && err == nil {
143- t .Errorf ("translateQuery(%q) did not error as expected" , tc .query )
144- } else if ! tc .wantError && err != nil {
145- t .Errorf ("translateQuery(%q) errored unexpectedly: %v" , tc .query , err )
189+ _ , err := TranslateQuery (tc .query )
190+ if err == nil {
191+ t .Fatalf ("translateQuery(%q): want error, got none" , tc .query )
146192 }
147193 })
148194 }
0 commit comments