annotate test/test_cmdexpand.py @ 128:5155b4f9443d

Add basic dependency handling to PackageTrack and PackagerGroup. PackageTrack now extracts dependency information from the debian/control file and PackagerGroup sorts the tracks based on this information so that packages on which other packages in the group depend on are built first and their newly built binaries are installed added to the pbuilder instance. Also add some test cases.
author Bernhard Herzog <bh@intevation.de>
date Fri, 23 May 2008 16:11:22 +0000
parents a2ce575ce82b
children
rev   line source
44
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 # Copyright (C) 2007 by Intevation GmbH
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Authors:
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Bernhard Herzog <bh@intevation.de>
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 #
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8 """Tests for the cmdexpand function"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 import unittest
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 from treepkg.cmdexpand import cmdexpand
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 class TestCMDExpand(unittest.TestCase):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17 def test_words(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 """Test cmdexpand with simple whitespace separated words"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19 self.assertEquals(cmdexpand("abc defg xyz zy"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 ['abc', 'defg', 'xyz', 'zy'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 def test_single_quoted(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 """Test cmdexpand with some single quoted words"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 self.assertEquals(cmdexpand("abc 'defg xyz' zy"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 ['abc', 'defg xyz', 'zy'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 def test_double_quoted(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 """Test cmdexpand with some double quoted words"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 self.assertEquals(cmdexpand('abc "defg xyz" zy'),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 ['abc', 'defg xyz', 'zy'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 def test_word_expansion(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 """Test cmdexpand with simple word expansion"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 self.assertEquals(cmdexpand('abc $foo ghi', foo="def"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 ['abc', 'def', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 self.assertEquals(cmdexpand('abc $foo ghi $bar', foo="def", bar="X"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 ['abc', 'def', 'ghi', 'X'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 def test_word_expansion_braced_name(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 """Test cmdexpand with word expansion using braced names"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41 self.assertEquals(cmdexpand('abc ${foo} x${foo}y ghi', foo="def"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42 ['abc', 'def', 'xdefy', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 def test_word_expansion_non_byte_string(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 """Test cmdexpand quoting of dollar signs"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 self.assertEquals(cmdexpand('abc $foo $bar ghi', foo=123, bar=u"1 2 3"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 ['abc', '123', '1 2 3', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 def test_word_expansion_non_identifier(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 """Test cmdexpand word expansion if dollar not followed by identifier"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51 # $ immediately followed by a non-identifier character
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 self.assertRaises(ValueError, cmdexpand, 'abc $#foo bar', foo="def")
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 def test_word_expansion_inside_words(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 """Test cmdexpand word expansions in parts of words"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 self.assertEquals(cmdexpand("$foo x$bar y$baz.",
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 foo="abc", bar="yz", baz="zx"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 ["abc", "xyz", "yzx."])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 self.assertEquals(cmdexpand("$foo x$bar-$baz.",
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 foo="abc", bar="yz", baz="zx"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61 ["abc", "xyz-zx."])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 def test_case_sensitivity(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 """Test case sensitivity of expansion keys"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65 self.assertEquals(cmdexpand('abc $foo $Foo $FOO',
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 foo="def", Foo="DEF", FOO="Def"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 ['abc', 'def', 'DEF', 'Def'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69 def test_list_expansion(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 """Test cmdexpand with list expansion"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 self.assertEquals(cmdexpand('abc @foo ghi', foo=["d", "e", "f"]),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72 ['abc', 'd', 'e', 'f', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 def test_list_expansion_non_string(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 """Test cmdexpand with list expansion"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76 self.assertEquals(cmdexpand('abc @foo ghi', foo=[1, 1.0, None]),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77 ['abc', '1', '1.0', 'None', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79 def test_list_expansion_with_iterators(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 """Test cmdexpand with list expansion using an iterator"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81 self.assertEquals(cmdexpand('abc @foo ghi',
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 foo=(i**2 for i in range(3))),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 ['abc', '0', '1', '4', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
85 def test_list_expansion_non_identifier(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 """Test cmdexpand with at-sign not followed by identifier"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
87 # @+identifier do not cover entire word
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
88 self.assertRaises(ValueError, cmdexpand, 'abc @foo, ghi',
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
89 foo=["d", "e", "f"])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
90
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
91 # @ immediately followed by a non-identifier character
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
92 self.assertRaises(ValueError, cmdexpand, 'abc @. z')
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 def test_list_expansion_inside_word(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95 """Test whether cmdexpand raises ValueError for at-signs inside words"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96 self.assertRaises(ValueError, cmdexpand, 'abc x@foo ghi',
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
97 foo=["d", "e", "f"])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
99
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
100 def test_dollar_quoting(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
101 """Test cmdexpand quoting of dollar signs"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
102 self.assertEquals(cmdexpand('abc $$foo $foo g$$hi', foo="def"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 ['abc', '$foo', 'def', 'g$hi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105 def test_atsign_quoting(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106 """Test cmdexpand quoting of at-signs"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
107 self.assertEquals(cmdexpand('abc @foo $@foo g$@i', foo=["d", "e", "f"]),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
108 ['abc', 'd', 'e', 'f', '@foo', 'g@i'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
110 def test_interaction_with_shlex_quoting(self):
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
111 """Test cmdexpand's interaction with shlex's quoting"""
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112 # Unlike unix-shells the expansion isn't influenced much by
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
113 # shell quoting as supported by shlex.
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
114 self.assertEquals(cmdexpand('abc "@foo" \'@foo\' ghi',
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115 foo=["d", "e", "f"]),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
116 ['abc', 'd', 'e', 'f', 'd', 'e', 'f', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
117 self.assertEquals(cmdexpand('abc "$foo" \'$foo\' ghi', foo="def"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
118 ['abc', 'def', 'def', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
119 self.assertEquals(cmdexpand('abc " $foo" \'a $foo\' ghi', foo="def"),
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
120 ['abc', ' def', 'a def', 'ghi'])
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
121
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
122
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
123 if __name__ == "__main__":
a2ce575ce82b add cmdexpand function and tests
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
124 unittest.main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)