~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to nova/tests/test_flags.py

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2011-10-21 14:37:26 UTC
  • mto: This revision was merged to the branch mainline in revision 47.
  • Revision ID: james.westby@ubuntu.com-20111021143726-dk1m1a0vwov3kyls
Tags: upstream-2012.1~e1~20111020.11229
ImportĀ upstreamĀ versionĀ 2012.1~e1~20111020.11229

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
# Copyright 2010 United States Government as represented by the
4
4
# Administrator of the National Aeronautics and Space Administration.
5
5
# All Rights Reserved.
 
6
# Copyright 2011 Red Hat, Inc.
6
7
#
7
8
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
8
9
#    not use this file except in compliance with the License. You may obtain
16
17
#    License for the specific language governing permissions and limitations
17
18
#    under the License.
18
19
 
 
20
import exceptions
 
21
import os
 
22
import tempfile
 
23
 
19
24
from nova import exception
20
25
from nova import flags
21
26
from nova import test
64
69
        self.assertEqual(self.FLAGS.false, True)
65
70
        self.assertEqual(self.FLAGS.true, False)
66
71
 
 
72
    def test_define_float(self):
 
73
        flags.DEFINE_float('float', 6.66, 'desc', flag_values=self.FLAGS)
 
74
        self.assertEqual(self.FLAGS.float, 6.66)
 
75
 
 
76
    def test_define_multistring(self):
 
77
        flags.DEFINE_multistring('multi', [], 'desc', flag_values=self.FLAGS)
 
78
 
 
79
        argv = ['flags_test', '--multi', 'foo', '--multi', 'bar']
 
80
        self.FLAGS(argv)
 
81
 
 
82
        self.assertEqual(self.FLAGS.multi, ['foo', 'bar'])
 
83
 
 
84
    def test_define_list(self):
 
85
        flags.DEFINE_list('list', ['foo'], 'desc', flag_values=self.FLAGS)
 
86
 
 
87
        self.assert_(self.FLAGS['list'])
 
88
        self.assertEqual(self.FLAGS.list, ['foo'])
 
89
 
 
90
        argv = ['flags_test', '--list=a,b,c,d']
 
91
        self.FLAGS(argv)
 
92
 
 
93
        self.assertEqual(self.FLAGS.list, ['a', 'b', 'c', 'd'])
 
94
 
 
95
    def test_error(self):
 
96
        flags.DEFINE_integer('error', 1, 'desc', flag_values=self.FLAGS)
 
97
 
 
98
        self.assertEqual(self.FLAGS.error, 1)
 
99
 
 
100
        argv = ['flags_test', '--error=foo']
 
101
        self.assertRaises(exceptions.SystemExit, self.FLAGS, argv)
 
102
 
67
103
    def test_declare(self):
68
104
        self.assert_('answer' not in self.global_FLAGS)
69
105
        flags.DECLARE('answer', 'nova.tests.declare_flags')
76
112
        flags.DECLARE('answer', 'nova.tests.declare_flags')
77
113
        self.assertEqual(self.global_FLAGS.answer, 256)
78
114
 
 
115
    def test_getopt_non_interspersed_args(self):
 
116
        self.assert_('runtime_answer' not in self.global_FLAGS)
 
117
 
 
118
        argv = ['flags_test', 'extra_arg', '--runtime_answer=60']
 
119
        args = self.global_FLAGS(argv)
 
120
        self.assertEqual(len(args), 3)
 
121
        self.assertEqual(argv, args)
 
122
 
79
123
    def test_runtime_and_unknown_flags(self):
80
124
        self.assert_('runtime_answer' not in self.global_FLAGS)
81
125
 
114
158
        self.assertEqual(FLAGS.flags_unittest, 'foo')
115
159
        FLAGS.flags_unittest = 'bar'
116
160
        self.assertEqual(FLAGS.flags_unittest, 'bar')
 
161
 
 
162
    def test_flag_overrides(self):
 
163
        self.assertEqual(FLAGS.flags_unittest, 'foo')
 
164
        self.flags(flags_unittest='bar')
 
165
        self.assertEqual(FLAGS.flags_unittest, 'bar')
 
166
        self.assertEqual(FLAGS['flags_unittest'].value, 'bar')
 
167
        self.assertEqual(FLAGS.FlagValuesDict()['flags_unittest'], 'bar')
 
168
        self.reset_flags()
 
169
        self.assertEqual(FLAGS.flags_unittest, 'foo')
 
170
        self.assertEqual(FLAGS['flags_unittest'].value, 'foo')
 
171
        self.assertEqual(FLAGS.FlagValuesDict()['flags_unittest'], 'foo')
 
172
 
 
173
    def test_flagfile(self):
 
174
        flags.DEFINE_string('string', 'default', 'desc',
 
175
                            flag_values=self.FLAGS)
 
176
        flags.DEFINE_integer('int', 1, 'desc', flag_values=self.FLAGS)
 
177
        flags.DEFINE_bool('false', False, 'desc', flag_values=self.FLAGS)
 
178
        flags.DEFINE_bool('true', True, 'desc', flag_values=self.FLAGS)
 
179
 
 
180
        (fd, path) = tempfile.mkstemp(prefix='nova', suffix='.flags')
 
181
 
 
182
        try:
 
183
            os.write(fd, '--string=foo\n--int=2\n--false\n--notrue\n')
 
184
            os.close(fd)
 
185
 
 
186
            self.FLAGS(['flags_test', '--flagfile=' + path])
 
187
 
 
188
            self.assertEqual(self.FLAGS.string, 'foo')
 
189
            self.assertEqual(self.FLAGS.int, 2)
 
190
            self.assertEqual(self.FLAGS.false, True)
 
191
            self.assertEqual(self.FLAGS.true, False)
 
192
        finally:
 
193
            os.remove(path)
 
194
 
 
195
    def test_defaults(self):
 
196
        flags.DEFINE_string('foo', 'bar', 'help', flag_values=self.FLAGS)
 
197
        self.assertEqual(self.FLAGS.foo, 'bar')
 
198
 
 
199
        self.FLAGS['foo'].SetDefault('blaa')
 
200
        self.assertEqual(self.FLAGS.foo, 'blaa')
 
201
 
 
202
    def test_templated_values(self):
 
203
        flags.DEFINE_string('foo', 'foo', 'help', flag_values=self.FLAGS)
 
204
        flags.DEFINE_string('bar', 'bar', 'help', flag_values=self.FLAGS)
 
205
        flags.DEFINE_string('blaa', '$foo$bar', 'help', flag_values=self.FLAGS)
 
206
        self.assertEqual(self.FLAGS.blaa, 'foobar')