Skip to content

Commit 472af7d

Browse files
test(cli-integration): make setup commands fail fast instead of skip
Replace all swallowed stderr/status in setup commands with proper assertions. Tests now fail immediately with clear error messages when prerequisite commands (webset-create, enrichment-create, etc.) fail, instead of silently skipping or continuing with nil IDs. Changes: - Convert _stderr, _status to captured variables - Replace skip with assert for command status checks - Add refute_nil for ID validation - Updated 21 test methods across 3 files Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent c6226de commit 472af7d

3 files changed

Lines changed: 93 additions & 45 deletions

File tree

test/integration/enrichments_cli_integration_test.rb

Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,11 @@ def test_enrichment_create_text_format
6767
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
6868
"--search '{\"query\":\"Tech companies\",\"count\":1}' " \
6969
"--output-format json"
70-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
70+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
71+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
72+
7173
webset = parse_json_output(ws_stdout)
74+
refute_nil webset["id"], "webset-create returned no ID"
7275
webset_id = track_webset(webset["id"])
7376

7477
# Create enrichment
@@ -97,8 +100,11 @@ def test_enrichment_create_options_format
97100
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
98101
"--search '{\"query\":\"Startups\",\"count\":1}' " \
99102
"--output-format json"
100-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
103+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
104+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
105+
101106
webset = parse_json_output(ws_stdout)
107+
refute_nil webset["id"], "webset-create returned no ID"
102108
webset_id = track_webset(webset["id"])
103109

104110
# Create enrichment with options format
@@ -133,8 +139,11 @@ def test_enrichment_create_options_from_file
133139
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
134140
"--search '{\"query\":\"E-commerce companies\",\"count\":1}' " \
135141
"--output-format json"
136-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
142+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
143+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
144+
137145
webset = parse_json_output(ws_stdout)
146+
refute_nil webset["id"], "webset-create returned no ID"
138147
webset_id = track_webset(webset["id"])
139148

140149
# Create temporary options file
@@ -175,16 +184,22 @@ def test_enrichment_get
175184
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
176185
"--search '{\"query\":\"Healthcare companies\",\"count\":1}' " \
177186
"--output-format json"
178-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
187+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
188+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
189+
179190
webset = parse_json_output(ws_stdout)
191+
refute_nil webset["id"], "webset-create returned no ID"
180192
webset_id = track_webset(webset["id"])
181193

182194
create_enrich_cmd = "bundle exec exe/exa-ai enrichment-create #{webset_id} " \
183195
"--description 'Find phone number' " \
184196
"--format text " \
185197
"--output-format json"
186-
enrich_stdout, _stderr, _status = run_command(create_enrich_cmd)
198+
enrich_stdout, enrich_stderr, enrich_status = run_command(create_enrich_cmd)
199+
assert enrich_status.success?, "enrichment-create failed: #{enrich_stderr}"
200+
187201
enrichment = parse_json_output(enrich_stdout)
202+
refute_nil enrichment["id"], "enrichment-create returned no ID"
188203
enrichment_id = track_enrichment(webset_id, enrichment["id"])
189204

190205
# Get the enrichment
@@ -208,17 +223,23 @@ def test_enrichment_list
208223
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
209224
"--search '{\"query\":\"Fintech companies\",\"count\":1}' " \
210225
"--output-format json"
211-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
226+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
227+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
228+
212229
webset = parse_json_output(ws_stdout)
230+
refute_nil webset["id"], "webset-create returned no ID"
213231
webset_id = track_webset(webset["id"])
214232

215233
# Create an enrichment
216234
create_enrich_cmd = "bundle exec exe/exa-ai enrichment-create #{webset_id} " \
217235
"--description 'Find headquarters location' " \
218236
"--format text " \
219237
"--output-format json"
220-
enrich_stdout, _stderr, _status = run_command(create_enrich_cmd)
238+
enrich_stdout, enrich_stderr, enrich_status = run_command(create_enrich_cmd)
239+
assert enrich_status.success?, "enrichment-create failed: #{enrich_stderr}"
240+
221241
enrichment = parse_json_output(enrich_stdout)
242+
refute_nil enrichment["id"], "enrichment-create returned no ID"
222243
track_enrichment(webset_id, enrichment["id"])
223244

224245
# List enrichments
@@ -243,16 +264,22 @@ def test_enrichment_update
243264
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
244265
"--search '{\"query\":\"Retail companies\",\"count\":1}' " \
245266
"--output-format json"
246-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
267+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
268+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
269+
247270
webset = parse_json_output(ws_stdout)
271+
refute_nil webset["id"], "webset-create returned no ID"
248272
webset_id = track_webset(webset["id"])
249273

