~svn/ubuntu/oneiric/subversion/ppa

« back to all changes in this revision

Viewing changes to subversion/tests/clients/cmdline/autoprop_tests.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2006-12-13 17:57:16 UTC
  • mfrom: (1.1.6 upstream) (0.1.3 etch)
  • Revision ID: james.westby@ubuntu.com-20061213175716-2ysv6z4w5dpa2r2f
Tags: 1.4.2dfsg1-2ubuntu1
* Merge with Debian unstable; remaining changes:
  - Create pot file on build.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
 
#
3
 
#  autoprop_tests.py:  testing automatic properties
4
 
#
5
 
#  Subversion is a tool for revision control.
6
 
#  See http://subversion.tigris.org for more information.
7
 
#
8
 
# ====================================================================
9
 
# Copyright (c) 2000-2004 CollabNet.  All rights reserved.
10
 
#
11
 
# This software is licensed as described in the file COPYING, which
12
 
# you should have received as part of this distribution.  The terms
13
 
# are also available at http://subversion.tigris.org/license-1.html.
14
 
# If newer versions of this license are posted there, you may use a
15
 
# newer version instead, at your option.
16
 
#
17
 
######################################################################
18
 
 
19
 
# General modules
20
 
import string, sys, re, os, os.path, shutil
21
 
 
22
 
# Our testing module
23
 
import svntest
24
 
 
25
 
 
26
 
# (abbreviation)
27
 
Skip = svntest.testcase.Skip
28
 
XFail = svntest.testcase.XFail
29
 
Item = svntest.wc.StateItem
30
 
 
31
 
 
32
 
# Helper function
33
 
def check_proplist(path, exp_out):
34
 
  """Verify that property list on PATH has a value of EXP_OUT"""
35
 
  out, err = svntest.main.run_svn(None, 'proplist', '--verbose', path)
36
 
 
37
 
  out2 = []
38
 
  for line in out[1:]:
39
 
    out2 = out2 + [string.strip(line)]
40
 
  out2.sort()
41
 
  exp_out.sort()
42
 
  if out2 != exp_out:
43
 
    print "Expected properties:", exp_out
44
 
    print "Actual properties:  ", out2
45
 
    print "Actual proplist output:", out
46
 
    raise svntest.Failure
47
 
 
48
 
 
49
 
######################################################################
50
 
# Tests
51
 
 
52
 
#----------------------------------------------------------------------
53
 
 
54
 
def create_config(config_dir, enable_flag):
55
 
  "create config directories and files"
56
 
 
57
 
  # contents of the file 'config'
58
 
  config_contents = '''\
59
 
[miscellany]
60
 
enable-auto-props = %s
61
 
 
62
 
[auto-props]
63
 
*.c = cfile=yes
64
 
*.jpg = jpgfile=ja
65
 
fubar* = tarfile=si
66
 
foobar.lha = lhafile=da;lzhfile=niet
67
 
spacetest = abc = def ; ghi = ; = j 
68
 
* = auto=oui
69
 
''' % (enable_flag and 'yes' or 'no')
70
 
 
71
 
  svntest.main.create_config_dir(config_dir, config_contents)
72
 
 
73
 
#----------------------------------------------------------------------
74
 
 
75
 
def create_test_file(dir, name):
76
 
  "create a test file"
77
 
 
78
 
  fd = open(os.path.join(dir, name), 'w')
79
 
  fd.write('foo\nbar\nbaz\n')
80
 
  fd.close()
81
 
 
82
 
#----------------------------------------------------------------------
83
 
 
84
 
def autoprops_test(sbox, cmd, cfgenable, clienable, subdir):
85
 
  """configurable autoprops test.
86
 
 
87
 
     CMD is the subcommand to test: 'import' or 'add'
88
 
     if CFGENABLE is true, enable autoprops in the config file, else disable
89
 
     if CLIENABLE == 1: --auto-props is added to the command line
90
 
                     0: nothing is added
91
 
                    -1: --no-auto-props is added to command line
92
 
     if string SUBDIR is not empty files are created in that subdir and the
93
 
       directory is added/imported"""
94
 
 
95
 
  # Bootstrap
96
 
  sbox.build()
97
 
 
98
 
  # some directories
99
 
  wc_dir = sbox.wc_dir
100
 
  tmp_dir = os.path.abspath(svntest.main.temp_dir)
