Mercurial > treepkg
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() |