401
398
self.store1.clear_locked()
402
399
self.assertEqual(self.store2.get_locked(), [])
404
def test_get_package_locks_with_no_lock(self):
406
L{PackageStore.get_package_locks} returns an empty list if no package
409
self.assertEqual(self.store1.get_package_locks(), [])
411
def test_add_package_locks(self):
413
L{PackageStore.add_package_locks} adds a package lock to the store.
415
self.store1.add_package_locks([("name", "", "")])
416
self.assertEqual(self.store2.get_package_locks(),
419
def test_add_package_locks_idempotence(self):
421
The operation of adding a lock is idempotent.
423
self.store1.add_package_locks([("name", "", "")])
424
self.store1.add_package_locks([("name", "", "")])
425
self.assertEqual(self.store2.get_package_locks(),
428
def test_add_package_locks_with_none(self):
430
If None, package locks relation and version values are automatically
431
converted to empty strings.
433
self.store1.add_package_locks([("name", None, None)])
434
self.assertEqual(self.store2.get_package_locks(),
437
def test_add_package_locks_multiple_times(self):
439
L{PackageStore.add_package_locks} can be called multiple times and
440
with multiple locks each time.
442
self.store1.add_package_locks([("name1", "", "")])
443
self.store1.add_package_locks([("name2", "<", "0.2"),
445
self.assertEqual(sorted(self.store2.get_package_locks()),
446
sorted([("name1", "", ""),
447
("name2", "<", "0.2"),
450
def test_add_package_locks_without_name(self):
452
It's not possible to add a package lock without a name.
454
if sys.version_info >= (2, 5):
455
sqlite_error = sqlite3.IntegrityError
457
sqlite_error = sqlite3.OperationalError
458
self.assertRaises(sqlite_error,
459
self.store1.add_package_locks,
460
[(None, None, None)])
462
def test_remove_package_locks(self):
464
L{PackageStore.remove_package_locks} removes a package lock from
467
self.store1.add_package_locks([("name1", "", "")])
468
self.store1.remove_package_locks([("name1", "", "")])
469
self.assertEqual(self.store2.get_package_locks(), [])
471
def test_remove_package_locks_multiple_times(self):
473
L{PackageStore.remove_package_locks} can be called multiple times and
474
with multiple locks each time.
476
self.store1.add_package_locks([("name1", "", ""),
477
("name2", "<", "0.2"),
479
self.store1.remove_package_locks([("name1", "", "")])
480
self.store1.remove_package_locks([("name2", "<", "0.2"),
482
self.assertEqual(self.store2.get_package_locks(), [])
484
def test_remove_package_locks_without_matching_lock(self):
486
It's fine to remove a non-existent lock.
488
self.store1.remove_package_locks([("name", "", "")])
489
self.assertEqual(self.store2.get_package_locks(), [])
491
def test_clear_package_locks(self):
493
L{PackageStore.clear_package_locks} removes all package locks
496
self.store1.add_package_locks([("name1", "", ""),
497
("name2", "<", "0.2")])
498
self.store1.clear_package_locks()
499
self.assertEqual(self.store2.get_package_locks(), [])
501
401
def test_add_hash_id_request(self):
502
402
hashes = ("ha\x00sh1", "ha\x00sh2")
503
403
request1 = self.store1.add_hash_id_request(hashes)