101
 
  config_dir = os.path.join(tmp_dir, 'autoprops_config')
102
 
  repos_url = svntest.main.current_repo_url
103
 
  svntest.main.set_config_dir(config_dir)
104
 
 
105
 
  # initialize parameters
106
 
  if cmd == 'import':
107
 
    parameters = ['import', '--username', svntest.main.wc_author,
108
 
                            '--password', svntest.main.wc_passwd, '-m', 'bla']
109
 
    files_dir = tmp_dir
110
 
  else:
111
 
    parameters = ['add']
112
 
    files_dir = wc_dir
113
 
  
114
 
  parameters = parameters + ['--config-dir', config_dir]
115
 
 
116
 
  create_config(config_dir, cfgenable)
117
 
 
118
 
  # add comandline flags
119
 
  if clienable == 1:
120
 
    parameters = parameters + ['--auto-props']
121
 
    enable_flag = 1
122
 
  elif clienable == -1:
123
 
    parameters = parameters + ['--no-auto-props']
124
 
    enable_flag = 0
125
 
  else:
126
 
    enable_flag = cfgenable
127
 
 
128
 
  # setup subdirectory if needed
129
 
  if len(subdir) > 0:
130
 
    files_dir = os.path.join(files_dir, subdir)
131
 
    files_wc_dir = os.path.join(wc_dir, subdir)
132
 
    os.makedirs(files_dir)
133
 
  else:
134
 
    files_wc_dir = wc_dir
135
 
 
136
 
  # create test files
137
 
  filenames = ['foo.h',
138
 
               'foo.c',
139
 
               'foo.jpg',
140
 
               'fubar.tar',
141
 
               'foobar.lha',
142
 
               'spacetest']
143
 
  for filename in filenames:
144
 
    create_test_file(files_dir, filename)
145
 
 
146
 
  if len(subdir) == 0:
147
 
    # add/import the files
148
 
    for filename in filenames:
149
 
      path = os.path.join(files_dir, filename)
150
 
      if cmd == 'import':
151
 
        tmp_params = parameters + [path, repos_url + '/' + filename]
152
 
      else:
153
 
        tmp_params = parameters + [path]
154
 
      svntest.main.run_svn(None, *tmp_params)
155
 
  else:
156
 
    # add/import subdirectory
157
 
    if cmd == 'import':
158
 
      parameters = parameters + [files_dir, repos_url]
159
 
    else:
160
 
      parameters = parameters + [files_wc_dir]
161
 
    svntest.main.run_svn(None, *parameters)
162
 
 
163
 
  # do an svn co if needed
164
 
  if cmd == 'import':
165
 
    svntest.main.run_svn(None, 'checkout', repos_url, files_wc_dir)
166
 
 
167
 
  # check the properties
168
 
  if enable_flag:
169
 
    filename = os.path.join(files_wc_dir, 'foo.h')
170
 
    check_proplist(filename, ['auto : oui'])
171
 
    filename = os.path.join(files_wc_dir, 'foo.c')
172
 
    check_proplist(filename, ['auto : oui', 'cfile : yes'])
173
 
    filename = os.path.join(files_wc_dir, 'foo.jpg')
174
 
    check_proplist(filename, ['auto : oui', 'jpgfile : ja'])
175
 
    filename = os.path.join(files_wc_dir, 'fubar.tar')
176
 
    check_proplist(filename, ['auto : oui', 'tarfile : si'])
177
 
    filename = os.path.join(files_wc_dir, 'foobar.lha')
178
 
    check_proplist(filename, ['auto : oui', 'lhafile : da', 'lzhfile : niet'])
179
 
    filename = os.path.join(files_wc_dir, 'spacetest')
180
 
    check_proplist(filename, ['auto : oui', 'abc : def', 'ghi :'])
181
 
  else:
182
 
    for filename in filenames:
183
 
      check_proplist(os.path.join(files_wc_dir, filename), [])
184
 
 
185
 
 
186
 
#----------------------------------------------------------------------
187
 
 
188
 
def autoprops_add_no_none(sbox):
189
 
  "add: config=no,  commandline=none"
190
 
 
191
 
  autoprops_test(sbox, 'add', 0, 0, '')
192
 
 
193
 
#----------------------------------------------------------------------
194
 
 
195
 
def autoprops_add_yes_none(sbox):
196
 
  "add: config=yes, commandline=none"
