@@ -277,6 +277,16 @@ def test_add_single_argument(run_command):
277277 settings_json = json .loads (result .stdout )
278278 assert ["https://example.com" ] == settings_json ["board_manager" ]["additional_urls" ]
279279
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+
280290
281291def test_add_multiple_arguments (run_command ):
282292 # Create a config file
@@ -303,6 +313,34 @@ def test_add_multiple_arguments(run_command):
303313 assert urls [0 ] in settings_json ["board_manager" ]["additional_urls" ]
304314 assert urls [1 ] in settings_json ["board_manager" ]["additional_urls" ]
305315
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+
306344
307345def test_add_on_unsupported_key (run_command ):
308346 # Create a config file
@@ -482,6 +520,31 @@ def test_set_slice_with_multiple_arguments(run_command):
482520 assert urls [0 ] in settings_json ["board_manager" ]["additional_urls" ]
483521 assert urls [1 ] in settings_json ["board_manager" ]["additional_urls" ]
484522
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+
485548
486549def test_set_string_with_single_argument (run_command ):
487550 # Create a config file
0 commit comments