~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): Adam Conrad
  • Date: 2005-12-05 01:26:14 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20051205012614-qom4xfypgtsqc2xq
Tags: 1.2.3dfsg1-3ubuntu1
Merge with the final Debian release of 1.2.3dfsg1-3, bringing in
fixes to the clean target, better documentation of the libdb4.3
upgrade and build fixes to work with swig1.3_1.3.27.

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
  # config file names
 
58
  cfgfile_cfg = os.path.join(config_dir, 'config')
 
59
  cfgfile_srv = os.path.join(config_dir, 'server')
 
60
 
 
61
  # create the directory
 
62
  if not os.path.isdir(config_dir):
 
63
    os.makedirs(config_dir)
 
64
 
 
65
  # create the file 'config'
 
66
  fd = open(cfgfile_cfg, 'w')
 
67
  fd.write('[miscellany]\n')
 
68
  if enable_flag:
 
69
    fd.write('enable-auto-props = yes\n')
 
70
  else:
 
71
    fd.write('enable-auto-props = no\n')
 
72
  fd.write('\n')
 
73
  fd.write('[auto-props]\n')
 
74
  fd.write('*.c = cfile=yes\n')
 
75
  fd.write('*.jpg = jpgfile=ja\n')
 
76
  fd.write('fubar* = tarfile=si\n')
 
77
  fd.write('foobar.lha = lhafile=da;lzhfile=niet\n')
 
78
  fd.write('spacetest = abc = def ; ghi = ; = j \n')
 
79
  fd.write('* = auto=oui\n')
 
80
  fd.write('\n')
 
81
  fd.close()
 
82
 
 
83
  # create the file 'server'
 
84
  fd = open(cfgfile_srv, 'w')
 
85
  fd.write('#\n')
 
86
  fd.close()
 
87
 
 
88
 
 
89
#----------------------------------------------------------------------
 
90
 
 
91
def create_test_file(dir, name):
 
92
  "create a test file"
 
93
 
 
94
  fd = open(os.path.join(dir, name), 'w')
 
95
  fd.write('foo\nbar\nbaz\n')
 
96
  fd.close()
 
97
 
 
98
#----------------------------------------------------------------------
 
99
 
 
100
def autoprops_test(sbox, cmd, cfgenable, clienable, subdir):
 
101
  """configurable autoprops test.
 
102
 
 
103
     CMD is the subcommand to test: 'import' or 'add'
 
104
     if CFGENABLE is true, enable autoprops in the config file, else disable
 
105
     if CLIENABLE == 1: --auto-props is added to the command line
 
106
                     0: nothing is added
 
107
                    -1: --no-auto-props is added to command line
 
108
     if string SUBDIR is not empty files are created in that subdir and the
 
109
       directory is added/imported"""
 
110
 
 
111
  # Bootstrap
 
112
  sbox.build()
 
113
 
 
114
  # some directories
 
115
  wc_dir = sbox.wc_dir
 
116
  tmp_dir = os.path.abspath(svntest.main.temp_dir)
 
117
  config_dir = os.path.join(tmp_dir, 'autoprops_config')
 
118
  repos_url = svntest.main.current_repo_url
 
119
  svntest.main.set_config_dir(config_dir)
 
120
 
 
121
  # initialize parameters
 
122
  if cmd == 'import':
 
123
    parameters = ['import', '--username', svntest.main.wc_author,
 
124
                            '--password', svntest.main.wc_passwd, '-m', 'bla']
 
125
    files_dir = tmp_dir
 
126
  else:
 
127
    parameters = ['add']
 
128
    files_dir = wc_dir
 
129
  
 
130
  parameters = parameters + ['--config-dir', config_dir]
 
131
 
 
132
  create_config(config_dir, cfgenable)
 
133
 
 
134
  # add comandline flags
 
135
  if clienable == 1:
 
136
    parameters = parameters + ['--auto-props']
 
137
    enable_flag = 1
 
