Merge ~adam-collard/maas:no-assertItemsEqual-forms into maas:master

Proposed by Adam Collard
Status: Merged
Approved by: Adam Collard
Approved revision: 9645b6ff3ee7271aed7bf4f8a366fc459ebdeecb
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~adam-collard/maas:no-assertItemsEqual-forms
Merge into: maas:master
Diff against target: 1941 lines (+246/-254)
27 files modified
src/maasserver/forms/tests/test_bcache.py (+6/-6)
src/maasserver/forms/tests/test_blockdevice.py (+4/-4)
src/maasserver/forms/tests/test_bootresource.py (+2/-2)
src/maasserver/forms/tests/test_cacheset.py (+4/-4)
src/maasserver/forms/tests/test_commissioning.py (+1/-1)
src/maasserver/forms/tests/test_controller.py (+4/-4)
src/maasserver/forms/tests/test_device.py (+4/-4)
src/maasserver/forms/tests/test_dhcpsnippet.py (+6/-6)
src/maasserver/forms/tests/test_dnsresource.py (+5/-5)
src/maasserver/forms/tests/test_filesystem.py (+1/-1)
src/maasserver/forms/tests/test_helpers.py (+1/-1)
src/maasserver/forms/tests/test_instancelistfield.py (+2/-2)
src/maasserver/forms/tests/test_interface.py (+36/-36)
src/maasserver/forms/tests/test_interface_link.py (+3/-3)
src/maasserver/forms/tests/test_licensekey.py (+3/-3)
src/maasserver/forms/tests/test_machine.py (+17/-17)
src/maasserver/forms/tests/test_machinewithmacaddresses.py (+1/-1)
src/maasserver/forms/tests/test_node.py (+7/-7)
src/maasserver/forms/tests/test_packagerepository.py (+18/-22)
src/maasserver/forms/tests/test_partition.py (+1/-1)
src/maasserver/forms/tests/test_pods.py (+23/-23)
src/maasserver/forms/tests/test_raid.py (+8/-8)
src/maasserver/forms/tests/test_script.py (+72/-76)
src/maasserver/forms/tests/test_user.py (+1/-1)
src/maasserver/forms/tests/test_vlan.py (+3/-3)
src/maasserver/forms/tests/test_vmfs.py (+5/-5)
src/maasserver/forms/tests/test_volume_group.py (+8/-8)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
MAAS Lander Approve
Review via email: mp+408646@code.launchpad.net

Commit message

[forms] Replace defunct assertItemsEqual

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b no-assertItemsEqual-forms lp:~adam-collard/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 9645b6ff3ee7271aed7bf4f8a366fc459ebdeecb

review: Approve
Revision history for this message
Alberto Donato (ack) wrote :