250274
create_enrich_cmd = "bundle exec exe/exa-ai enrichment-create #{webset_id} " \
251275
"--description 'Initial description' " \
252276
"--format text " \
253277
"--output-format json"
254-
enrich_stdout, _stderr, _status = run_command(create_enrich_cmd)
278+
enrich_stdout, enrich_stderr, enrich_status = run_command(create_enrich_cmd)
279+
assert enrich_status.success?, "enrichment-create failed: #{enrich_stderr}"
280+
255281
enrichment = parse_json_output(enrich_stdout)
282+
refute_nil enrichment["id"], "enrichment-create returned no ID"
256283
enrichment_id = track_enrichment(webset_id, enrichment["id"])
257284

258285
# Update the enrichment
@@ -278,16 +305,22 @@ def test_enrichment_delete
278305
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
279306
"--search '{\"query\":\"Manufacturing companies\",\"count\":1}' " \
280307
"--output-format json"
281-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
308+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
309+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
310+
282311
webset = parse_json_output(ws_stdout)
312+
refute_nil webset["id"], "webset-create returned no ID"
283313
webset_id = track_webset(webset["id"])
284314

285315
create_enrich_cmd = "bundle exec exe/exa-ai enrichment-create #{webset_id} " \
286316
"--description 'To be deleted' " \
287317
"--format text " \
288318
"--output-format json"
289-
enrich_stdout, _stderr, _status = run_command(create_enrich_cmd)
319+
enrich_stdout, enrich_stderr, enrich_status = run_command(create_enrich_cmd)
320+
assert enrich_status.success?, "enrichment-create failed: #{enrich_stderr}"
321+
290322
enrichment = parse_json_output(enrich_stdout)
323+
refute_nil enrichment["id"], "enrichment-create returned no ID"
291324
enrichment_id = track_enrichment(webset_id, enrichment["id"])
292325

293326
# Delete the enrichment (with --force to skip confirmation)
@@ -313,16 +346,22 @@ def test_enrichment_cancel
313346
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
314347
"--search '{\"query\":\"Education companies\",\"count\":1}' " \
315348
"--output-format json"
316-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
349+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
350+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
351+
317352
webset = parse_json_output(ws_stdout)
353+
refute_nil webset["id"], "webset-create returned no ID"
318354
webset_id = track_webset(webset["id"])
319355

320356
create_enrich_cmd = "bundle exec exe/exa-ai enrichment-create #{webset_id} " \
321357
"--description 'To be cancelled' " \
322358
"--format text " \
323359
"--output-format json"
324-
enrich_stdout, _stderr, _status = run_command(create_enrich_cmd)
360+
enrich_stdout, enrich_stderr, enrich_status = run_command(create_enrich_cmd)
361+
assert enrich_status.success?, "enrichment-create failed: #{enrich_stderr}"
362+
325363
enrichment = parse_json_output(enrich_stdout)
364+
refute_nil enrichment["id"], "enrichment-create returned no ID"
326365
enrichment_id = track_enrichment(webset_id, enrichment["id"])
327366

328367
# Cancel the enrichment
@@ -346,8 +385,11 @@ def test_enrichment_create_pretty_format
346385
create_ws_cmd = "bundle exec exe/exa-ai webset-create " \
347386
"--search '{\"query\":\"AI companies\",\"count\":1}' " \
348387
"--output-format json"
349-
ws_stdout, _stderr, _status = run_command(create_ws_cmd)
388+
ws_stdout, ws_stderr, ws_status = run_command(create_ws_cmd)
389+
assert ws_status.success?, "webset-create failed: #{ws_stderr}"
390+
350391
webset = parse_json_output(ws_stdout)
392+
refute_nil webset["id"], "webset-create returned no ID"
351393
webset_id = track_webset(webset["id"])
352394

353395
# Create enrichment with pretty format

test/integration/websets_cli_integration_test.rb

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ def test_webset_create_basic
6969
"--output-format json"
7070

7171
stdout, stderr, status = run_command(command)
72-
skip "webset-create failed: #{stderr}" unless status.success?
72+
assert status.success?, "webset-create failed: #{stderr}"
7373

7474
result = parse_json_output(stdout)
75-
skip "webset-create returned no ID" if result["id"].nil?
75+
refute_nil result["id"], "webset-create returned no ID"
7676

7777
track_webset(result["id"])
7878