138
  elif clienable == -1:
 
139
    parameters = parameters + ['--no-auto-props']
 
140
    enable_flag = 0
 
141
  else:
 
142
    enable_flag = cfgenable
 
143
 
 
144
  # setup subdirectory if needed
 
145
  if len(subdir) > 0:
 
146
    files_dir = os.path.join(files_dir, subdir)
 
147
    files_wc_dir = os.path.join(wc_dir, subdir)
 
148
    os.makedirs(files_dir)
 
149
  else:
 
150
    files_wc_dir = wc_dir
 
151
 
 
152
  # create test files
 
153
  filenames = ['foo.h',
 
154
               'foo.c',
 
155
               'foo.jpg',
 
156
               'fubar.tar',
 
157
               'foobar.lha',
 
158
               'spacetest']
 
159
  for filename in filenames:
 
160
    create_test_file(files_dir, filename)
 
161
 
 
162
  if len(subdir) == 0:
 
163
    # add/import the files
 
164
    for filename in filenames:
 
165
      path = os.path.join(files_dir, filename)
 
166
      if cmd == 'import':
 
167
        tmp_params = parameters + [path, repos_url + '/' + filename]
 
168
      else:
 
169
        tmp_params = parameters + [path]
 
170
      svntest.main.run_svn(None, *tmp_params)
 
171
  else:
 
172
    # add/import subdirectory
 
173
    if cmd == 'import':
 
174
      parameters = parameters + [files_dir, repos_url]
 
175
    else:
 
176
      parameters = parameters + [files_wc_dir]
 
177
    svntest.main.run_svn(None, *parameters)
 
178
 
 
179
  # do an svn co if needed
 
180
  if cmd == 'import':
 
181
    svntest.main.run_svn(None, 'checkout', repos_url, files_wc_dir)
 
182
 
 
183
  # check the properties
 
184
  if enable_flag:
 
185
    filename = os.path.join(files_wc_dir, 'foo.h')
 
186
    check_proplist(filename, ['auto : oui'])
 
187
    filename = os.path.join(files_wc_dir, 'foo.c')
 
188
    check_proplist(filename, ['auto : oui', 'cfile : yes'])
 
189
    filename = os.path.join(files_wc_dir, 'foo.jpg')
 
190
    check_proplist(filename, ['auto : oui', 'jpgfile : ja'])
 
191
    filename = os.path.join(files_wc_dir, 'fubar.tar')
 
192
    check_proplist(filename, ['auto : oui', 'tarfile : si'])
 
193
    filename = os.path.join(files_wc_dir, 'foobar.lha')
 
194
    check_proplist(filename, ['auto : oui', 'lhafile : da', 'lzhfile : niet'])
 
195
    filename = os.path.join(files_wc_dir, 'spacetest')
 
196
    check_proplist(filename, ['auto : oui', 'abc : def', 'ghi :'])
 
197
  else:
 
198
    for filename in filenames:
 
199
      check_proplist(os.path.join(files_wc_dir, filename), [])
 
200
 
 
201
 
 
202
#----------------------------------------------------------------------
 
203
 
 
204
def autoprops_add_no_none(sbox):
 
205
  "add: config=no,  commandline=none"
 
206
 
 
207
  autoprops_test(sbox, 'add', 0, 0, '')
 
208
 
 
209
#----------------------------------------------------------------------
 
210
 
 
211
def autoprops_add_yes_none(sbox):
 
212
  "add: config=yes, commandline=none"
 
213
 
 
214
  autoprops_test(sbox, 'add', 1, 0, '')
 
215
 
 
216
#----------------------------------------------------------------------
 
217
 
 
218
def autoprops_add_no_yes(sbox):
 
219
  "add: config=no,  commandline=yes"
 
220
 
 
221
  autoprops_test(sbox, 'add', 0, 1, '')
 
222
 
 
223
#----------------------------------------------------------------------
 
