diff options
-rw-r--r-- | tests/portage_news/test_NewsItem.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/portage_news/test_NewsItem.py b/tests/portage_news/test_NewsItem.py new file mode 100644 index 000000000..22ef298d4 --- /dev/null +++ b/tests/portage_news/test_NewsItem.py @@ -0,0 +1,83 @@ +# test_NewsItem.py -- Portage Unit Testing Functionality +# Copyright 2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: test_varExpand.py 5596 2007-01-12 08:08:53Z antarus $ + +from unittest import TestCase, TestLoader +from portage.news import NewsItem +from portage.const import PROFILE_PATH + +class NewsItemTestCase(TestCase): + + self.fakeItem = """ +Title: YourSQL Upgrades from 4.0 to 4.1 +Author: Ciaran McCreesh <ciaranm@gentoo.org> +Content-Type: text/plain +Posted: 01-Nov-2005 +Revision: 1 +#Display-If-Installed: +#Display-If-Profile: +#Display-If-Arch: + +YourSQL databases created using YourSQL version 4.0 are incompatible +with YourSQL version 4.1 or later. There is no reliable way to +automate the database format conversion, so action from the system +administrator is required before an upgrade can take place. + +Please see the Gentoo YourSQL Upgrade Guide for instructions: + + http://www.gentoo.org/doc/en/yoursql-upgrading.xml + +Also see the official YourSQL documentation: + + http://dev.yoursql.com/doc/refman/4.1/en/upgrading-from-4-0.html + +After upgrading, you should also recompile any packages which link +against YourSQL: + + revdep-rebuild --library=libyoursqlclient.so.12 + +The revdep-rebuild tool is provided by app-portage/gentoolkit. +""" + + from portage import settings + import time + + def testDisplayIfProfile(): + from portage.const import PROFILE_PATH + tmpItem = self.fakeItem.replace("#Display-If-Profile:", "Display-If-Profile: %s" % + os.readlink( PROFILE_PATH ) ) + + item = _processItem(tmpItem) + self.assertTrue( item.isRelevant( os.readlink( PROFILE_PATH ) ), + msg="Expected %s to be relevant, but it was not!" % tmpItem ) + + def testDisplayIfInstalled(): + tmpItem = self.fakeItem.replace("#Display-If-Installed:", "Display-If-Profile: %s" % + "sys-apps/portage" ) + + item = _processItem(tmpItem) + self.assertTrue( item.isRelevant( portage.settings ), + msg="Expected %s to be relevant, but it was not!" % tmpItem ) + + + def testDisplayIfKeyword(): + from portage import settings + tmpItem = self.fakeItem.replace("#Display-If-Keyword:", "Display-If-Keyword: %s" % + settings["ACCEPT_KEYWORDS"].split()[0] ) + + item = _processItem(tmpItem) + self.assertTrue( item.isRelevant( os.readlink( PROFILE_PATH ) ), + msg="Expected %s to be relevant, but it was not!" % tmpItem ) + + + def _processItem( self, item ): + + path = os.path.join( settings["PORTAGE_TMPDIR"], str(time.time()) + f = open( os.path.join( path ) + f.write(item) + f.close + try: + return NewsItem( path, 0 ) + except TypeError: + self.fail("Error while processing news item %s" % path ) |