@@ -101,10 +101,10 @@ def test_webset_create_with_search_file
101101
"--output-format json"
102102

103103
stdout, stderr, status = run_command(command)
104-
skip "webset-create failed: #{stderr}" unless status.success?
104+
assert status.success?, "webset-create failed: #{stderr}"
105105

106106
result = parse_json_output(stdout)
107-
skip "webset-create returned no ID" if result["id"].nil?
107+
refute_nil result["id"], "webset-create returned no ID"
108108

109109
track_webset(result["id"])
110110

@@ -127,10 +127,10 @@ def test_webset_create_with_metadata
127127
"--output-format json"
128128

129129
stdout, stderr, status = run_command(command)
130-
skip "webset-create failed: #{stderr}" unless status.success?
130+
assert status.success?, "webset-create failed: #{stderr}"
131131

132132
result = parse_json_output(stdout)
133-
skip "webset-create returned no ID" if result["id"].nil?
133+
refute_nil result["id"], "webset-create returned no ID"
134134

135135
track_webset(result["id"])
136136

@@ -152,10 +152,10 @@ def test_webset_create_with_external_id
152152
"--output-format json"
153153

154154
stdout, stderr, status = run_command(command)
155-
skip "webset-create failed: #{stderr}" unless status.success?
155+
assert status.success?, "webset-create failed: #{stderr}"
156156

157157
result = parse_json_output(stdout)
158-
skip "webset-create returned no ID" if result["id"].nil?
158+
refute_nil result["id"], "webset-create returned no ID"
159159

160160
track_webset(result["id"])
161161

@@ -189,10 +189,10 @@ def test_webset_create_with_enrichments
189189
"--output-format json"
190190

191191
stdout, stderr, status = run_command(command)
192-
skip "webset-create failed: #{stderr}" unless status.success?
192+
assert status.success?, "webset-create failed: #{stderr}"
193193

194194
result = parse_json_output(stdout)
195-
skip "webset-create returned no ID" if result["id"].nil?
195+
refute_nil result["id"], "webset-create returned no ID"
196196

197197
track_webset(result["id"])
198198

@@ -216,10 +216,10 @@ def test_webset_get
216216
"--output-format json"
217217

218218
create_stdout, create_stderr, create_status = run_command(create_command)
219-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
219+
assert create_status.success?, "webset-create failed: #{create_stderr}"
220220

221221
created = parse_json_output(create_stdout)
222-
skip "webset-create returned no ID" if created["id"].nil?
222+
refute_nil created["id"], "webset-create returned no ID"
223223

224224
webset_id = track_webset(created["id"])
225225

@@ -246,10 +246,10 @@ def test_webset_get_pretty_format
246246
"--output-format json"
247247

248248
create_stdout, create_stderr, create_status = run_command(create_command)
249-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
249+
assert create_status.success?, "webset-create failed: #{create_stderr}"
250250

251251
created = parse_json_output(create_stdout)
252-
skip "webset-create returned no ID" if created["id"].nil?
252+
refute_nil created["id"], "webset-create returned no ID"
253253

254254
webset_id = track_webset(created["id"])
255255

@@ -342,10 +342,10 @@ def test_webset_update
342342
"--output-format json"
343343

344344
create_stdout, create_stderr, create_status = run_command(create_command)
345-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
345+
assert create_status.success?, "webset-create failed: #{create_stderr}"
346346

347347
created = parse_json_output(create_stdout)
348-
skip "webset-create returned no ID" if created["id"].nil?
348+
refute_nil created["id"], "webset-create returned no ID"
349349

350350
webset_id = track_webset(created["id"])
351351

@@ -378,10 +378,10 @@ def test_webset_delete
378378
"--output-format json"
379379

380380
create_stdout, create_stderr, create_status = run_command(create_command)
381-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
381+
assert create_status.success?, "webset-create failed: #{create_stderr}"
382382

383383
created = parse_json_output(create_stdout)
384-
skip "webset-create returned no ID" if created["id"].nil?
384+
refute_nil created["id"], "webset-create returned no ID"
385385

386386
webset_id = track_webset(created["id"])
387387

@@ -409,10 +409,10 @@ def test_webset_cancel
409409
"--output-format json"
410410

411411
create_stdout, create_stderr, create_status = run_command(create_command)
412-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
412+
assert create_status.success?, "webset-create failed: #{create_stderr}"
413413

414414
created = parse_json_output(create_stdout)
415-
skip "webset-create returned no ID" if created["id"].nil?
415+
refute_nil created["id"], "webset-create returned no ID"
416416

