7373 )
7474 end
7575
76- let ( :support_files_only_error_message ) { described_class ::SUPPORT_FILES_ONLY_ERROR_MESSAGE }
7776 let ( :notices ) { [ ] }
7877 let ( :lead_dependency_change_source ) { build_dependency ( name : "dummy-pkg-b" , version : "1.1.0" ) }
7978 let ( :single_dependency_info ) { "dummy-pkg-b (1.1.0 → 1.2.0)" }
@@ -137,21 +136,6 @@ def build_support_files(names)
137136 end
138137 end
139138
140- def expect_support_files_only_error (
141- dependency_info :, support_file_names :, omitted_support_file_count : 0 , expected_message : nil
142- )
143- expect { create_change } . to raise_error ( described_class ::SupportFilesOnly ) { |error |
144- expect ( error . dependency_info ) . to eq ( dependency_info )
145- expect ( error . support_file_names ) . to eq ( support_file_names )
146- expect ( error . omitted_support_file_count ) . to eq ( omitted_support_file_count )
147- if expected_message
148- expect ( error . message ) . to eq ( expected_message )
149- else
150- expect ( error . message ) . to include ( support_files_only_error_message )
151- end
152- }
153- end
154-
155139 context "when the source is a lead dependency" do
156140 let ( :change_source ) { lead_dependency_change_source }
157141
@@ -272,64 +256,31 @@ def expect_support_files_only_error(
272256 expect ( Dependabot . logger )
273257 . to receive ( :warn )
274258 . with ( satisfy { |message |
275- message . include? ( support_files_only_error_message ) &&
259+ message . include? ( "FileUpdater returned only support files" ) &&
276260 message . include? ( "for: #{ single_dependency_info } " ) &&
277- message . include? ( "excluded support files:" ) &&
278261 message . include? ( "sub_dep" ) &&
279262 message . include? ( "sub_dep.lock" ) &&
280263 !message . include? ( "(and" )
281264 } )
282265
283- expect_support_files_only_error (
284- dependency_info : single_dependency_info ,
285- support_file_names : %w( sub_dep sub_dep.lock )
286- )
266+ expect { create_change }
267+ . to raise_error (
268+ Dependabot ::DependabotError ,
269+ "FileUpdater failed to update any files for: dummy-pkg-b (1.1.0 → 1.2.0); " \
270+ "FileUpdater returned only support files: sub_dep, sub_dep.lock"
271+ )
287272 end
288273
289274 it "collects notices before raising" do
290- expect_support_files_only_error (
291- dependency_info : single_dependency_info ,
292- support_file_names : %w( sub_dep sub_dep.lock )
293- )
275+ expect { create_change }
276+ . to raise_error (
277+ Dependabot ::DependabotError ,
278+ "FileUpdater failed to update any files for: dummy-pkg-b (1.1.0 → 1.2.0); " \
279+ "FileUpdater returned only support files: sub_dep, sub_dep.lock"
280+ )
294281
295282 expect ( notices ) . to eq ( updater_notices )
296283 end
297-
298- it "exposes immutable support file names on the raised error" do
299- expect { create_change } . to raise_error ( described_class ::SupportFilesOnly ) { |error |
300- expect ( error . support_file_names ) . to be_frozen
301- expect ( error . support_file_names ) . to all ( be_frozen )
302- expect { error . support_file_names << "new_support_file" } . to raise_error ( FrozenError )
303- }
304- end
305-
306- it "exposes immutable dependency info on the raised error" do
307- expect { create_change } . to raise_error ( described_class ::SupportFilesOnly ) { |error |
308- expect ( error . dependency_info ) . to be_frozen
309- }
310- end
311-
312- it "defensively copies support file names and dependency info" do
313- dependency_info = +"dummy-pkg-b (1.1.0 → 1.2.0)"
314- support_file_names = [ "sub_dep" , "sub_dep.lock" ]
315-
316- error = described_class ::SupportFilesOnly . new (
317- dependency_info : dependency_info ,
318- support_file_names : support_file_names ,
319- omitted_support_file_count : 0
320- )
321-
322- dependency_info << " (mutated)"
323- support_file_names << "new_support_file"
324-
325- expect ( error . dependency_info ) . to eq ( "dummy-pkg-b (1.1.0 → 1.2.0)" )
326- expect ( error . support_file_names ) . to eq ( %w( sub_dep sub_dep.lock ) )
327- expect ( error . message ) . to start_with (
328- "#{ support_files_only_error_message } for: dummy-pkg-b (1.1.0 → 1.2.0);"
329- )
330- expect ( error . message ) . to include ( "excluded support files: sub_dep, sub_dep.lock" )
331- expect ( error . message ) . not_to include ( "new_support_file" )
332- end
333284 end
334285
335286 context "when grouped updates return only support files" do
@@ -347,16 +298,13 @@ def expect_support_files_only_error(
347298 stub_file_updater ( updated_dependency_files : support_files )
348299 end
349300
350- it "raises an exception with sorted and unique dependency names" do
351- expected_message =
352- "FileUpdater returned only support files for: dummy-pkg-a, dummy-pkg-b; " \
353- "excluded support files: sub_dep, sub_dep.lock"
354-
355- expect_support_files_only_error (
356- dependency_info : "dummy-pkg-a, dummy-pkg-b" ,
357- support_file_names : %w( sub_dep sub_dep.lock ) ,
358- expected_message : expected_message
359- )
301+ it "raises a diagnostics error with sorted and unique dependency names" do
302+ expect { create_change }
303+ . to raise_error (
304+ Dependabot ::DependabotError ,
305+ "FileUpdater failed to update any files for: dummy-pkg-a, dummy-pkg-b; " \
306+ "FileUpdater returned only support files: sub_dep, sub_dep.lock"
307+ )
360308 end
361309 end
362310
@@ -373,22 +321,17 @@ def expect_support_files_only_error(
373321 stub_file_updater ( updated_dependency_files : support_files )
374322 end
375323
376- it "warns with the listed limit and omitted count" do
377- expect ( Dependabot . logger )
378- . to receive ( :warn )
379- . with ( satisfy { |message |
380- message . include? ( support_files_only_error_message ) &&
381- message . include? ( "excluded support files:" ) &&
382- message . include? ( "(and 1 more)" )
383- } )
324+ it "adds omitted count to diagnostics" do
325+ expected_support_files = Array . new ( described_class ::SUPPORT_FILE_WARNING_NAME_LIMIT ) do |index |
326+ "support_#{ index } .txt"
327+ end . join ( ", " )
384328
385- expect_support_files_only_error (
386- dependency_info : single_dependency_info ,
387- support_file_names : Array . new ( described_class ::SUPPORT_FILE_WARNING_NAME_LIMIT ) do |index |
388- "support_#{ index } .txt"
389- end ,
390- omitted_support_file_count : 1
391- )
329+ expect { create_change }
330+ . to raise_error (
331+ Dependabot ::DependabotError ,
332+ "FileUpdater failed to update any files for: dummy-pkg-b (1.1.0 → 1.2.0); " \
333+ "FileUpdater returned only support files: #{ expected_support_files } (and 1 more)"
334+ )
392335 end
393336 end
394337
@@ -402,11 +345,13 @@ def expect_support_files_only_error(
402345 stub_file_updater ( updated_dependency_files : support_files )
403346 end
404347
405- it "orders support file names naturally in the raised error" do
406- expect_support_files_only_error (
407- dependency_info : single_dependency_info ,
408- support_file_names : %w( support_1.txt support_2.txt support_10.txt )
409- )
348+ it "orders support file names naturally in diagnostics" do
349+ expect { create_change }
350+ . to raise_error (
351+ Dependabot ::DependabotError ,
352+ "FileUpdater failed to update any files for: dummy-pkg-b (1.1.0 → 1.2.0); " \
353+ "FileUpdater returned only support files: support_1.txt, support_2.txt, support_10.txt"
354+ )
410355 end
411356 end
412357
@@ -421,10 +366,12 @@ def expect_support_files_only_error(
421366 end
422367
423368 it "orders support file names naturally regardless of case" do
424- expect_support_files_only_error (
425- dependency_info : single_dependency_info ,
426- support_file_names : [ "support_1.txt" , "Support_2.txt" , "support_10.txt" ]
427- )
369+ expect { create_change }
370+ . to raise_error (
371+ Dependabot ::DependabotError ,
372+ "FileUpdater failed to update any files for: dummy-pkg-b (1.1.0 → 1.2.0); " \
373+ "FileUpdater returned only support files: support_1.txt, Support_2.txt, support_10.txt"
374+ )
428375 end
429376 end
430377 end
0 commit comments