+1!

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/forms/tests/test_bcache.py b/src/maasserver/forms/tests/test_bcache.py
2index 68303e5..829c858 100644
3--- a/src/maasserver/forms/tests/test_bcache.py
4+++ b/src/maasserver/forms/tests/test_bcache.py
5@@ -51,15 +51,15 @@ class TestCreateBcacheForm(MAASServerTestCase):
6 bd.id for bd in bds if bd.get_partitiontable() is None
7 ] + [bd.name for bd in bds if bd.get_partitiontable() is None]
8 form = CreateBcacheForm(node=node, data={})
9- self.assertItemsEqual(
10+ self.assertCountEqual(
11 cache_set_choices,
12 [k for (k, v) in form.fields["cache_set"].choices],
13 )
14- self.assertItemsEqual(
15+ self.assertCountEqual(
16 block_devices,
17 [k for (k, v) in form.fields["backing_device"].choices],
18 )
19- self.assertItemsEqual(
20+ self.assertCountEqual(
21 partition_choices,
22 [k for (k, v) in form.fields["backing_partition"].choices],
23 )
24@@ -271,15 +271,15 @@ class TestUpdateBcacheForm(MAASServerTestCase):
25 form = UpdateBcacheForm(bcache=bcache, data={})
26 # Should allow all devices and partitions, including the ones currently
27 # allocated for bcache.
28- self.assertItemsEqual(
29+ self.assertCountEqual(
30 cache_set_choices,
31 [k for (k, v) in form.fields["cache_set"].choices],
32 )
33- self.assertItemsEqual(
34+ self.assertCountEqual(
35 block_device_choices,
36 [k for (k, v) in form.fields["backing_device"].choices],
37 )
38- self.assertItemsEqual(
39+ self.assertCountEqual(
40 partition_choices,
41 [k for (k, v) in form.fields["backing_partition"].choices],
42 )
43diff --git a/src/maasserver/forms/tests/test_blockdevice.py b/src/maasserver/forms/tests/test_blockdevice.py
44index bcdd7eb..93b9014 100644
45--- a/src/maasserver/forms/tests/test_blockdevice.py
46+++ b/src/maasserver/forms/tests/test_blockdevice.py
47@@ -34,7 +34,7 @@ class TestFormatBlockDeviceForm(MAASServerTestCase):
48 block_device=factory.make_BlockDevice(), data={}
49 )
50 self.assertFalse(form.is_valid(), form.errors)
51- self.assertItemsEqual(["fstype"], form.errors.keys())
52+ self.assertEqual({"fstype"}, form.errors.keys())
53
54 def test_is_not_valid_if_block_device_has_partition_table(self):
55 fstype = factory.pick_filesystem_type()
56@@ -292,7 +292,7 @@ class TestUpdatePhysicalBlockDeviceForm(MAASServerTestCase):
57 block_device = factory.make_PhysicalBlockDevice()
58 form = UpdatePhysicalBlockDeviceForm(instance=block_device, data={})
59 self.assertTrue(form.is_valid(), form.errors)
60- self.assertItemsEqual([], form.errors.keys())
61+ self.assertEqual(set(), form.errors.keys())
62
63 def test_updates_physical_block_device(self):
64 block_device = factory.make_PhysicalBlockDevice()
65@@ -388,7 +388,7 @@ class TestUpdateDeployedPhysicalBlockDeviceForm(MAASServerTestCase):
66 instance=block_device, data={}
67 )
68 self.assertTrue(form.is_valid(), form.errors)
69- self.assertItemsEqual([], form.errors.keys())
70+ self.assertEqual(set(), form.errors.keys())
71
72 def test_updates_deployed_physical_block_device(self):
73 block_device = factory.make_PhysicalBlockDevice()
74@@ -425,7 +425,7 @@ class TestUpdateVirtualBlockDeviceForm(MAASServerTestCase):
75 block_device = factory.make_VirtualBlockDevice()
76 form = UpdateVirtualBlockDeviceForm(instance=block_device, data={})
77 self.assertTrue(form.is_valid(), form.errors)
78- self.assertItemsEqual([], form.errors.keys())
79+ self.assertEqual(set(), form.errors.keys())
80
81 def test_updates_virtual_block_device(self):
82 block_device = factory.make_VirtualBlockDevice()
83diff --git a/src/maasserver/forms/tests/test_bootresource.py b/src/maasserver/forms/tests/test_bootresource.py
84index 6c228b7..ea56804 100644
85--- a/src/maasserver/forms/tests/test_bootresource.py
86+++ b/src/maasserver/forms/tests/test_bootresource.py
87@@ -378,8 +378,8 @@ class TestBootResourceForm(MAASServerTestCase):
88 def test_requires_fields(self):
89 form = BootResourceForm(data={})
90 self.assertFalse(form.is_valid(), form.errors)
91- self.assertItemsEqual(
92- ["name", "architecture", "filetype", "content"],
93+ self.assertEqual(
94+ {"name", "architecture", "filetype", "content"},
95 form.errors.keys(),
96 )
97
98diff --git a/src/maasserver/forms/tests/test_cacheset.py b/src/maasserver/forms/tests/test_cacheset.py
99index 35c725e..4a34d54 100644
100--- a/src/maasserver/forms/tests/test_cacheset.py
101+++ b/src/maasserver/forms/tests/test_cacheset.py
102@@ -40,11 +40,11 @@ class TestCreateCacheSetForm(MAASServerTestCase):
103 bd.id for bd in bds if bd.get_partitiontable() is None
104 ] + [bd.name for bd in bds if bd.get_partitiontable() is None]
105 form = CreateCacheSetForm(node=node, data={})
106- self.assertItemsEqual(
107+ self.assertCountEqual(
108 block_devices,
109 [k for (k, v) in form.fields["cache_device"].choices],
110 )
111- self.assertItemsEqual(
112+ self.assertCountEqual(
113 partition_choices,
114 [k for (k, v) in form.fields["cache_partition"].choices],
115 )
116@@ -134,11 +134,11 @@ class TestUpdateCacheSetForm(MAASServerTestCase):
117 form = UpdateCacheSetForm(cache_set=cache_set, data={})
118 # Should allow all devices and partitions, including the one currently
119 # in use on the cache set.
120- self.assertItemsEqual(
121+ self.assertCountEqual(
122 block_device_choices,
123 [k for (k, v) in form.fields["cache_device"].choices],
124 )
125- self.assertItemsEqual(
126+ self.assertCountEqual(
127 partition_choices,
128 [k for (k, v) in form.fields["cache_partition"].choices],
129 )
130diff --git a/src/maasserver/forms/tests/test_commissioning.py b/src/maasserver/forms/tests/test_commissioning.py
131index 1708b34..f959b46 100644
132--- a/src/maasserver/forms/tests/test_commissioning.py
133+++ b/src/maasserver/forms/tests/test_commissioning.py
134@@ -50,7 +50,7 @@ class TestCommissioningFormForm(MAASServerTestCase):
135 )
136 Config.objects.set_config("commissioning_distro_series", release)
137 form = CommissioningForm()
138- self.assertItemsEqual(
139+ self.assertCountEqual(
140 [
141 ("", "--- No minimum kernel ---"),
142 (kernel, "%s (%s)" % (release, kernel)),
143diff --git a/src/maasserver/forms/tests/test_controller.py b/src/maasserver/forms/tests/test_controller.py
144index 442946a..904501f 100644
145--- a/src/maasserver/forms/tests/test_controller.py
146+++ b/src/maasserver/forms/tests/test_controller.py
147@@ -14,15 +14,15 @@ class TestControllerForm(MAASServerTestCase):
148 def test_Contains_limited_set_of_fields(self):
149 form = ControllerForm()
150
151- self.assertItemsEqual(
152- [
153+ self.assertEqual(
154+ {
155 "description",
156 "zone",
157 "domain",
158 "power_type",
159 "power_parameters",
160- ],
161- list(form.fields),
162+ },
163+ form.fields.keys(),
164 )
165
166 def test_populates_power_type_choices(self):
167diff --git a/src/maasserver/forms/tests/test_device.py b/src/maasserver/forms/tests/test_device.py
168index dfa008a..f028eaf 100644
169--- a/src/maasserver/forms/tests/test_device.py
170+++ b/src/maasserver/forms/tests/test_device.py
171@@ -21,8 +21,8 @@ class TestDeviceForm(MAASServerTestCase):
172 def test_contains_limited_set_of_fields(self):
173 form = DeviceForm()
174
175- self.assertItemsEqual(
176- [
177+ self.assertEqual(
178+ {
179 "hostname",
180 "description",
181 "domain",
182@@ -30,8 +30,8 @@ class TestDeviceForm(MAASServerTestCase):
183 "disable_ipv4",
184 "swap_size",
185 "zone",
186- ],
187- list(form.fields),
188+ },
189+ form.fields.keys(),
190 )
191
192 def test_changes_device_parent(self):
193diff --git a/src/maasserver/forms/tests/test_dhcpsnippet.py b/src/maasserver/forms/tests/test_dhcpsnippet.py
194index 693e104..895984e 100644
195--- a/src/maasserver/forms/tests/test_dhcpsnippet.py
196+++ b/src/maasserver/forms/tests/test_dhcpsnippet.py
197@@ -26,12 +26,12 @@ class TestDHCPSnippetForm(MAASServerTestCase):
198 def test_create_dhcp_snippet_requies_name(self):
199 form = DHCPSnippetForm(data={"value": factory.make_string()})
200 self.assertFalse(form.is_valid())
201- self.assertItemsEqual([], VersionedTextFile.objects.all())
202+ self.assertCountEqual([], VersionedTextFile.objects.all())
203
204 def test_create_dhcp_snippet_requires_value(self):
205 form = DHCPSnippetForm(data={"name": factory.make_name("name")})
206 self.assertFalse(form.is_valid())
207- self.assertItemsEqual([], VersionedTextFile.objects.all())
208+ self.assertCountEqual([], VersionedTextFile.objects.all())
209
210 def test_creates_dhcp_snippet(self):
211 name = factory.make_name("name")
212@@ -236,8 +236,8 @@ class TestDHCPSnippetForm(MAASServerTestCase):
213 }
214 )
215 self.assertFalse(form.is_valid())
216- self.assertItemsEqual([], DHCPSnippet.objects.all())
217- self.assertItemsEqual([], VersionedTextFile.objects.all())
218+ self.assertCountEqual([], DHCPSnippet.objects.all())
219+ self.assertCountEqual([], VersionedTextFile.objects.all())
220
221 def test_updates_name(self):
222 dhcp_snippet = factory.make_DHCPSnippet()
223@@ -420,5 +420,5 @@ class TestDHCPSnippetForm(MAASServerTestCase):
224 )
225 self.assertFalse(form.is_valid())
226 self.assertEqual({"value": [dhcpd_error["error"]]}, form.errors)
227- self.assertItemsEqual([], VersionedTextFile.objects.all())
228- self.assertItemsEqual([], DHCPSnippet.objects.all())
229+ self.assertCountEqual([], VersionedTextFile.objects.all())
230+ self.assertCountEqual([], DHCPSnippet.objects.all())
231diff --git a/src/maasserver/forms/tests/test_dnsresource.py b/src/maasserver/forms/tests/test_dnsresource.py
232index be63664..17d24c1 100644
233--- a/src/maasserver/forms/tests/test_dnsresource.py
234+++ b/src/maasserver/forms/tests/test_dnsresource.py
235@@ -59,9 +59,9 @@ class TestDNSResourceForm(MAASServerTestCase):
236 self.assertEqual(domain.id, dnsresource.domain.id)
237 actual_ips = dnsresource.ip_addresses.all()
238 actual = {str(ip.ip) for ip in actual_ips}
239- self.assertItemsEqual(set(ips), actual)
240+ self.assertCountEqual(set(ips), actual)
241 actual_users = {ip.user_id for ip in actual_ips}
242- self.assertItemsEqual({request.user.id}, actual_users)
243+ self.assertEqual({request.user.id}, actual_users)
244
245 def test_accepts_mix_of_id_and_ipaddress(self):
246 name = factory.make_name("dnsresource")
247@@ -82,7 +82,7 @@ class TestDNSResourceForm(MAASServerTestCase):
248 self.assertEqual(name, dnsresource.name)
249 self.assertEqual(domain.id, dnsresource.domain.id)
250 actual = {ip.id for ip in dnsresource.ip_addresses.all()}
251- self.assertItemsEqual(set(ip.id for ip in ips), actual)
252+ self.assertCountEqual(set(ip.id for ip in ips), actual)
253
254 def test_does_not_require_ip_addresses(self):
255 name = factory.make_name("dnsresource")
256@@ -146,7 +146,7 @@ class TestDNSResourceForm(MAASServerTestCase):
257 form.save()
258 self.assertEqual(new_name, reload_object(dnsresource).name)
259 self.assertEqual(new_ttl, reload_object(dnsresource).address_ttl)
260- self.assertItemsEqual(
261+ self.assertCountEqual(
262 new_sip_ids,
263 [ip.id for ip in reload_object(dnsresource).ip_addresses.all()],
264 )
265@@ -165,7 +165,7 @@ class TestDNSResourceForm(MAASServerTestCase):
266 self.assertTrue(form.is_valid(), form.errors)
267 form.save()
268 self.assertEqual(new_name, reload_object(dnsresource).name)
269- self.assertItemsEqual(
270+ self.assertCountEqual(
271 new_sip_ids,
272 [ip.id for ip in reload_object(dnsresource).ip_addresses.all()],
273 )
274diff --git a/src/maasserver/forms/tests/test_filesystem.py b/src/maasserver/forms/tests/test_filesystem.py
275index 2f8bbe3..1393b25 100644
276--- a/src/maasserver/forms/tests/test_filesystem.py
277+++ b/src/maasserver/forms/tests/test_filesystem.py
278@@ -70,7 +70,7 @@ class TestMountFilesystemForm(MAASServerTestCase):
279 form = MountFilesystemForm(filesystem, data={})
280 self.assertTrue(filesystem.uses_mount_point)
281 self.assertFalse(form.is_valid(), form.errors)
282- self.assertItemsEqual(["mount_point"], form.errors.keys())
283+ self.assertEqual({"mount_point"}, form.errors.keys())
284
285 def test_ignores_mount_point_when_fs_does_not_use_mount_point(self):
286 substrate = self.make_substrate()
287diff --git a/src/maasserver/forms/tests/test_helpers.py b/src/maasserver/forms/tests/test_helpers.py
288index 59dd970..b62da2e 100644
289--- a/src/maasserver/forms/tests/test_helpers.py
290+++ b/src/maasserver/forms/tests/test_helpers.py
291@@ -56,7 +56,7 @@ class TestHelpers(MAASServerTestCase):
292 for arch, subarch in arches:
293 self.make_usable_boot_resource(arch=arch, subarch=subarch)
294 expected = ["%s/%s" % (arch, subarch) for arch, subarch in arches]
295- self.assertItemsEqual(expected, list_all_usable_architectures())
296+ self.assertCountEqual(expected, list_all_usable_architectures())
297
298 def test_list_all_usable_architectures_sorts_output(self):
299 arches = [
300diff --git a/src/maasserver/forms/tests/test_instancelistfield.py b/src/maasserver/forms/tests/test_instancelistfield.py
301index 53511eb..495a362 100644
302--- a/src/maasserver/forms/tests/test_instancelistfield.py
303+++ b/src/maasserver/forms/tests/test_instancelistfield.py
304@@ -21,7 +21,7 @@ class TestInstanceListField(MAASServerTestCase):
305 [factory.make_Node() for _ in range(3)]
306 field = InstanceListField(model_class=Node, field_name="system_id")
307 input_data = [node.system_id for node in nodes]
308- self.assertItemsEqual(
309+ self.assertCountEqual(
310 input_data, [node.system_id for node in field.clean(input_data)]
311 )
312
313@@ -31,7 +31,7 @@ class TestInstanceListField(MAASServerTestCase):
314 [factory.make_Node() for _ in range(3)]
315 field = InstanceListField(model_class=Node, field_name="system_id")
316 input_data = [node.system_id for node in nodes] * 2
317- self.assertItemsEqual(
318+ self.assertCountEqual(
319 set(input_data),
320 [node.system_id for node in field.clean(input_data)],
321 )
322diff --git a/src/maasserver/forms/tests/test_interface.py b/src/maasserver/forms/tests/test_interface.py
323index b0f8851..f9b7f7a 100644
324--- a/src/maasserver/forms/tests/test_interface.py
325+++ b/src/maasserver/forms/tests/test_interface.py
326@@ -272,7 +272,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
327 numa_node=node.default_numanode,
328 ),
329 )
330- self.assertItemsEqual([], interface.parents.all())
331+ self.assertCountEqual([], interface.parents.all())
332
333 def test_creates_physical_interface_with_numa_node(self):
334 node = factory.make_Node()
335@@ -324,7 +324,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
336 tags=tags,
337 ),
338 )
339- self.assertItemsEqual([], interface.parents.all())
340+ self.assertCountEqual([], interface.parents.all())
341
342 def test_creates_physical_interface_disconnected(self):
343 node = factory.make_Node()
344@@ -352,7 +352,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
345 vlan=None,
346 ),
347 )
348- self.assertItemsEqual([], interface.parents.all())
349+ self.assertCountEqual([], interface.parents.all())
350
351 def test_create_ensures_link_up(self):
352 node = factory.make_Node()
353@@ -383,7 +383,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
354 data={"name": interface_name, "vlan": vlan.id},
355 )
356 self.assertFalse(form.is_valid(), dict(form.errors))
357- self.assertItemsEqual(["mac_address"], form.errors.keys(), form.errors)
358+ self.assertEqual({"mac_address"}, form.errors.keys(), form.errors)
359 self.assertIn("This field is required.", form.errors["mac_address"][0])
360
361 def test_rejects_interface_with_duplicate_name(self):
362@@ -398,7 +398,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
363 },
364 )
365 self.assertFalse(form.is_valid(), dict(form.errors))
366- self.assertItemsEqual(["name"], form.errors.keys(), form.errors)
367+ self.assertEqual({"name"}, form.errors.keys(), form.errors)
368 self.assertIn(
369 "already has an interface named '%s'." % interface.name,
370 form.errors["name"][0],
371@@ -455,7 +455,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
372 },
373 )
374 self.assertFalse(form.is_valid(), dict(form.errors))
375- self.assertItemsEqual(["parents"], form.errors.keys(), form.errors)
376+ self.assertEqual({"parents"}, form.errors.keys(), form.errors)
377 self.assertIn(
378 "A physical interface cannot have parents.",
379 form.errors["parents"][0],
380@@ -484,7 +484,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
381 name=new_name, vlan=new_vlan, enabled=False, tags=[]
382 ),
383 )
384- self.assertItemsEqual([], interface.parents.all())
385+ self.assertCountEqual([], interface.parents.all())
386
387 def test_edits_doesnt_overwrite_name(self):
388 interface = factory.make_Interface(
389@@ -504,7 +504,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
390 name=interface.name, vlan=new_vlan, enabled=False, tags=[]
391 ),
392 )
393- self.assertItemsEqual([], interface.parents.all())
394+ self.assertCountEqual([], interface.parents.all())
395
396 def test_edits_interface_disconnected(self):
397 interface = factory.make_Interface(
398@@ -528,7 +528,7 @@ class TestPhysicalInterfaceForm(MAASServerTestCase):
399 name=new_name, vlan=None, enabled=False, tags=[]
400 ),
401 )
402- self.assertItemsEqual([], interface.parents.all())
403+ self.assertCountEqual([], interface.parents.all())
404
405 def test_create_sets_interface_parameters(self):
406 node = factory.make_Node()
407@@ -656,7 +656,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
408 self.assertEqual("myvlan", interface.name)
409 self.assertEqual(INTERFACE_TYPE.VLAN, interface.type)
410 self.assertEqual(vlan, interface.vlan)
411- self.assertItemsEqual([parent], interface.parents.all())
412+ self.assertCountEqual([parent], interface.parents.all())
413
414 def test_creates_vlan_interface_generates_name(self):
415 fabric = factory.make_Fabric()
416@@ -691,7 +691,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
417 node=parent.node, data={"parents": [parent.id]}
418 )
419 self.assertFalse(form.is_valid(), dict(form.errors))
420- self.assertItemsEqual(["vlan"], form.errors.keys(), form.errors)
421+ self.assertEqual({"vlan"}, form.errors.keys(), form.errors)
422 self.assertIn(
423 "A VLAN interface must be connected to a tagged VLAN.",
424 form.errors["vlan"][0],
425@@ -707,7 +707,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
426 node=parent.node, data={"vlan": vlan.id, "parents": [parent.id]}
427 )
428 self.assertFalse(form.is_valid(), dict(form.errors))
429- self.assertItemsEqual(["name"], form.errors.keys(), form.errors)
430+ self.assertEqual({"name"}, form.errors.keys(), form.errors)
431 self.assertIn(
432 "already has an interface named '%s'." % interface.name,
433 form.errors["name"][0],
434@@ -720,7 +720,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
435 node=parent.node, data={"vlan": vlan.id, "parents": [parent.id]}
436 )
437 self.assertFalse(form.is_valid(), dict(form.errors))
438- self.assertItemsEqual(["vlan"], form.errors.keys(), form.errors)
439+ self.assertEqual({"vlan"}, form.errors.keys(), form.errors)
440 self.assertIn(
441 "A VLAN interface can only belong to a tagged VLAN.",
442 form.errors["vlan"][0],
443@@ -732,7 +732,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
444 node=factory.make_Node(), data={"vlan": vlan.id}
445 )
446 self.assertFalse(form.is_valid(), dict(form.errors))
447- self.assertItemsEqual(["parents"], form.errors.keys())
448+ self.assertEqual({"parents"}, form.errors.keys())
449 self.assertIn(
450 "A VLAN interface must have exactly one parent.",
451 form.errors["parents"][0],
452@@ -749,7 +749,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
453 data={"vlan": vlan.id, "parents": [vlan_parent.id]},
454 )
455 self.assertFalse(form.is_valid(), dict(form.errors))
456- self.assertItemsEqual(["parents"], form.errors.keys())
457+ self.assertEqual({"parents"}, form.errors.keys())
458 self.assertIn(
459 "VLAN interface can't have another VLAN interface as parent.",
460 form.errors["parents"][0],
461@@ -761,7 +761,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
462 node=parent.node, data={"vlan": None, "parents": [parent.id]}
463 )
464 self.assertFalse(form.is_valid(), dict(form.errors))
465- self.assertItemsEqual(["vlan"], form.errors.keys())
466+ self.assertEqual({"vlan"}, form.errors.keys())
467 self.assertIn(
468 "A VLAN interface must be connected to a tagged VLAN.",
469 form.errors["vlan"][0],
470@@ -776,7 +776,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
471 data={"vlan": other_vlan.id, "parents": [parent.id]},
472 )
473 self.assertFalse(form.is_valid(), dict(form.errors))
474- self.assertItemsEqual(["vlan"], form.errors.keys())
475+ self.assertEqual({"vlan"}, form.errors.keys())
476 self.assertIn(
477 "A VLAN interface can only belong to a tagged VLAN on "
478 "the same fabric as its parent interface.",
479@@ -791,7 +791,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
480 node=parent.node, data={"vlan": vlan.id, "parents": [parent.id]}
481 )
482 self.assertFalse(form.is_valid(), dict(form.errors))
483- self.assertItemsEqual(["parents"], form.errors.keys())
484+ self.assertEqual({"parents"}, form.errors.keys())
485 self.assertIn(
486 "A VLAN interface can't have a parent that is already in a bond.",
487 form.errors["parents"][0],
488@@ -808,7 +808,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
489 data={"vlan": vlan.id, "parents": [parent1.id, parent2.id]},
490 )
491 self.assertFalse(form.is_valid(), dict(form.errors))
492- self.assertItemsEqual(["parents"], form.errors.keys())
493+ self.assertEqual({"parents"}, form.errors.keys())
494 self.assertIn(
495 "A VLAN interface must have exactly one parent.",
496 form.errors["parents"][0],
497@@ -834,7 +834,7 @@ class VLANInterfaceFormTest(MAASServerTestCase):
498 type=INTERFACE_TYPE.VLAN,
499 ),
500 )
501- self.assertItemsEqual([parent], interface.parents.all())
502+ self.assertCountEqual([parent], interface.parents.all())
503
504
505 class BondInterfaceFormTest(MAASServerTestCase):
506@@ -894,7 +894,7 @@ class BondInterfaceFormTest(MAASServerTestCase):
507 self.assertIn(
508 interface.mac_address, [parent1.mac_address, parent2.mac_address]
509 )
510- self.assertItemsEqual([parent1, parent2], interface.parents.all())
511+ self.assertCountEqual([parent1, parent2], interface.parents.all())
512
513 def test_create_removes_parent_links_and_sets_link_up_on_bond(self):
514 vlan = factory.make_VLAN(vid=10)
515@@ -957,7 +957,7 @@ class BondInterfaceFormTest(MAASServerTestCase):
516 type=INTERFACE_TYPE.BOND,
517 ),
518 )
519- self.assertItemsEqual([parent1, parent2], interface.parents.all())
520+ self.assertCountEqual([parent1, parent2], interface.parents.all())
521
522 def test_creates_bond_interface_with_default_bond_params(self):
523 vlan = factory.make_VLAN(vid=10)
524@@ -1043,7 +1043,7 @@ class BondInterfaceFormTest(MAASServerTestCase):
525 data={"name": interface_name, "vlan": vlan.id},
526 )
527 self.assertFalse(form.is_valid(), dict(form.errors))
528- self.assertItemsEqual(["parents", "mac_address"], form.errors.keys())
529+ self.assertEqual({"parents", "mac_address"}, form.errors.keys())
530 self.assertIn(
531 "A bond interface must have one or more parents.",
532 form.errors["parents"][0],
533@@ -1125,7 +1125,7 @@ class BondInterfaceFormTest(MAASServerTestCase):
534 type=INTERFACE_TYPE.BOND,
535 ),
536 )
537- self.assertItemsEqual(
538+ self.assertCountEqual(
539 [parent1, parent2, new_parent], interface.parents.all()
540 )
541
542@@ -1175,7 +1175,7 @@ class BondInterfaceFormTest(MAASServerTestCase):
543 type=INTERFACE_TYPE.BOND,
544 ),
545 )
546- self.assertItemsEqual([parent1, parent2], interface.parents.all())
547+ self.assertCountEqual([parent1, parent2], interface.parents.all())
548
549 def test_edits_interface_updates_mac_address_when_parent_removed(self):
550 parent1 = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
551@@ -1203,7 +1203,7 @@ class BondInterfaceFormTest(MAASServerTestCase):
552 name=new_name, type=INTERFACE_TYPE.BOND
553 ),
554 )
555- self.assertItemsEqual([parent1, parent2], interface.parents.all())
556+ self.assertCountEqual([parent1, parent2], interface.parents.all())
557 self.assertIn(
558 interface.mac_address, [parent1.mac_address, parent2.mac_address]
559 )
560@@ -1394,7 +1394,7 @@ class BridgeInterfaceFormTest(MAASServerTestCase):
561 ),
562 )
563 self.assertEqual(interface.mac_address, parent.mac_address)
564- self.assertItemsEqual([parent], interface.parents.all())
565+ self.assertCountEqual([parent], interface.parents.all())
566
567 def test_allows_bridge_on_parent_with_vlan_bridges(self):
568 parent = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
569@@ -1416,7 +1416,7 @@ class BridgeInterfaceFormTest(MAASServerTestCase):
570 ),
571 )
572 self.assertEqual(interface.mac_address, parent.mac_address)
573- self.assertItemsEqual([parent], interface.parents.all())
574+ self.assertCountEqual([parent], interface.parents.all())
575
576 def test_allows_bridge_on_bond_with_vlan_bridges(self):
577 node = factory.make_Node()
578@@ -1442,7 +1442,7 @@ class BridgeInterfaceFormTest(MAASServerTestCase):
579 ),
580 )
581 self.assertEqual(interface.mac_address, bond0.mac_address)
582- self.assertItemsEqual([bond0], interface.parents.all())
583+ self.assertCountEqual([bond0], interface.parents.all())
584
585 def test_create_removes_parent_links_and_sets_link_up_on_bridge(self):
586 parent = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
587@@ -1485,7 +1485,7 @@ class BridgeInterfaceFormTest(MAASServerTestCase):
588 type=INTERFACE_TYPE.BRIDGE,
589 ),
590 )
591- self.assertItemsEqual([parent], interface.parents.all())
592+ self.assertCountEqual([parent], interface.parents.all())
593
594 def test_rejects_no_parent(self):
595 interface_name = factory.make_name()
596@@ -1493,7 +1493,7 @@ class BridgeInterfaceFormTest(MAASServerTestCase):
597 node=factory.make_Node(), data={"name": interface_name}
598 )
599 self.assertFalse(form.is_valid(), dict(form.errors))
600- self.assertItemsEqual(["parents", "mac_address"], form.errors.keys())
601+ self.assertEqual({"parents", "mac_address"}, form.errors.keys())
602 self.assertIn(
603 "A bridge interface must have exactly one parent.",
604 form.errors["parents"][0],
605@@ -1602,7 +1602,7 @@ class BridgeInterfaceFormTest(MAASServerTestCase):
606 type=INTERFACE_TYPE.BRIDGE,
607 ),
608 )
609- self.assertItemsEqual([new_parent], interface.parents.all())
610+ self.assertCountEqual([new_parent], interface.parents.all())
611
612 def test_edits_interface_allows_disconnected(self):
613 parent = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
614@@ -1766,9 +1766,9 @@ class AcquiredBridgeInterfaceFormTest(MAASServerTestCase):
615 ),
616 )
617 self.assertEqual(interface.mac_address, parent.mac_address)
618- self.assertItemsEqual([parent], interface.parents.all())
619- self.assertItemsEqual([parent_sip], interface.ip_addresses.all())
620- self.assertItemsEqual([], parent.ip_addresses.all())
621+ self.assertCountEqual([parent], interface.parents.all())
622+ self.assertCountEqual([parent_sip], interface.ip_addresses.all())
623+ self.assertCountEqual([], parent.ip_addresses.all())
624
625 def test_rejects_no_parent(self):
626 interface_name = factory.make_name()
627@@ -1776,7 +1776,7 @@ class AcquiredBridgeInterfaceFormTest(MAASServerTestCase):
628 node=factory.make_Node(), data={"name": interface_name}
629 )
630 self.assertFalse(form.is_valid(), dict(form.errors))
631- self.assertItemsEqual(["parents", "mac_address"], form.errors.keys())
632+ self.assertEqual({"parents", "mac_address"}, form.errors.keys())
633 self.assertIn(
634 "A bridge interface must have exactly one parent.",
635 form.errors["parents"][0],
636diff --git a/src/maasserver/forms/tests/test_interface_link.py b/src/maasserver/forms/tests/test_interface_link.py
637index 964af3c..ec3b552 100644
638--- a/src/maasserver/forms/tests/test_interface_link.py
639+++ b/src/maasserver/forms/tests/test_interface_link.py
640@@ -39,7 +39,7 @@ class TestInterfaceLinkForm(MAASServerTestCase):
641 interface.vlan = None
642 interface.save()
643 form = InterfaceLinkForm(instance=interface, data={})
644- self.assertItemsEqual(
645+ self.assertCountEqual(
646 list(Subnet.objects.all()), list(form.fields["subnet"].queryset)
647 )
648
649@@ -47,7 +47,7 @@ class TestInterfaceLinkForm(MAASServerTestCase):
650 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
651 subnets = [factory.make_Subnet(vlan=interface.vlan) for _ in range(3)]
652 form = InterfaceLinkForm(instance=interface, data={})
653- self.assertItemsEqual(subnets, form.fields["subnet"].queryset)
654+ self.assertCountEqual(subnets, form.fields["subnet"].queryset)
655
656 def test_AUTO_requires_subnet(self):
657 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
658@@ -673,7 +673,7 @@ class TestInterfaceSetDefaultGatwayForm(MAASServerTestCase):
659 link_ids = [link.id for link in links]
660 form = InterfaceSetDefaultGatwayForm(instance=interface, data={})
661 choice_ids = [choice[0] for choice in form.fields["link_id"].choices]
662- self.assertItemsEqual(link_ids, choice_ids)
663+ self.assertCountEqual(link_ids, choice_ids)
664
665 def test_sets_gateway_links_works_on_dhcp_with_gateway_ip(self):
666 interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL)
667diff --git a/src/maasserver/forms/tests/test_licensekey.py b/src/maasserver/forms/tests/test_licensekey.py
668index 2159764..354a021 100644
669--- a/src/maasserver/forms/tests/test_licensekey.py
670+++ b/src/maasserver/forms/tests/test_licensekey.py
671@@ -103,8 +103,8 @@ class TestLicenseKeyForm(MAASServerTestCase):
672 def test_requires_all_fields(self):
673 form = LicenseKeyForm(data={})
674 self.assertFalse(form.is_valid(), form.errors)
675- self.assertItemsEqual(
676- ["osystem", "distro_series", "license_key"], form.errors.keys()
677+ self.assertEqual(
678+ {"osystem", "distro_series", "license_key"}, form.errors.keys()
679 )
680
681 def test_errors_on_not_unique(self):
682@@ -178,4 +178,4 @@ class TestLicenseKeyForm(MAASServerTestCase):
683 for release in releases
684 ]
685 form = LicenseKeyForm()
686- self.assertItemsEqual(choices, form.fields["distro_series"].choices)
687+ self.assertCountEqual(choices, form.fields["distro_series"].choices)
688diff --git a/src/maasserver/forms/tests/test_machine.py b/src/maasserver/forms/tests/test_machine.py
689index 1b6182c..a57023e 100644
690--- a/src/maasserver/forms/tests/test_machine.py
691+++ b/src/maasserver/forms/tests/test_machine.py
692@@ -44,8 +44,8 @@ class TestMachineForm(MAASServerTestCase):
693 def test_contains_limited_set_of_fields(self):
694 form = MachineForm()
695
696- self.assertItemsEqual(
697- [
698+ self.assertEqual(
699+ {
700 "hostname",
701 "domain",
702 "architecture",
703@@ -59,8 +59,8 @@ class TestMachineForm(MAASServerTestCase):
704 "install_rackd",
705 "ephemeral_deploy",
706 "commission",
707- ],
708- list(form.fields),
709+ },
710+ form.fields.keys(),
711 )
712
713 def test_accepts_usable_architecture(self):
714@@ -79,7 +79,7 @@ class TestMachineForm(MAASServerTestCase):
715 }
716 )
717 self.assertFalse(form.is_valid())
718- self.assertItemsEqual(["architecture"], form._errors.keys())
719+ self.assertEqual({"architecture"}, form._errors.keys())
720
721 def test_starts_with_default_architecture(self):
722 arches = sorted([factory.make_name("arch") for _ in range(5)])
723@@ -146,7 +146,7 @@ class TestMachineForm(MAASServerTestCase):
724 instance=node,
725 )
726 self.assertFalse(form.is_valid())
727- self.assertItemsEqual(["osystem"], form._errors.keys())
728+ self.assertEqual({"osystem"}, form._errors.keys())
729
730 def test_starts_with_default_osystem(self):
731 user = factory.make_User()
732@@ -190,7 +190,7 @@ class TestMachineForm(MAASServerTestCase):
733 instance=node,
734 )
735 self.assertFalse(form.is_valid())
736- self.assertItemsEqual(["distro_series"], form._errors.keys())
737+ self.assertEqual({"distro_series"}, form._errors.keys())
738
739 def test_set_distro_series_accepts_short_distro_series(self):
740 user = factory.make_User()
741@@ -252,7 +252,7 @@ class TestMachineForm(MAASServerTestCase):
742 instance=node,
743 )
744 self.assertFalse(form.is_valid())
745- self.assertItemsEqual(["distro_series"], form._errors.keys())
746+ self.assertEqual({"distro_series"}, form._errors.keys())
747
748 def test_rejects_when_validate_license_key_returns_False(self):
749 user = factory.make_User()
750@@ -277,7 +277,7 @@ class TestMachineForm(MAASServerTestCase):
751 instance=node,
752 )
753 self.assertFalse(form.is_valid())
754- self.assertItemsEqual(["license_key"], form._errors.keys())
755+ self.assertEqual({"license_key"}, form._errors.keys())
756
757 def test_rejects_when_validate_license_key_for_returns_False(self):
758 user = factory.make_User()
759@@ -301,7 +301,7 @@ class TestMachineForm(MAASServerTestCase):
760 instance=node,
761 )
762 self.assertFalse(form.is_valid())
763- self.assertItemsEqual(["license_key"], form._errors.keys())
764+ self.assertEqual({"license_key"}, form._errors.keys())
765
766 def test_rejects_when_validate_license_key_for_raise_no_connection(self):
767 user = factory.make_User()
768@@ -325,7 +325,7 @@ class TestMachineForm(MAASServerTestCase):
769 instance=node,
770 )
771 self.assertFalse(form.is_valid())
772- self.assertItemsEqual(["license_key"], form._errors.keys())
773+ self.assertEqual({"license_key"}, form._errors.keys())
774
775 def test_rejects_when_validate_license_key_for_raise_timeout(self):
776 user = factory.make_User()
777@@ -349,7 +349,7 @@ class TestMachineForm(MAASServerTestCase):
778 instance=node,
779 )
780 self.assertFalse(form.is_valid())
781- self.assertItemsEqual(["license_key"], form._errors.keys())
782+ self.assertEqual({"license_key"}, form._errors.keys())
783
784 def test_rejects_when_validate_license_key_for_raise_no_os(self):
785 user = factory.make_User()
786@@ -373,7 +373,7 @@ class TestMachineForm(MAASServerTestCase):
787 instance=node,
788 )
789 self.assertFalse(form.is_valid())
790- self.assertItemsEqual(["license_key"], form._errors.keys())
791+ self.assertEqual({"license_key"}, form._errors.keys())
792
793
794 class TestAdminMachineForm(MAASServerTestCase):
795@@ -383,8 +383,8 @@ class TestAdminMachineForm(MAASServerTestCase):
796 node = factory.make_Node(owner=user)
797 form = AdminMachineForm(instance=node)
798
799- self.assertItemsEqual(
800- [
801+ self.assertEqual(
802+ {
803 "hostname",
804 "description",
805 "domain",
806@@ -405,8 +405,8 @@ class TestAdminMachineForm(MAASServerTestCase):
807 "power_type",
808 "pool",
809 "commission",
810- ],
811- list(form.fields),
812+ },
813+ form.fields.keys(),
814 )
815
816 def test_AdminMachineForm_populates_power_type_choices(self):
817diff --git a/src/maasserver/forms/tests/test_machinewithmacaddresses.py b/src/maasserver/forms/tests/test_machinewithmacaddresses.py
818index ded0fc8..cba79cf 100644
819--- a/src/maasserver/forms/tests/test_machinewithmacaddresses.py
820+++ b/src/maasserver/forms/tests/test_machinewithmacaddresses.py
821@@ -197,7 +197,7 @@ class TestMachineWithMACAddressesForm(MAASServerTestCase):
822
823 self.assertIsNotNone(node.id) # The node is persisted.
824 self.assertEqual(NODE_STATUS.NEW, node.status)
825- self.assertItemsEqual(
826+ self.assertCountEqual(
827 macs, [nic.mac_address for nic in node.interface_set.all()]
828 )
829
830diff --git a/src/maasserver/forms/tests/test_node.py b/src/maasserver/forms/tests/test_node.py
831index b5ae7e0..f285ab3 100644
832--- a/src/maasserver/forms/tests/test_node.py
833+++ b/src/maasserver/forms/tests/test_node.py
834@@ -18,9 +18,9 @@ class TestNodeForm(MAASServerTestCase):
835 def test_contains_limited_set_of_fields(self):
836 form = NodeForm()
837
838- self.assertItemsEqual(
839- ["hostname", "domain", "disable_ipv4", "swap_size"],
840- list(form.fields),
841+ self.assertEqual(
842+ {"hostname", "domain", "disable_ipv4", "swap_size"},
843+ form.fields.keys(),
844 )
845
846 def test_accepts_hostname(self):
847@@ -96,8 +96,8 @@ class TestAdminNodeForm(MAASServerTestCase):
848 node = factory.make_Node(owner=user)
849 form = AdminNodeForm(instance=node)
850
851- self.assertItemsEqual(
852- [
853+ self.assertEqual(
854+ {
855 "hostname",
856 "description",
857 "domain",
858@@ -107,8 +107,8 @@ class TestAdminNodeForm(MAASServerTestCase):
859 "memory",
860 "zone",
861 "pool",
862- ],
863- list(form.fields),
864+ },
865+ form.fields.keys(),
866 )
867
868 def test_initialises_zone(self):
869diff --git a/src/maasserver/forms/tests/test_packagerepository.py b/src/maasserver/forms/tests/test_packagerepository.py
870index 2cc20a5..fa1b0f5 100644
871--- a/src/maasserver/forms/tests/test_packagerepository.py
872+++ b/src/maasserver/forms/tests/test_packagerepository.py
873@@ -104,7 +104,7 @@ class TestPackageRepositoryForm(MAASServerTestCase):
874 repo.delete()
875 form = PackageRepositoryForm(data=params)
876 self.assertFalse(form.is_valid())
877- self.assertItemsEqual([], PackageRepository.objects.all())
878+ self.assertCountEqual([], PackageRepository.objects.all())
879
880 def test_updates_name(self):
881 package_repository = factory.make_PackageRepository()
882@@ -187,7 +187,7 @@ class TestPackageRepositoryForm(MAASServerTestCase):
883 endpoint = factory.pick_choice(ENDPOINT_CHOICES)
884 package_repository = form.save(endpoint, request)
885 self.assertAttributes(package_repository, params)
886- self.assertItemsEqual(
887+ self.assertCountEqual(
888 package_repository.arches, PackageRepository.MAIN_ARCHES
889 )
890
891@@ -203,7 +203,7 @@ class TestPackageRepositoryForm(MAASServerTestCase):
892 request.user = factory.make_User()
893 endpoint = factory.pick_choice(ENDPOINT_CHOICES)
894 package_repository = form.save(endpoint, request)
895- self.assertItemsEqual(
896+ self.assertCountEqual(
897 package_repository.arches, PackageRepository.PORTS_ARCHES
898 )
899
900@@ -233,17 +233,17 @@ class TestPackageRepositoryForm(MAASServerTestCase):
901 request.user = factory.make_User()
902 endpoint = factory.pick_choice(ENDPOINT_CHOICES)
903 repo = form.save(endpoint, request)
904- self.assertItemsEqual(["i386", "armhf"], repo.arches)
905+ self.assertCountEqual(["i386", "armhf"], repo.arches)
906 form = PackageRepositoryForm(
907 instance=package_repository, data={"arches": ["i386, armhf"]}
908 )
909 repo = form.save(endpoint, request)
910- self.assertItemsEqual(["i386", "armhf"], repo.arches)
911+ self.assertCountEqual(["i386", "armhf"], repo.arches)
912 form = PackageRepositoryForm(
913 instance=package_repository, data={"arches": ["i386"]}
914 )
915 repo = form.save(endpoint, request)
916- self.assertItemsEqual(["i386"], repo.arches)
917+ self.assertCountEqual(["i386"], repo.arches)
918
919 def test_distribution_comma_cleaning(self):
920 package_repository = factory.make_PackageRepository()
921@@ -254,17 +254,17 @@ class TestPackageRepositoryForm(MAASServerTestCase):
922 request.user = factory.make_User()
923 endpoint = factory.pick_choice(ENDPOINT_CHOICES)
924 repo = form.save(endpoint, request)
925- self.assertItemsEqual(["val1", "val2"], repo.distributions)
926+ self.assertCountEqual(["val1", "val2"], repo.distributions)
927 form = PackageRepositoryForm(
928 instance=package_repository, data={"distributions": ["val1, val2"]}
929 )
930 repo = form.save(endpoint, request)
931- self.assertItemsEqual(["val1", "val2"], repo.distributions)
932+ self.assertCountEqual(["val1", "val2"], repo.distributions)
933 form = PackageRepositoryForm(
934 instance=package_repository, data={"distributions": ["val1"]}
935 )
936 repo = form.save(endpoint, request)
937- self.assertItemsEqual(["val1"], repo.distributions)
938+ self.assertEqual(["val1"], repo.distributions)
939
940 def test_disabled_pocket_comma_cleaning(self):
941 package_repository = factory.make_PackageRepository()
942@@ -276,18 +276,18 @@ class TestPackageRepositoryForm(MAASServerTestCase):
943 request.user = factory.make_User()
944 endpoint = factory.pick_choice(ENDPOINT_CHOICES)
945 repo = form.save(endpoint, request)
946- self.assertItemsEqual(["updates", "backports"], repo.disabled_pockets)
947+ self.assertCountEqual(["updates", "backports"], repo.disabled_pockets)
948 form = PackageRepositoryForm(
949 instance=package_repository,
950 data={"disabled_pockets": ["updates, backports"]},
951 )
952 repo = form.save(endpoint, request)
953- self.assertItemsEqual(["updates", "backports"], repo.disabled_pockets)
954+ self.assertCountEqual(["updates", "backports"], repo.disabled_pockets)
955 form = PackageRepositoryForm(
956 instance=package_repository, data={"disabled_pockets": ["updates"]}
957 )
958 repo = form.save(endpoint, request)
959- self.assertItemsEqual(["updates"], repo.disabled_pockets)
960+ self.assertEqual(["updates"], repo.disabled_pockets)
961
962 def test_disabled_component_comma_cleaning(self):
963 package_repository = factory.make_PackageRepository(
964@@ -301,23 +301,19 @@ class TestPackageRepositoryForm(MAASServerTestCase):
965 request.user = factory.make_User()
966 endpoint = factory.pick_choice(ENDPOINT_CHOICES)
967 repo = form.save(endpoint, request)
968- self.assertItemsEqual(
969- ["universe", "multiverse"], repo.disabled_components
970- )
971+ self.assertEqual(["universe", "multiverse"], repo.disabled_components)
972 form = PackageRepositoryForm(
973 instance=package_repository,
974 data={"disabled_components": ["universe, multiverse"]},
975 )
976 repo = form.save(endpoint, request)
977- self.assertItemsEqual(
978- ["universe", "multiverse"], repo.disabled_components
979- )
980+ self.assertEqual(["universe", "multiverse"], repo.disabled_components)
981 form = PackageRepositoryForm(
982 instance=package_repository,
983 data={"disabled_components": ["universe"]},
984 )
985 repo = form.save(endpoint, request)
986- self.assertItemsEqual(["universe"], repo.disabled_components)
987+ self.assertEqual(["universe"], repo.disabled_components)
988
989 def test_component_comma_cleaning(self):
990 package_repository = factory.make_PackageRepository()
991@@ -328,17 +324,17 @@ class TestPackageRepositoryForm(MAASServerTestCase):
992 request.user = factory.make_User()
993 endpoint = factory.pick_choice(ENDPOINT_CHOICES)
994 repo = form.save(endpoint, request)
995- self.assertItemsEqual(["val1", "val2"], repo.components)
996+ self.assertCountEqual(["val1", "val2"], repo.components)
997 form = PackageRepositoryForm(
998 instance=package_repository, data={"components": ["val1, val2"]}
999 )
1000 repo = form.save(endpoint, request)
1001- self.assertItemsEqual(["val1", "val2"], repo.components)
1002+ self.assertCountEqual(["val1", "val2"], repo.components)
1003 form = PackageRepositoryForm(
1004 instance=package_repository, data={"components": ["val1"]}
1005 )
1006 repo = form.save(endpoint, request)
1007- self.assertItemsEqual(["val1"], repo.components)
1008+ self.assertCountEqual(["val1"], repo.components)
1009
1010 def test_updates_disable_sources(self):
1011 package_repository = factory.make_PackageRepository()
1012diff --git a/src/maasserver/forms/tests/test_partition.py b/src/maasserver/forms/tests/test_partition.py
1013index ee378d0..762c9e8 100644
1014--- a/src/maasserver/forms/tests/test_partition.py
1015+++ b/src/maasserver/forms/tests/test_partition.py
1016@@ -120,7 +120,7 @@ class TestFormatPartitionForm(MAASServerTestCase):
1017 def test_requires_fields(self):
1018 form = FormatPartitionForm(partition=factory.make_Partition(), data={})
1019 self.assertFalse(form.is_valid(), form.errors)
1020- self.assertItemsEqual(["fstype"], form.errors.keys())
1021+ self.assertEqual({"fstype"}, form.errors.keys())
1022
1023 def test_is_not_valid_if_invalid_uuid(self):
1024 fstype = factory.pick_filesystem_type()
1025diff --git a/src/maasserver/forms/tests/test_pods.py b/src/maasserver/forms/tests/test_pods.py
1026index 77ac91a..061cda2 100644
1027--- a/src/maasserver/forms/tests/test_pods.py
1028+++ b/src/maasserver/forms/tests/test_pods.py
1029@@ -168,8 +168,8 @@ class TestPodForm(MAASTransactionServerTestCase):
1030
1031 def test_contains_limited_set_of_fields(self):
1032 form = PodForm()
1033- self.assertItemsEqual(
1034- [
1035+ self.assertEqual(
1036+ {
1037 "name",
1038 "tags",
1039 "type",
1040@@ -179,8 +179,8 @@ class TestPodForm(MAASTransactionServerTestCase):
1041 "memory_over_commit_ratio",
1042 "default_storage_pool",
1043 "default_macvlan_mode",
1044- ],
1045- list(form.fields),
1046+ },
1047+ form.fields.keys(),
1048 )
1049
1050 def test_creates_pod_with_discovered_information(self):
1051@@ -206,8 +206,8 @@ class TestPodForm(MAASTransactionServerTestCase):
1052 for relation in pod.routable_rack_relationships.all()
1053 if not relation.routable
1054 ]
1055- self.assertItemsEqual(routable_racks, discovered_racks)
1056- self.assertItemsEqual(not_routable_racks, failed_racks)
1057+ self.assertCountEqual(routable_racks, discovered_racks)
1058+ self.assertCountEqual(not_routable_racks, failed_racks)
1059
1060 def test_creates_pod_with_only_required(self):
1061 (
1062@@ -291,7 +291,7 @@ class TestPodForm(MAASTransactionServerTestCase):
1063 form = PodForm(data=pod_info, request=self.request)
1064 self.assertTrue(form.is_valid(), form._errors)
1065 pod = form.save()
1066- self.assertItemsEqual(tags, pod.tags)
1067+ self.assertCountEqual(tags, pod.tags)
1068
1069 def test_creates_pod_with_zone(self):
1070 self.fake_pod_discovery()
1071@@ -398,8 +398,8 @@ class TestPodForm(MAASTransactionServerTestCase):
1072 for relation in pod.routable_rack_relationships.all()
1073 if not relation.routable
1074 ]
1075- self.assertItemsEqual(routable_racks, discovered_racks)
1076- self.assertItemsEqual(not_routable_racks, failed_racks)
1077+ self.assertCountEqual(routable_racks, discovered_racks)
1078+ self.assertCountEqual(not_routable_racks, failed_racks)
1079
1080 yield deferToDatabase(validate_rack_routes)
1081
1082@@ -422,7 +422,7 @@ class TestPodForm(MAASTransactionServerTestCase):
1083 yield form.save()
1084
1085 def validate_no_pods():
1086- self.assertItemsEqual([], Pod.objects.all())
1087+ self.assertEqual([], list(Pod.objects.all()))
1088
1089 yield deferToDatabase(validate_no_pods)
1090
1091@@ -533,8 +533,8 @@ class TestPodForm(MAASTransactionServerTestCase):
1092 for relation in pod.routable_rack_relationships.all()
1093 if not relation.routable
1094 ]
1095- self.assertItemsEqual(routable_racks, discovered_racks)
1096- self.assertItemsEqual(not_routable_racks, failed_racks)
1097+ self.assertCountEqual(routable_racks, discovered_racks)
1098+ self.assertCountEqual(not_routable_racks, failed_racks)
1099
1100 def test_updates_default_storage_pool(self):
1101 discovered_pod, _, _ = self.fake_pod_discovery()
1102@@ -637,8 +637,8 @@ class TestPodForm(MAASTransactionServerTestCase):
1103 for relation in pod.routable_rack_relationships.all()
1104 if not relation.routable
1105 ]
1106- self.assertItemsEqual(routable_racks, discovered_racks)
1107- self.assertItemsEqual(not_routable_racks, failed_racks)
1108+ self.assertCountEqual(routable_racks, discovered_racks)
1109+ self.assertCountEqual(not_routable_racks, failed_racks)
1110
1111 yield deferToDatabase(validate_rack_routes)
1112
1113@@ -2509,7 +2509,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1114 iftype=INTERFACE_TYPE.BRIDGE, node=node, vlan=vlan
1115 )
1116 interfaces = get_known_host_interfaces(factory.make_Pod(host=node))
1117- self.assertItemsEqual(
1118+ self.assertCountEqual(
1119 interfaces,
1120 [
1121 KnownHostInterface(
1122@@ -2530,7 +2530,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1123 iftype=INTERFACE_TYPE.PHYSICAL, node=node, vlan=vlan
1124 )
1125 interfaces = get_known_host_interfaces(factory.make_Pod(host=node))
1126- self.assertItemsEqual(
1127+ self.assertCountEqual(
1128 interfaces,
1129 [
1130 KnownHostInterface(
1131@@ -2556,7 +2556,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1132 interfaces = get_known_host_interfaces(
1133 factory.make_Pod(host=node, pod_type="lxd")
1134 )
1135- self.assertItemsEqual(
1136+ self.assertCountEqual(
1137 interfaces,
1138 [
1139 KnownHostInterface(
1140@@ -2582,7 +2582,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1141 interfaces = get_known_host_interfaces(
1142 factory.make_Pod(host=node, pod_type="virsh")
1143 )
1144- self.assertItemsEqual(
1145+ self.assertCountEqual(
1146 interfaces,
1147 [
1148 KnownHostInterface(
1149@@ -2615,7 +2615,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1150 interfaces = get_known_host_interfaces(
1151 factory.make_Pod(host=node, pod_type="lxd")
1152 )
1153- self.assertItemsEqual(
1154+ self.assertCountEqual(
1155 interfaces,
1156 [
1157 KnownHostInterface(
1158@@ -2655,7 +2655,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1159 interfaces = get_known_host_interfaces(
1160 factory.make_Pod(host=node, pod_type="virsh")
1161 )
1162- self.assertItemsEqual(
1163+ self.assertCountEqual(
1164 interfaces,
1165 [
1166 KnownHostInterface(
1167@@ -2684,7 +2684,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1168 iftype=INTERFACE_TYPE.PHYSICAL, node=node, link_connected=False
1169 )
1170 interfaces = get_known_host_interfaces(factory.make_Pod(host=node))
1171- self.assertItemsEqual(
1172+ self.assertCountEqual(
1173 interfaces,
1174 [
1175 KnownHostInterface(
1176@@ -2715,7 +2715,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1177 iftype=INTERFACE_TYPE.PHYSICAL, node=node, vlan=vlan
1178 )
1179 interfaces = get_known_host_interfaces(factory.make_Pod(host=node))
1180- self.assertItemsEqual(
1181+ self.assertCountEqual(
1182 interfaces,
1183 [
1184 KnownHostInterface(
1185@@ -2747,7 +2747,7 @@ class TestGetKnownHostInterfaces(MAASServerTestCase):
1186 iftype=INTERFACE_TYPE.PHYSICAL, node=node, vlan=vlan
1187 )
1188 interfaces = get_known_host_interfaces(factory.make_Pod(host=node))
1189- self.assertItemsEqual(
1190+ self.assertCountEqual(
1191 interfaces,
1192 [
1193 KnownHostInterface(
1194diff --git a/src/maasserver/forms/tests/test_raid.py b/src/maasserver/forms/tests/test_raid.py
1195index 131ff1c..bfa5647 100644
1196--- a/src/maasserver/forms/tests/test_raid.py
1197+++ b/src/maasserver/forms/tests/test_raid.py
1198@@ -77,19 +77,19 @@ class TestCreateRaidForm(MAASServerTestCase):
1199 part.name for part in partitions
1200 ]
1201 form = CreateRaidForm(node=node, data={})
1202- self.assertItemsEqual(
1203+ self.assertCountEqual(
1204 block_devices_choices,
1205 [k for (k, v) in form.fields["block_devices"].choices],
1206 )
1207- self.assertItemsEqual(
1208+ self.assertCountEqual(
1209 partitions_choices,
1210 [k for (k, v) in form.fields["partitions"].choices],
1211 )
1212- self.assertItemsEqual(
1213+ self.assertCountEqual(
1214 block_devices_choices,
1215 [k for (k, v) in form.fields["spare_devices"].choices],
1216 )
1217- self.assertItemsEqual(
1218+ self.assertCountEqual(
1219 partitions_choices,
1220 [k for (k, v) in form.fields["spare_partitions"].choices],
1221 )
1222@@ -127,14 +127,14 @@ class TestCreateRaidForm(MAASServerTestCase):
1223 raid.get_size(),
1224 )
1225 self.assertEqual(FILESYSTEM_GROUP_TYPE.RAID_6, raid.group_type)
1226- self.assertItemsEqual(
1227+ self.assertCountEqual(
1228 block_devices,
1229 [
1230 fs.block_device.id
1231 for fs in raid.filesystems.exclude(block_device=None)
1232 ],
1233 )
1234- self.assertItemsEqual(
1235+ self.assertCountEqual(
1236 partitions,
1237 [
1238 fs.partition.id
1239@@ -179,14 +179,14 @@ class TestCreateRaidForm(MAASServerTestCase):
1240 raid.get_size(),
1241 )
1242 self.assertEqual(FILESYSTEM_GROUP_TYPE.RAID_6, raid.group_type)
1243- self.assertItemsEqual(
1244+ self.assertCountEqual(
1245 block_devices_ids,
1246 [
1247 fs.block_device.id
1248 for fs in raid.filesystems.exclude(block_device=None)
1249 ],
1250 )
1251- self.assertItemsEqual(
1252+ self.assertCountEqual(
1253 partition_ids,
1254 [
1255 fs.partition.id
1256diff --git a/src/maasserver/forms/tests/test_script.py b/src/maasserver/forms/tests/test_script.py
1257index 13a8d64..f844ccf 100644
1258--- a/src/maasserver/forms/tests/test_script.py
1259+++ b/src/maasserver/forms/tests/test_script.py
1260@@ -36,12 +36,12 @@ class TestScriptForm(MAASServerTestCase):
1261 def test_create_requires_name(self):
1262 form = ScriptForm(data={"script": factory.make_script_content()})
1263 self.assertFalse(form.is_valid())
1264- self.assertItemsEqual([], VersionedTextFile.objects.all())
1265+ self.assertCountEqual([], VersionedTextFile.objects.all())
1266
1267 def test_create_requires_script(self):
1268 form = ScriptForm(data={"name": factory.make_string()})
1269 self.assertFalse(form.is_valid())
1270- self.assertItemsEqual([], VersionedTextFile.objects.all())
1271+ self.assertCountEqual([], VersionedTextFile.objects.all())
1272
1273 def test_create_with_default_values(self):
1274 name = factory.make_name("name")
1275@@ -58,14 +58,14 @@ class TestScriptForm(MAASServerTestCase):
1276 self.assertEqual(SCRIPT_TYPE.TESTING, script.script_type)
1277 self.assertEqual(HARDWARE_TYPE.NODE, script.hardware_type)
1278 self.assertEqual(SCRIPT_PARALLEL.DISABLED, script.parallel)
1279- self.assertDictEqual({}, script.packages)
1280- self.assertDictEqual({}, script.results)
1281- self.assertDictEqual({}, script.parameters)
1282+ self.assertEqual({}, script.packages)
1283+ self.assertEqual({}, script.results)
1284+ self.assertEqual({}, script.parameters)
1285 self.assertEqual(timedelta(0), script.timeout)
1286 self.assertFalse(script.destructive)
1287 self.assertEqual(script_content, script.script.data)
1288 self.assertFalse(script.default)
1289- self.assertItemsEqual([], script.for_hardware)
1290+ self.assertEqual([], script.for_hardware)
1291 self.assertFalse(script.may_reboot)
1292 self.assertFalse(script.recommission)
1293
1294@@ -130,16 +130,16 @@ class TestScriptForm(MAASServerTestCase):
1295 self.assertEqual(script_type, script.script_type)
1296 self.assertEqual(hardware_type, script.hardware_type)
1297 self.assertEqual(parallel, script.parallel)
1298- self.assertDictEqual(packages, script.packages)
1299- self.assertDictEqual({}, script.results)
1300- self.assertDictEqual({}, script.parameters)
1301- self.assertDictEqual(packages, script.packages)
1302+ self.assertEqual(packages, script.packages)
1303+ self.assertEqual({}, script.results)
1304+ self.assertEqual({}, script.parameters)
1305+ self.assertEqual(packages, script.packages)
1306 self.assertEqual(timedelta(0, timeout), script.timeout)
1307 self.assertEqual(destructive, script.destructive)
1308 self.assertEqual(script_content, script.script.data)
1309 self.assertEqual(comment, script.script.comment)
1310 self.assertEqual(may_reboot, script.may_reboot)
1311- self.assertItemsEqual(for_hardware, script.for_hardware)
1312+ self.assertCountEqual(for_hardware, script.for_hardware)
1313 self.assertEqual(recommission, script.recommission)
1314 self.assertFalse(script.default)
1315
1316@@ -221,9 +221,9 @@ class TestScriptForm(MAASServerTestCase):
1317 self.assertEqual(script_type, script.script_type)
1318 self.assertEqual(hardware_type, script.hardware_type)
1319 self.assertEqual(parallel, script.parallel)
1320- self.assertDictEqual({}, script.results)
1321- self.assertDictEqual({}, script.parameters)
1322- self.assertDictEqual(packages, script.packages)
1323+ self.assertEqual({}, script.results)
1324+ self.assertEqual({}, script.parameters)
1325+ self.assertEqual(packages, script.packages)
1326 self.assertEqual(timedelta(0, timeout), script.timeout)
1327 self.assertEqual(destructive, script.destructive)
1328 self.assertEqual(script_content, script.script.data)
1329@@ -329,7 +329,7 @@ class TestScriptForm(MAASServerTestCase):
1330 data={"comment": factory.make_name("comment")}, instance=script
1331 )
1332 self.assertFalse(form.is_valid())
1333- self.assertDictEqual(
1334+ self.assertEqual(
1335 {
1336 "comment": [
1337 '"comment" may only be used when specifying a "script" '
1338@@ -368,16 +368,16 @@ class TestScriptForm(MAASServerTestCase):
1339 self.assertEqual(tags, script.tags)
1340 self.assertEqual(script_type, script.script_type)
1341 self.assertEqual(hardware_type, script.hardware_type)
1342- self.assertDictEqual(packages, script.packages)
1343+ self.assertEqual(packages, script.packages)
1344 self.assertEqual(parallel, script.parallel)
1345- self.assertDictEqual(results, script.results)
1346- self.assertDictEqual(parameters, script.parameters)
1347+ self.assertEqual(results, script.results)
1348+ self.assertEqual(parameters, script.parameters)
1349 self.assertEqual(timeout, script.timeout)
1350 self.assertEqual(destructive, script.destructive)
1351 self.assertFalse(script.default)
1352 self.assertEqual(script_content, script.script.data)
1353 self.assertEqual(may_reboot, script.may_reboot)
1354- self.assertItemsEqual(for_hardware, script.for_hardware)
1355+ self.assertCountEqual(for_hardware, script.for_hardware)
1356 self.assertEqual(recommission, script.recommission)
1357
1358 def test_yaml_doesnt_update_tags(self):
1359@@ -394,7 +394,7 @@ class TestScriptForm(MAASServerTestCase):
1360 )
1361 self.assertTrue(form.is_valid(), form.errors)
1362 script = form.save()
1363- self.assertItemsEqual(orig_tags, script.tags)
1364+ self.assertCountEqual(orig_tags, script.tags)
1365
1366 def test_yaml_doesnt_update_timeout(self):
1367 script = factory.make_Script()
1368@@ -435,11 +435,11 @@ class TestScriptForm(MAASServerTestCase):
1369 }
1370 )
1371 self.assertFalse(form.is_valid())
1372- self.assertDictEqual(
1373+ self.assertEqual(
1374 {"script_type": ["Script type must be testing or commissioning"]},
1375 form.errors,
1376 )
1377- self.assertItemsEqual([], VersionedTextFile.objects.all())
1378+ self.assertCountEqual([], VersionedTextFile.objects.all())
1379
1380 def test_can_use_hardware_type_name(self):
1381 hardware_type = factory.pick_choice(HARDWARE_TYPE_CHOICES)
1382@@ -464,7 +464,7 @@ class TestScriptForm(MAASServerTestCase):
1383 }
1384 )
1385 self.assertFalse(form.is_valid())
1386- self.assertDictEqual(
1387+ self.assertEqual(
1388 {
1389 "hardware_type": [
1390 "Hardware type must be node, cpu, memory, storage, or gpu"
1391@@ -472,7 +472,7 @@ class TestScriptForm(MAASServerTestCase):
1392 },
1393 form.errors,
1394 )
1395- self.assertItemsEqual([], VersionedTextFile.objects.all())
1396+ self.assertCountEqual([], VersionedTextFile.objects.all())
1397
1398 def test_can_use_parallel(self):
1399 script_parallel = factory.pick_choice(SCRIPT_PARALLEL_CHOICES)
1400@@ -497,7 +497,7 @@ class TestScriptForm(MAASServerTestCase):
1401 }
1402 )
1403 self.assertFalse(form.is_valid())
1404- self.assertDictEqual(
1405+ self.assertEqual(
1406 {
1407 "parallel": [
1408 "Script parallel must be disabled, instance, or any."
1409@@ -505,7 +505,7 @@ class TestScriptForm(MAASServerTestCase):
1410 },
1411 form.errors,
1412 )
1413- self.assertItemsEqual([], VersionedTextFile.objects.all())
1414+ self.assertCountEqual([], VersionedTextFile.objects.all())
1415
1416 def test_errors_on_no_shebang_in_script(self):
1417 form = ScriptForm(
1418@@ -515,9 +515,7 @@ class TestScriptForm(MAASServerTestCase):
1419 }
1420 )
1421 self.assertFalse(form.is_valid())
1422- self.assertDictEqual(
1423- {"script": ["Must start with shebang."]}, form.errors
1424- )
1425+ self.assertEqual({"script": ["Must start with shebang."]}, form.errors)
1426
1427 def test_errors_on_invalid_parameters(self):
1428 form = ScriptForm(
1429@@ -528,16 +526,14 @@ class TestScriptForm(MAASServerTestCase):
1430 }
1431 )
1432 self.assertFalse(form.is_valid())
1433- self.assertItemsEqual([], VersionedTextFile.objects.all())
1434+ self.assertCountEqual([], VersionedTextFile.objects.all())
1435
1436 def test_errors_on_reserved_name(self):
1437 form = ScriptForm(
1438 data={"name": "none", "script": factory.make_script_content()}
1439 )
1440 self.assertFalse(form.is_valid())
1441- self.assertDictEqual(
1442- {"name": ['"none" is a reserved name.']}, form.errors
1443- )
1444+ self.assertEqual({"name": ['"none" is a reserved name.']}, form.errors)
1445
1446 def test_errors_on_digit_name(self):
1447 form = ScriptForm(
1448@@ -547,7 +543,7 @@ class TestScriptForm(MAASServerTestCase):
1449 }
1450 )
1451 self.assertFalse(form.is_valid())
1452- self.assertDictEqual({"name": ["Cannot be a number."]}, form.errors)
1453+ self.assertEqual({"name": ["Cannot be a number."]}, form.errors)
1454
1455 def test_errors_on_whitespace_in_name(self):
1456 name = factory.make_name("with space")
1457@@ -558,7 +554,7 @@ class TestScriptForm(MAASServerTestCase):
1458 }
1459 )
1460 self.assertFalse(form.is_valid())
1461- self.assertDictEqual(
1462+ self.assertEqual(
1463 {
1464 "name": [
1465 "Name '%s' contains disallowed characters, e.g. space or quotes."
1466@@ -577,7 +573,7 @@ class TestScriptForm(MAASServerTestCase):
1467 }
1468 )
1469 self.assertFalse(form.is_valid())
1470- self.assertDictEqual(
1471+ self.assertEqual(
1472 {
1473 "name": [
1474 "Name '%s' contains disallowed characters, e.g. space or quotes."
1475@@ -641,23 +637,23 @@ class TestScriptForm(MAASServerTestCase):
1476 self.assertEqual(embedded_yaml["script_type"], script.script_type)
1477 self.assertEqual(embedded_yaml["hardware_type"], script.hardware_type)
1478 self.assertEqual(embedded_yaml["parallel"], script.parallel)
1479- self.assertItemsEqual(embedded_yaml["results"], script.results)
1480- self.assertItemsEqual(embedded_yaml["parameters"], script.parameters)
1481- self.assertDictEqual(embedded_yaml["packages"], script.packages)
1482+ self.assertCountEqual(embedded_yaml["results"], script.results)
1483+ self.assertCountEqual(embedded_yaml["parameters"], script.parameters)
1484+ self.assertEqual(embedded_yaml["packages"], script.packages)
1485 self.assertEqual(
1486 timedelta(0, embedded_yaml["timeout"]), script.timeout
1487 )
1488 self.assertEqual(embedded_yaml["destructive"], script.destructive)
1489 self.assertEqual(embedded_yaml["may_reboot"], script.may_reboot)
1490 if embedded_yaml["script_type"] == SCRIPT_TYPE.COMMISSIONING:
1491- self.assertItemsEqual(
1492+ self.assertCountEqual(
1493 embedded_yaml["for_hardware"], script.for_hardware
1494 )
1495 self.assertEqual(
1496 embedded_yaml["recommission"], script.recommission
1497 )
1498 else:
1499- self.assertItemsEqual([], script.for_hardware)
1500+ self.assertCountEqual([], script.for_hardware)
1501 self.assertFalse(script.recommission)
1502 self.assertFalse(script.default)
1503 self.assertEqual(script_content, script.script.data)
1504@@ -769,7 +765,7 @@ class TestScriptForm(MAASServerTestCase):
1505 }
1506 )
1507 self.assertFalse(form.is_valid())
1508- self.assertDictEqual(
1509+ self.assertEqual(
1510 {
1511 "tags": [
1512 "Embedded tags must be a string of comma seperated values, "
1513@@ -778,7 +774,7 @@ class TestScriptForm(MAASServerTestCase):
1514 },
1515 form.errors,
1516 )
1517- self.assertItemsEqual([], VersionedTextFile.objects.all())
1518+ self.assertCountEqual([], VersionedTextFile.objects.all())
1519
1520 def tests_yaml_tags_errors_on_list_of_non_string(self):
1521 form = ScriptForm(
1522@@ -790,7 +786,7 @@ class TestScriptForm(MAASServerTestCase):
1523 }
1524 )
1525 self.assertFalse(form.is_valid())
1526- self.assertDictEqual(
1527+ self.assertEqual(
1528 {
1529 "tags": [
1530 "Embedded tags must be a string of comma seperated values, "
1531@@ -799,7 +795,7 @@ class TestScriptForm(MAASServerTestCase):
1532 },
1533 form.errors,
1534 )
1535- self.assertItemsEqual([], VersionedTextFile.objects.all())
1536+ self.assertCountEqual([], VersionedTextFile.objects.all())
1537
1538 def test_packages_validate(self):
1539 apt_pkgs = [factory.make_name("apt_pkg") for _ in range(3)]
1540@@ -825,7 +821,7 @@ class TestScriptForm(MAASServerTestCase):
1541 )
1542 self.assertTrue(form.is_valid(), form.errors)
1543 script = form.save()
1544- self.assertDictEqual(
1545+ self.assertEqual(
1546 {"apt": apt_pkgs, "snap": [snap_pkg], "url": [url]},
1547 script.packages,
1548 )
1549@@ -850,7 +846,7 @@ class TestScriptForm(MAASServerTestCase):
1550 )
1551 self.assertTrue(form.is_valid(), form.errors)
1552 script = form.save()
1553- self.assertDictEqual(
1554+ self.assertEqual(
1555 {"apt": [apt_pkg], "snap": [snap_pkg], "url": [url]},
1556 script.packages,
1557 )
1558@@ -867,10 +863,10 @@ class TestScriptForm(MAASServerTestCase):
1559 }
1560 )
1561 self.assertFalse(form.is_valid())
1562- self.assertDictEqual(
1563+ self.assertEqual(
1564 {"packages": ["Each apt package must be a string."]}, form.errors
1565 )
1566- self.assertItemsEqual([], VersionedTextFile.objects.all())
1567+ self.assertCountEqual([], VersionedTextFile.objects.all())
1568
1569 def test_errors_when_url_package_isnt_string(self):
1570 form = ScriptForm(
1571@@ -884,10 +880,10 @@ class TestScriptForm(MAASServerTestCase):
1572 }
1573 )
1574 self.assertFalse(form.is_valid())
1575- self.assertDictEqual(
1576+ self.assertEqual(
1577 {"packages": ["Each url package must be a string."]}, form.errors
1578 )
1579- self.assertItemsEqual([], VersionedTextFile.objects.all())
1580+ self.assertCountEqual([], VersionedTextFile.objects.all())
1581
1582 def test_snap_package_dict_requires_name(self):
1583 form = ScriptForm(
1584@@ -901,10 +897,10 @@ class TestScriptForm(MAASServerTestCase):
1585 }
1586 )
1587 self.assertFalse(form.is_valid())
1588- self.assertDictEqual(
1589+ self.assertEqual(
1590 {"packages": ["Snap package name must be defined."]}, form.errors
1591 )
1592- self.assertItemsEqual([], VersionedTextFile.objects.all())
1593+ self.assertCountEqual([], VersionedTextFile.objects.all())
1594
1595 def test_snap_package_channel_must_be_valid(self):
1596 form = ScriptForm(
1597@@ -923,7 +919,7 @@ class TestScriptForm(MAASServerTestCase):
1598 }
1599 )
1600 self.assertFalse(form.is_valid())
1601- self.assertDictEqual(
1602+ self.assertEqual(
1603 {
1604 "packages": [
1605 "Snap channel must be stable, edge, beta, or candidate."
1606@@ -931,7 +927,7 @@ class TestScriptForm(MAASServerTestCase):
1607 },
1608 form.errors,
1609 )
1610- self.assertItemsEqual([], VersionedTextFile.objects.all())
1611+ self.assertCountEqual([], VersionedTextFile.objects.all())
1612
1613 def test_snap_package_mode_must_be_valid(self):
1614 form = ScriptForm(
1615@@ -950,11 +946,11 @@ class TestScriptForm(MAASServerTestCase):
1616 }
1617 )
1618 self.assertFalse(form.is_valid())
1619- self.assertDictEqual(
1620+ self.assertEqual(
1621 {"packages": ["Snap mode must be classic, dev, or jail."]},
1622 form.errors,
1623 )
1624- self.assertItemsEqual([], VersionedTextFile.objects.all())
1625+ self.assertCountEqual([], VersionedTextFile.objects.all())
1626
1627 def test_snap_package_list_must_be_strings(self):
1628 form = ScriptForm(
1629@@ -968,10 +964,10 @@ class TestScriptForm(MAASServerTestCase):
1630 }
1631 )
1632 self.assertFalse(form.is_valid())
1633- self.assertDictEqual(
1634+ self.assertEqual(
1635 {"packages": ["Snap package must be a string."]}, form.errors
1636 )
1637- self.assertItemsEqual([], VersionedTextFile.objects.all())
1638+ self.assertCountEqual([], VersionedTextFile.objects.all())
1639
1640 def test_allows_list_of_results(self):
1641 results = [factory.make_name("result") for _ in range(3)]
1642@@ -984,7 +980,7 @@ class TestScriptForm(MAASServerTestCase):
1643 )
1644 self.assertTrue(form.is_valid(), form.errors)
1645 script = form.save()
1646- self.assertItemsEqual(results, script.results)
1647+ self.assertCountEqual(results, script.results)
1648
1649 def test_allows_dictionary_of_results(self):
1650 results = {
1651@@ -1002,7 +998,7 @@ class TestScriptForm(MAASServerTestCase):
1652 )
1653 self.assertTrue(form.is_valid(), form.errors)
1654 script = form.save()
1655- self.assertDictEqual(results, script.results)
1656+ self.assertEqual(results, script.results)
1657
1658 def test_results_list_must_be_strings(self):
1659 form = ScriptForm(
1660@@ -1013,11 +1009,11 @@ class TestScriptForm(MAASServerTestCase):
1661 }
1662 )
1663 self.assertFalse(form.is_valid())
1664- self.assertDictEqual(
1665+ self.assertEqual(
1666 {"results": ["Each result in a result list must be a string."]},
1667 form.errors,
1668 )
1669- self.assertItemsEqual([], VersionedTextFile.objects.all())
1670+ self.assertCountEqual([], VersionedTextFile.objects.all())
1671
1672 def test_allows_dict_of_results(self):
1673 results = {
1674@@ -1036,7 +1032,7 @@ class TestScriptForm(MAASServerTestCase):
1675 )
1676 self.assertTrue(form.is_valid(), form.errors)
1677 script = form.save()
1678- self.assertDictEqual(results, script.results)
1679+ self.assertEqual(results, script.results)
1680
1681 def test_dict_of_results_requires_title(self):
1682 form = ScriptForm(
1683@@ -1050,11 +1046,11 @@ class TestScriptForm(MAASServerTestCase):
1684 }
1685 )
1686 self.assertFalse(form.is_valid())
1687- self.assertDictEqual(
1688+ self.assertEqual(
1689 {"results": ["title must be included in a result dictionary."]},
1690 form.errors,
1691 )
1692- self.assertItemsEqual([], VersionedTextFile.objects.all())
1693+ self.assertCountEqual([], VersionedTextFile.objects.all())
1694
1695 def test_title_description_of_result_must_be_strings(self):
1696 results = {
1697@@ -1068,7 +1064,7 @@ class TestScriptForm(MAASServerTestCase):
1698 }
1699 )
1700 self.assertFalse(form.is_valid())
1701- self.assertDictEqual(
1702+ self.assertEqual(
1703 {
1704 "results": [
1705 "title must be a string.",
1706@@ -1077,7 +1073,7 @@ class TestScriptForm(MAASServerTestCase):
1707 },
1708 form.errors,
1709 )
1710- self.assertItemsEqual([], VersionedTextFile.objects.all())
1711+ self.assertCountEqual([], VersionedTextFile.objects.all())
1712
1713 def test_results_must_be_list_or_dict(self):
1714 form = ScriptForm(
1715@@ -1088,7 +1084,7 @@ class TestScriptForm(MAASServerTestCase):
1716 }
1717 )
1718 self.assertFalse(form.is_valid())
1719- self.assertDictEqual(
1720+ self.assertEqual(
1721 {
1722 "results": [
1723 "results must be a list of strings or a dictionary of "
1724@@ -1097,7 +1093,7 @@ class TestScriptForm(MAASServerTestCase):
1725 },
1726 form.errors,
1727 )
1728- self.assertItemsEqual([], VersionedTextFile.objects.all())
1729+ self.assertCountEqual([], VersionedTextFile.objects.all())
1730
1731 def test_errors_when_hardware_not_a_list(self):
1732 form = ScriptForm(
1733@@ -1108,10 +1104,10 @@ class TestScriptForm(MAASServerTestCase):
1734 }
1735 )
1736 self.assertFalse(form.is_valid())
1737- self.assertDictEqual(
1738+ self.assertEqual(
1739 {"for_hardware": ["Must be a list or string"]}, form.errors
1740 )
1741- self.assertItemsEqual([], VersionedTextFile.objects.all())
1742+ self.assertCountEqual([], VersionedTextFile.objects.all())
1743
1744 def test_errors_when_hardware_invalid(self):
1745 hw_id = factory.make_name("hw_id")
1746@@ -1123,7 +1119,7 @@ class TestScriptForm(MAASServerTestCase):
1747 }
1748 )
1749 self.assertFalse(form.is_valid())
1750- self.assertDictEqual(
1751+ self.assertEqual(
1752 {
1753 "for_hardware": [
1754 "Hardware identifier '%s' must be a modalias, PCI ID, "
1755@@ -1133,7 +1129,7 @@ class TestScriptForm(MAASServerTestCase):
1756 },
1757 form.errors,
1758 )
1759- self.assertItemsEqual([], VersionedTextFile.objects.all())
1760+ self.assertCountEqual([], VersionedTextFile.objects.all())
1761
1762
1763 class TestCommissioningScriptForm(MAASServerTestCase):
1764@@ -1204,7 +1200,7 @@ class TestCommissioningScriptForm(MAASServerTestCase):
1765 )
1766 form = CommissioningScriptForm(files={"content": uploaded_file})
1767 self.assertFalse(form.is_valid())
1768- self.assertDictEqual(
1769+ self.assertEqual(
1770 {"content": ['name: "none" is a reserved name.']}, form.errors
1771 )
1772
1773@@ -1285,7 +1281,7 @@ class TestTestingScriptForm(MAASServerTestCase):
1774 )
1775 form = TestingScriptForm(files={"content": uploaded_file})
1776 self.assertFalse(form.is_valid())
1777- self.assertDictEqual(
1778+ self.assertEqual(
1779 {"content": ['name: "none" is a reserved name.']}, form.errors
1780 )
1781
1782diff --git a/src/maasserver/forms/tests/test_user.py b/src/maasserver/forms/tests/test_user.py
1783index 8cf451b..66edf77 100644
1784--- a/src/maasserver/forms/tests/test_user.py
1785+++ b/src/maasserver/forms/tests/test_user.py
1786@@ -108,7 +108,7 @@ class TestNewUserCreationForm(MAASServerTestCase):
1787 }
1788 form = NewUserCreationForm(params)
1789 form.save(commit=False)
1790- self.assertItemsEqual(
1791+ self.assertCountEqual(
1792 [], User.objects.filter(username=params["username"])
1793 )
1794
1795diff --git a/src/maasserver/forms/tests/test_vlan.py b/src/maasserver/forms/tests/test_vlan.py
1796index a2b19d9..b68c7f7 100644
1797--- a/src/maasserver/forms/tests/test_vlan.py
1798+++ b/src/maasserver/forms/tests/test_vlan.py
1799@@ -39,7 +39,7 @@ class TestVLANForm(MAASServerTestCase):
1800 relay_vlan = factory.make_VLAN()
1801 factory.make_VLAN(relay_vlan=relay_vlan)
1802 form = VLANForm(fabric=fabric, data={})
1803- self.assertItemsEqual(
1804+ self.assertCountEqual(
1805 [fabric.get_default_vlan(), relay_vlan],
1806 form.fields["relay_vlan"].queryset,
1807 )
1808@@ -48,13 +48,13 @@ class TestVLANForm(MAASServerTestCase):
1809 fabric = Fabric.objects.get_default_fabric()
1810 relay_vlan = fabric.get_default_vlan()
1811 form = VLANForm(instance=relay_vlan, data={})
1812- self.assertItemsEqual([], form.fields["relay_vlan"].queryset)
1813+ self.assertCountEqual([], form.fields["relay_vlan"].queryset)
1814
1815 def test_no_relay_vlans_allowed_when_dhcp_on(self):
1816 vlan = factory.make_VLAN(dhcp_on=True)
1817 factory.make_VLAN()
1818 form = VLANForm(instance=vlan, data={})
1819- self.assertItemsEqual([], form.fields["relay_vlan"].queryset)
1820+ self.assertCountEqual([], form.fields["relay_vlan"].queryset)
1821
1822 def test_creates_vlan(self):
1823 fabric = factory.make_Fabric()
1824diff --git a/src/maasserver/forms/tests/test_vmfs.py b/src/maasserver/forms/tests/test_vmfs.py
1825index d96c76b..6a3ed50 100644
1826--- a/src/maasserver/forms/tests/test_vmfs.py
1827+++ b/src/maasserver/forms/tests/test_vmfs.py
1828@@ -33,7 +33,7 @@ class TestCreateVMFSForm(MAASServerTestCase):
1829 node = make_Node_with_VMFS_layout()
1830 form = CreateVMFSForm(node, data={})
1831 self.assertFalse(form.is_valid(), form.errors)
1832- self.assertItemsEqual(["name"], form.errors.keys())
1833+ self.assertEqual({"name"}, form.errors.keys())
1834
1835 def test_is_not_valid_if_invalid_uuid(self):
1836 node = make_Node_with_VMFS_layout()
1837@@ -137,7 +137,7 @@ class TestCreateVMFSForm(MAASServerTestCase):
1838 form = CreateVMFSForm(node, data=data)
1839 self.assertTrue(form.is_valid(), form._errors)
1840 vmfs = form.save()
1841- self.assertItemsEqual(
1842+ self.assertCountEqual(
1843 block_device_ids,
1844 [
1845 fs.get_parent().partition_table.block_device.id
1846@@ -160,7 +160,7 @@ class TestCreateVMFSForm(MAASServerTestCase):
1847 form = CreateVMFSForm(node, data=data)
1848 self.assertTrue(form.is_valid(), form._errors)
1849 vmfs = form.save()
1850- self.assertItemsEqual(
1851+ self.assertCountEqual(
1852 [block_device.id for block_device in block_devices],
1853 [
1854 fs.get_parent().partition_table.block_device.id
1855@@ -186,7 +186,7 @@ class TestCreateVMFSForm(MAASServerTestCase):
1856 form = CreateVMFSForm(node, data=data)
1857 self.assertTrue(form.is_valid(), form._errors)
1858 vmfs = form.save()
1859- self.assertItemsEqual(
1860+ self.assertCountEqual(
1861 partition_ids,
1862 [fs.get_parent().id for fs in vmfs.filesystems.all()],
1863 )
1864@@ -216,7 +216,7 @@ class TestCreateVMFSForm(MAASServerTestCase):
1865 filesystem.partition
1866 for filesystem in volume_group.filesystems.all()
1867 ]
1868- self.assertItemsEqual(partitions, partitions_in_vg)
1869+ self.assertCountEqual(partitions, partitions_in_vg)
1870
1871
1872 class TestUpdateVMFSForm(MAASServerTestCase):
1873diff --git a/src/maasserver/forms/tests/test_volume_group.py b/src/maasserver/forms/tests/test_volume_group.py
1874index 987ecca..a99dbbc 100644
1875--- a/src/maasserver/forms/tests/test_volume_group.py
1876+++ b/src/maasserver/forms/tests/test_volume_group.py
1877@@ -28,7 +28,7 @@ class TestCreateVolumeGroupForm(MAASServerTestCase):
1878 node = factory.make_Node()
1879 form = CreateVolumeGroupForm(node, data={})
1880 self.assertFalse(form.is_valid(), form.errors)
1881- self.assertItemsEqual(["name"], form.errors.keys())
1882+ self.assertEqual({"name"}, form.errors.keys())
1883
1884 def test_is_not_valid_if_invalid_uuid(self):
1885 node = factory.make_Node()
1886@@ -142,7 +142,7 @@ class TestCreateVolumeGroupForm(MAASServerTestCase):
1887 filesystem.block_device.actual_instance
1888 for filesystem in volume_group.filesystems.all()
1889 ]
1890- self.assertItemsEqual(block_devices, block_devices_in_vg)
1891+ self.assertCountEqual(block_devices, block_devices_in_vg)
1892
1893 def test_creates_volume_group_with_boot_disk(self):
1894 node = factory.make_Node(with_boot_disk=False)
1895@@ -179,7 +179,7 @@ class TestCreateVolumeGroupForm(MAASServerTestCase):
1896 filesystem.block_device.actual_instance
1897 for filesystem in volume_group.filesystems.all()
1898 ]
1899- self.assertItemsEqual(block_devices, block_devices_in_vg)
1900+ self.assertCountEqual(block_devices, block_devices_in_vg)
1901
1902 def test_creates_volume_group_with_partitions(self):
1903 node = factory.make_Node()
1904@@ -203,7 +203,7 @@ class TestCreateVolumeGroupForm(MAASServerTestCase):
1905 filesystem.partition
1906 for filesystem in volume_group.filesystems.all()
1907 ]
1908- self.assertItemsEqual(partitions, partitions_in_vg)
1909+ self.assertCountEqual(partitions, partitions_in_vg)
1910
1911 def test_creates_volume_group_with_partitions_by_name(self):
1912 node = factory.make_Node()
1913@@ -227,7 +227,7 @@ class TestCreateVolumeGroupForm(MAASServerTestCase):
1914 filesystem.partition
1915 for filesystem in volume_group.filesystems.all()
1916 ]
1917- self.assertItemsEqual(partitions, partitions_in_vg)
1918+ self.assertCountEqual(partitions, partitions_in_vg)
1919
1920 def test_creates_volume_group_with_block_devices_and_partitions(self):
1921 node = factory.make_Node()
1922@@ -265,8 +265,8 @@ class TestCreateVolumeGroupForm(MAASServerTestCase):
1923 for filesystem in volume_group.filesystems.all()
1924 if filesystem.partition is not None
1925 ]
1926- self.assertItemsEqual(block_devices, block_devices_in_vg)
1927- self.assertItemsEqual(partitions, partitions_in_vg)
1928+ self.assertCountEqual(block_devices, block_devices_in_vg)
1929+ self.assertCountEqual(partitions, partitions_in_vg)
1930
1931
1932 class TestUpdateVolumeGroupForm(MAASServerTestCase):
1933@@ -450,7 +450,7 @@ class TestCreateLogicalVolumeForm(MAASServerTestCase):
1934 volume_group = factory.make_VolumeGroup()
1935 form = CreateLogicalVolumeForm(volume_group, data={})
1936 self.assertFalse(form.is_valid(), form.errors)
1937- self.assertItemsEqual(["name", "size"], form.errors.keys())
1938+ self.assertEqual({"name", "size"}, form.errors.keys())
1939
1940 def test_is_not_valid_if_invalid_uuid(self):
1941 volume_group = factory.make_VolumeGroup()

Subscribers

People subscribed via source and target branches