blob: 60592c6fbe12fc02a24ad0bd32e37415750c6b83 [file] [log] [blame]
# Copyright 2020-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
import argparse
import os
import shutil
import tempfile
import time
from portage.tests import TestCase
from portage.util.shelve import dump, open_shelve, restore
class ShelveUtilsTestCase(TestCase):
TEST_DATA = (
# distfiles_db
{
"portage-2.3.89.tar.bz2": "sys-apps/portage-2.3.89",
"portage-2.3.99.tar.bz2": "sys-apps/portage-2.3.99",
},
# deletion_db
{
"portage-2.3.89.tar.bz2": time.time(),
"portage-2.3.99.tar.bz2": time.time(),
},
# recycle_db
{
"portage-2.3.89.tar.bz2": (0, time.time()),
"portage-2.3.99.tar.bz2": (0, time.time()),
},
)
def test_dump_restore(self):
for data in self.TEST_DATA:
tmpdir = tempfile.mkdtemp()
try:
dump_args = argparse.Namespace(
src=os.path.join(tmpdir, "shelve_file"),
dest=os.path.join(tmpdir, "pickle_file"),
)
db = open_shelve(dump_args.src, flag="c")
for k, v in data.items():
db[k] = v
db.close()
dump(dump_args)
os.unlink(dump_args.src)
restore_args = argparse.Namespace(
dest=dump_args.src,
src=dump_args.dest,
)
restore(restore_args)
db = open_shelve(restore_args.dest, flag="r")
for k, v in data.items():
self.assertEqual(db[k], v)
db.close()
finally:
shutil.rmtree(tmpdir)