417417
webset_id = track_webset(created["id"])
418418

@@ -590,10 +590,10 @@ def test_webset_search_create
590590
"--search '{\"query\":\"Tech companies\",\"count\":1}' " \
591591
"--output-format json"
592592
create_stdout, create_stderr, create_status = run_command(create_command)
593-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
593+
assert create_status.success?, "webset-create failed: #{create_stderr}"
594594

595595
created = parse_json_output(create_stdout)
596-
skip "webset-create returned no ID" if created["id"].nil?
596+
refute_nil created["id"], "webset-create returned no ID"
597597

598598
webset_id = track_webset(created["id"])
599599

@@ -618,18 +618,21 @@ def test_webset_search_get
618618
"--search '{\"query\":\"Software companies\",\"count\":1}' " \
619619
"--output-format json"
620620
create_stdout, create_stderr, create_status = run_command(create_command)
621-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
621+
assert create_status.success?, "webset-create failed: #{create_stderr}"
622622

623623
created = parse_json_output(create_stdout)
624-
skip "webset-create returned no ID" if created["id"].nil?
624+
refute_nil created["id"], "webset-create returned no ID"
625625

626626
webset_id = track_webset(created["id"])
627627

628628
# Create a search within the webset
629629
search_command = "bundle exec exe/exa-ai-webset-search-create #{webset_id} " \
630630
"--query 'Machine learning startups' --output-format json"
631-
search_stdout, _stderr, _status = run_command(search_command)
631+
search_stdout, search_stderr, search_status = run_command(search_command)
632+
assert search_status.success?, "webset-search-create failed: #{search_stderr}"
633+
632634
search = parse_json_output(search_stdout)
635+
refute_nil search["id"], "webset-search-create returned no ID"
633636
search_id = track_search(webset_id, search["id"])
634637

635638
# Get the search
@@ -651,18 +654,21 @@ def test_webset_search_cancel
651654
"--search '{\"query\":\"Healthcare companies\",\"count\":1}' " \
652655
"--output-format json"
653656
create_stdout, create_stderr, create_status = run_command(create_command)
654-
skip "webset-create failed: #{create_stderr}" unless create_status.success?
657+
assert create_status.success?, "webset-create failed: #{create_stderr}"
655658

656659
created = parse_json_output(create_stdout)
657-
skip "webset-create returned no ID" if created["id"].nil?
660+
refute_nil created["id"], "webset-create returned no ID"
658661

659662
webset_id = track_webset(created["id"])
660663

661664
# Create a search within the webset
662665
search_command = "bundle exec exe/exa-ai-webset-search-create #{webset_id} " \
663666
"--query 'Medical device companies' --output-format json"
664-
search_stdout, _stderr, _status = run_command(search_command)
667+
search_stdout, search_stderr, search_status = run_command(search_command)
668+
assert search_status.success?, "webset-search-create failed: #{search_stderr}"
669+
665670
search = parse_json_output(search_stdout)
671+
refute_nil search["id"], "webset-search-create returned no ID"
666672
search_id = track_search(webset_id, search["id"])
667673

668674
# Cancel the search

test/integration/websets_items_cli_integration_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_basic_item_listing
9595
command = "bundle exec exe/exa-ai-webset-item-list #{webset_id} --output-format json"
9696
stdout, stderr, status = run_command(command)
9797

98-
skip "webset-item-list failed: #{stderr}" unless status.success?
98+
assert status.success?, "webset-item-list failed: #{stderr}"
9999

100100
result = parse_json_output(stdout)
101101

@@ -123,7 +123,7 @@ def test_cursor_based_pagination
123123
command1 = "bundle exec exe/exa-ai-webset-item-list #{webset_id} --limit 2 --output-format json"
124124
stdout1, stderr1, status1 = run_command(command1)
125125

126-
skip "First page request failed: #{stderr1}" unless status1.success?
126+
assert status1.success?, "First page request failed: #{stderr1}"
127127

128128
result1 = parse_json_output(stdout1)
129129

@@ -145,7 +145,7 @@ def test_cursor_based_pagination
145145
command2 = "bundle exec exe/exa-ai-webset-item-list #{webset_id} --limit 2 --cursor '#{cursor}' --output-format json"
146146
stdout2, stderr2, status2 = run_command(command2)
147147

148-
skip "Second page request failed: #{stderr2}" unless status2.success?
148+
assert status2.success?, "Second page request failed: #{stderr2}"
149149

150150
result2 = parse_json_output(stdout2)
151151

0 commit comments

Comments
 (0)