From 89e3cd4d1141fea8ecb5b8828cde622c9bf12649 Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Tue, 17 Apr 2012 20:36:02 +0200 Subject: Add a regression test --- tests/test_lp659438.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tests/test_lp659438.py (limited to 'tests') diff --git a/tests/test_lp659438.py b/tests/test_lp659438.py new file mode 100644 index 00000000..25a6278f --- /dev/null +++ b/tests/test_lp659438.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Regression test for LP: #981896, LP: #659438""" +# Copyright (C) 2012 Sebastian Heinlein +# +# Licensed under the GNU General Public License Version 2 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Licensed under the GNU General Public License Version 2 + +__author__ = "Sebastian Heinlein " + +import os +import shutil +import tempfile +import unittest + +import apt_pkg +import apt + + +class RegressionTestCase(unittest.TestCase): + + """Test suite for LP: #981896, LP: #659438 + 'Cannot locate a file for package X' + """ + + def setUp(self): + apt_pkg.init_config() + chroot_path = tempfile.mkdtemp() + self.addCleanup(lambda: shutil.rmtree(chroot_path)) + # Create a damaged status file + self.cache = apt.cache.Cache(rootdir=chroot_path) + with open(apt_pkg.config.find_file("Dir::State::status"), + "a") as status: + status.write("""Package: abrowser +Status: install reinstreq half-installed +Priority: optional +Section: admin +Version: 3.6.9+build1+nobinonly-0ubuntu1""") + sources_list_path = apt_pkg.config.find_file("Dir::Etc::sourcelist") + repo_path = os.path.abspath("./data/test-repo") + with open(sources_list_path, "w") as sources_list: + sources_list.write("deb copy:%s /\n" % repo_path) + # os.makedirs(os.path.join(chroot_path, "etc/apt/sources.list.d/")) + self.cache.update(sources_list=sources_list_path) + self.cache.open() + + def test_survive_reqreinst(self): + """Test that we survive a package in require reinstallation state""" + self.assertEqual(self.cache.required_download, 82324L) + +if __name__ == "__main__": + unittest.main() + +# vim: ts=4 et sts=4 -- cgit v1.2.3 From 16635641b3492e236f50d1a795fceeec2b620890 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 18 Apr 2012 10:13:10 +0200 Subject: tests/test_lp659438.py: ensure apt_pkg.config is reset for later tests via workaround --- tests/test_lp659438.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'tests') diff --git a/tests/test_lp659438.py b/tests/test_lp659438.py index 25a6278f..47123a03 100644 --- a/tests/test_lp659438.py +++ b/tests/test_lp659438.py @@ -58,6 +58,11 @@ Version: 3.6.9+build1+nobinonly-0ubuntu1""") self.cache.update(sources_list=sources_list_path) self.cache.open() + def tearDown(self): + # this resets the rootdir apt_pkg.config to ensure it does not + # "pollute" the later tests + cache = apt.cache.Cache(rootdir="/") + def test_survive_reqreinst(self): """Test that we survive a package in require reinstallation state""" self.assertEqual(self.cache.required_download, 82324L) -- cgit v1.2.3 From 8c17defbb7ef82f5791cf37973c9b26a367359ea Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 18 Apr 2012 10:20:32 +0200 Subject: tests/test_lp659438.py: fix test for py3.2 --- tests/test_lp659438.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/test_lp659438.py b/tests/test_lp659438.py index 47123a03..01edf3bd 100644 --- a/tests/test_lp659438.py +++ b/tests/test_lp659438.py @@ -65,7 +65,8 @@ Version: 3.6.9+build1+nobinonly-0ubuntu1""") def test_survive_reqreinst(self): """Test that we survive a package in require reinstallation state""" - self.assertEqual(self.cache.required_download, 82324L) + # this should be 82324L but python3.2 gets unhappy about the "L" + self.assertEqual(self.cache.required_download, 82324) if __name__ == "__main__": unittest.main() -- cgit v1.2.3