224
 
 
225
def autoprops_add_yes_yes(sbox):
 
226
  "add: config=yes, commandline=yes"
 
227
 
 
228
  autoprops_test(sbox, 'add', 1, 1, '')
 
229
 
 
230
#----------------------------------------------------------------------
 
231
 
 
232
def autoprops_add_no_no(sbox):
 
233
  "add: config=no,  commandline=no"
 
234
 
 
235
  autoprops_test(sbox, 'add', 0, -1, '')
 
236
 
 
237
#----------------------------------------------------------------------
 
238
 
 
239
def autoprops_add_yes_no(sbox):
 
240
  "add: config=yes, commandline=no"
 
241
 
 
242
  autoprops_test(sbox, 'add', 1, -1, '')
 
243
 
 
244
#----------------------------------------------------------------------
 
245
 
 
246
def autoprops_imp_no_none(sbox):
 
247
  "import: config=no,  commandline=none"
 
248
 
 
249
  autoprops_test(sbox, 'import', 0, 0, '')
 
250
 
 
251
#----------------------------------------------------------------------
 
252
 
 
253
def autoprops_imp_yes_none(sbox):
 
254
  "import: config=yes, commandline=none"
 
255
 
 
256
  autoprops_test(sbox, 'import', 1, 0, '')
 
257
 
 
258
#----------------------------------------------------------------------
 
259
 
 
260
def autoprops_imp_no_yes(sbox):
 
261
  "import: config=no,  commandline=yes"
 
262
 
 
263
  autoprops_test(sbox, 'import', 0, 1, '')
 
264
 
 
265
#----------------------------------------------------------------------
 
266
 
 
267
def autoprops_imp_yes_yes(sbox):
 
268
  "import: config=yes, commandline=yes"
 
269
 
 
270
  autoprops_test(sbox, 'import', 1, 1, '')
 
271
 
 
272
#----------------------------------------------------------------------
 
273
 
 
274
def autoprops_imp_no_no(sbox):
 
275
  "import: config=no,  commandline=no"
 
276
 
 
277
  autoprops_test(sbox, 'import', 0, -1, '')
 
278
 
 
279
#----------------------------------------------------------------------
 
280
 
 
281
def autoprops_imp_yes_no(sbox):
 
282
  "import: config=yes, commandline=no"
 
283
 
 
284
  autoprops_test(sbox, 'import', 1, -1, '')
 
285
 
 
286
#----------------------------------------------------------------------
 
287
 
 
288
def autoprops_add_dir(sbox):
 
289
  "add directory"
 
290
 
 
291
  autoprops_test(sbox, 'add', 1, 0, 'autodir')
 
292
 
 
293
#----------------------------------------------------------------------
 
294
 
 
295
def autoprops_imp_dir(sbox):
 
296
  "import directory"
 
297
 
 
298
  autoprops_test(sbox, 'import', 1, 0, 'autodir')
 
299
 
 
300
 
 
301
########################################################################
 
302
# Run the tests
 
303
 
 
304
 
 
305
# list all tests here, starting with None:
 
306
test_list = [ None,
 
307
              autoprops_add_no_none,
 
308
              autoprops_add_yes_none,
 
309
              autoprops_add_no_yes,
 
310
              autoprops_add_yes_yes,
 
311
              autoprops_add_no_no,
 
312
              autoprops_add_yes_no,
 
313
              autoprops_imp_no_none,
 
314
              autoprops_imp_yes_none,
 
315
              autoprops_imp_no_yes,
 
316
              autoprops_imp_yes_yes,
 
317
              autoprops_imp_no_no,
 
318
              autoprops_imp_yes_no,
 
319
              autoprops_add_dir,
 
320
              autoprops_imp_dir,
 
321
             ]
 
322
 
 
323
if __name__ == '__main__':
 
324
  svntest.main.run_tests(test_list)
 
325
  # NOTREACHED
 
326
 
 
327
 
 
328
### End of file.