@@ -277,6 +277,16 @@ def test_add_single_argument(run_command):
277
277
settings_json = json .loads (result .stdout )
278
278
assert ["https://example.com" ] == settings_json ["board_manager" ]["additional_urls" ]
279
279
280
+ # Adds the same URL (should not error)
281
+ url = "https://example.com"
282
+ assert run_command (["config" , "add" , "board_manager.additional_urls" , url ])
283
+
284
+ # Verifies a second copy has NOT been added
285
+ result = run_command (["config" , "dump" , "--format" , "json" ])
286
+ assert result .ok
287
+ settings_json = json .loads (result .stdout )
288
+ assert ["https://example.com" ] == settings_json ["board_manager" ]["additional_urls" ]
289
+
280
290
281
291
def test_add_multiple_arguments (run_command ):
282
292
# Create a config file
@@ -303,6 +313,34 @@ def test_add_multiple_arguments(run_command):
303
313
assert urls [0 ] in settings_json ["board_manager" ]["additional_urls" ]
304
314
assert urls [1 ] in settings_json ["board_manager" ]["additional_urls" ]
305
315
316
+ # Adds both the same URLs a second time
317
+ assert run_command (["config" , "add" , "board_manager.additional_urls" ] + urls )
318
+
319
+ # Verifies no change in result array
320
+ result = run_command (["config" , "dump" , "--format" , "json" ])
321
+ assert result .ok
322
+ settings_json = json .loads (result .stdout )
323
+ assert 2 == len (settings_json ["board_manager" ]["additional_urls" ])
324
+ assert urls [0 ] in settings_json ["board_manager" ]["additional_urls" ]
325
+ assert urls [1 ] in settings_json ["board_manager" ]["additional_urls" ]
326
+
327
+ # Adds multiple URLs ... the middle one is the only new URL
328
+ urls = [
329
+ "https://example.com/package_example_index.json" ,
330
+ "https://example.com/a_third_package_example_index.json" ,
331
+ "https://example.com/yet_another_package_example_index.json" ,
332
+ ]
333
+ assert run_command (["config" , "add" , "board_manager.additional_urls" ] + urls )
334
+
335
+ # Verifies URL has been saved
336
+ result = run_command (["config" , "dump" , "--format" , "json" ])
337
+ assert result .ok
338
+ settings_json = json .loads (result .stdout )
339
+ assert 3 == len (settings_json ["board_manager" ]["additional_urls" ])
340
+ assert urls [0 ] in settings_json ["board_manager" ]["additional_urls" ]
341
+ assert urls [1 ] in settings_json ["board_manager" ]["additional_urls" ]
342
+ assert urls [2 ] in settings_json ["board_manager" ]["additional_urls" ]
343
+
306
344
307
345
def test_add_on_unsupported_key (run_command ):
308
346
# Create a config file
@@ -482,6 +520,31 @@ def test_set_slice_with_multiple_arguments(run_command):
482
520
assert urls [0 ] in settings_json ["board_manager" ]["additional_urls" ]
483
521
assert urls [1 ] in settings_json ["board_manager" ]["additional_urls" ]
484
522
523
+ # Sets a third set of 7 URLs (with only 4 unique values)
524
+ urls = [
525
+ "https://example.com/first_package_index.json" ,
526
+ "https://example.com/second_package_index.json" ,
527
+ "https://example.com/first_package_index.json" ,
528
+ "https://example.com/fifth_package_index.json" ,
529
+ "https://example.com/second_package_index.json" ,
530
+ "https://example.com/sixth_package_index.json" ,
531
+ "https://example.com/first_package_index.json" ,
532
+ ]
533
+ assert run_command (["config" , "set" , "board_manager.additional_urls" ] + urls )
534
+
535
+ # Verifies all unique values exist in config
536
+ result = run_command (["config" , "dump" , "--format" , "json" ])
537
+ assert result .ok
538
+ settings_json = json .loads (result .stdout )
539
+ assert 4 == len (settings_json ["board_manager" ]["additional_urls" ])
540
+ assert urls [0 ] in settings_json ["board_manager" ]["additional_urls" ]
541
+ assert urls [1 ] in settings_json ["board_manager" ]["additional_urls" ]
542
+ assert urls [2 ] in settings_json ["board_manager" ]["additional_urls" ]
543
+ assert urls [3 ] in settings_json ["board_manager" ]["additional_urls" ]
544
+ assert urls [4 ] in settings_json ["board_manager" ]["additional_urls" ]
545
+ assert urls [5 ] in settings_json ["board_manager" ]["additional_urls" ]
546
+ assert urls [6 ] in settings_json ["board_manager" ]["additional_urls" ]
547
+
485
548
486
549
def test_set_string_with_single_argument (run_command ):
487
550
# Create a config file
0 commit comments