Adrian Schröter
e7fbd5920f
Mon Feb 13 15:52:19 GMT 2012 - aspiers@suse.com Add test suite and fix two bugs it found: 1. --subdir was not working 2. --scm bzr was not working FWIW it also works on SLE11 now. I will issue a separate request for my enhancements to tar_scm, since they are much more intrusive (but have about 90% test coverage). OBS-URL: https://build.opensuse.org/request/show/105040 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/obs-service-tar_scm?expand=0&rev=32
79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
#!/usr/bin/python
|
|
|
|
import os
|
|
import shutil
|
|
|
|
class Fixtures:
|
|
name = 'tar_scm test suite'
|
|
email = 'root@localhost'
|
|
name_and_email = '%s <%s>' % (name, email)
|
|
|
|
subdir = 'subdir'
|
|
subdir1 = 'subdir1'
|
|
subdir2 = 'subdir2'
|
|
next_commit_rev = 1
|
|
|
|
def __init__(self, container_dir, scmlogs):
|
|
self.container_dir = container_dir
|
|
self.scmlogs = scmlogs
|
|
self.repo_path = self.container_dir + '/repo'
|
|
self.repo_url = 'file://' + self.repo_path
|
|
|
|
# Keys are stringified integers representing commit sequence numbers;
|
|
# values can be passed to --revision
|
|
self.revs = { }
|
|
|
|
def setup(self):
|
|
print self.__class__.__name__ + ": setting up fixtures"
|
|
self.init_fixtures_dir()
|
|
self.init()
|
|
|
|
def init_fixtures_dir(self):
|
|
if os.path.exists(self.repo_path):
|
|
shutil.rmtree(self.repo_path)
|
|
|
|
def init(self):
|
|
raise NotImplementedError, \
|
|
self.__class__.__name__ + " didn't implement init()"
|
|
|
|
def create_commits(self, num_commits):
|
|
self.scmlogs.annotate("Creating %d commits ..." % num_commits)
|
|
if num_commits == 0:
|
|
return
|
|
|
|
for i in xrange(0, num_commits):
|
|
new_rev = self.create_commit()
|
|
self.record_rev(new_rev)
|
|
|
|
self.scmlogs.annotate("Created %d commits; now at %s" % (num_commits, new_rev))
|
|
|
|
def create_commit(self):
|
|
os.chdir(self.wd)
|
|
newly_created = self.prep_commit()
|
|
self.do_commit(newly_created)
|
|
new_rev = self.next_commit_rev
|
|
self.next_commit_rev += 1
|
|
return new_rev
|
|
|
|
def prep_commit(self):
|
|
"""
|
|
Caller should ensure correct cwd.
|
|
Returns list of newly created files.
|
|
"""
|
|
newly_created = [ ]
|
|
|
|
if not os.path.exists('a'):
|
|
newly_created.append('a')
|
|
|
|
if not os.path.exists(self.subdir):
|
|
os.mkdir(self.subdir)
|
|
# This will take care of adding subdir/b too
|
|
newly_created.append(self.subdir)
|
|
|
|
for fn in ('a', self.subdir + '/b'):
|
|
f = open(fn, 'w')
|
|
f.write(str(self.next_commit_rev))
|
|
f.close()
|
|
|
|
return newly_created
|