197
 
 
198
 
  autoprops_test(sbox, 'add', 1, 0, '')
199
 
 
200
 
#----------------------------------------------------------------------
201
 
 
202
 
def autoprops_add_no_yes(sbox):
203
 
  "add: config=no,  commandline=yes"
204
 
 
205
 
  autoprops_test(sbox, 'add', 0, 1, '')
206
 
 
207
 
#----------------------------------------------------------------------
208
 
 
209
 
def autoprops_add_yes_yes(sbox):
210
 
  "add: config=yes, commandline=yes"
211
 
 
212
 
  autoprops_test(sbox, 'add', 1, 1, '')
213
 
 
214
 
#----------------------------------------------------------------------
215
 
 
216
 
def autoprops_add_no_no(sbox):
217
 
  "add: config=no,  commandline=no"
218
 
 
219
 
  autoprops_test(sbox, 'add', 0, -1, '')
220
 
 
221
 
#----------------------------------------------------------------------
222
 
 
223
 
def autoprops_add_yes_no(sbox):
224
 
  "add: config=yes, commandline=no"
225
 
 
226
 
  autoprops_test(sbox, 'add', 1, -1, '')
227
 
 
228
 
#----------------------------------------------------------------------
229
 
 
230
 
def autoprops_imp_no_none(sbox):
231
 
  "import: config=no,  commandline=none"
232
 
 
233
 
  autoprops_test(sbox, 'import', 0, 0, '')
234
 
 
235
 
#----------------------------------------------------------------------
236
 
 
237
 
def autoprops_imp_yes_none(sbox):
238
 
  "import: config=yes, commandline=none"
239
 
 
240
 
  autoprops_test(sbox, 'import', 1, 0, '')
241
 
 
242
 
#----------------------------------------------------------------------
243
 
 
244
 
def autoprops_imp_no_yes(sbox):
245
 
  "import: config=no,  commandline=yes"
246
 
 
247
 
  autoprops_test(sbox, 'import', 0, 1, '')
248
 
 
249
 
#----------------------------------------------------------------------
250
 
 
251
 
def autoprops_imp_yes_yes(sbox):
252
 
  "import: config=yes, commandline=yes"
253
 
 
254
 
  autoprops_test(sbox, 'import', 1, 1, '')
255
 
 
256
 
#----------------------------------------------------------------------
257
 
 
258
 
def autoprops_imp_no_no(sbox):
259
 
  "import: config=no,  commandline=no"
260
 
 
261
 
  autoprops_test(sbox, 'import', 0, -1, '')
262
 
 
263
 
#----------------------------------------------------------------------
264
 
 
265
 
def autoprops_imp_yes_no(sbox):
266
 
  "import: config=yes, commandline=no"
267
 
 
268
 
  autoprops_test(sbox, 'import', 1, -1, '')
269
 
 
270
 
#----------------------------------------------------------------------
271
 
 
272
 
def autoprops_add_dir(sbox):
273
 
  "add directory"
274
 
 
275
 
  autoprops_test(sbox, 'add', 1, 0, 'autodir')
276
 
 
277
 
#----------------------------------------------------------------------
278
 
 
279
 
def autoprops_imp_dir(sbox):
280
 
  "import directory"
281
 
 
282
 
  autoprops_test(sbox, 'import', 1, 0, 'autodir')
283
 
 
284
 
 
285
 
########################################################################
286
 
# Run the tests
287
 
 
288
 
 
289
 
# list all tests here, starting with None:
290
 
test_list = [ None,
291
 
              autoprops_add_no_none,
292
 
              autoprops_add_yes_none,
293
 
              autoprops_add_no_yes,
294
 
              autoprops_add_yes_yes,
295
 
              autoprops_add_no_no,
296
 
              autoprops_add_yes_no,
297
 
              autoprops_imp_no_none,
298
 
              autoprops_imp_yes_none,
299
 
              autoprops_imp_no_yes,
300
 
              autoprops_imp_yes_yes,
301
 
              autoprops_imp_no_no,
302
 
              autoprops_imp_yes_no,
303
 
              autoprops_add_dir,
304
 
              autoprops_imp_dir,
305
 
             ]
306
 
 
307
 
if __name__ == '__main__':
308
 
  svntest.main.run_tests(test_list)
309
 
  # NOTREACHED
310
 
 
311
 
 
312
 
### End of file.