summaryrefslogtreecommitdiff
blob: 22ef298d44a0fa4f73d45613f68d8de138edf961 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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 )