def test_env(self): env = os.environ.copy() env['HELLO'] = 'Hello world' process = Process(quiet=True, env=env) rc, lines = process.popen('echo ${HELLO}') self.assertEqual(rc, 0) self.assertEqual(lines, ['Hello world'])
def test_env(self): env = os.environ.copy() env['HELLO'] = 'Hello world' process = Process(env=env) rc = process.system('echo ${HELLO} > output') self.assertEqual(rc, 0) self.assertEqual(process.pipe('cat output'), 'Hello world')
def clone(self): process = Process(quiet=True) process.system('git clone testpackage testclone') self.clonedir = join(self.tempdir, 'testclone') # Park the server on a branch because "Updating the currently # checked-out branch may cause confusion." self.dirstack.push('testpackage') process.system('git checkout -b parking') self.dirstack.pop()
def checkout(self, path='trunk', target=None): process = Process(quiet=True) if target is None: self.checkoutdir = join(self.tempdir, self.packagename) else: self.checkoutdir = join(self.tempdir, target, self.packagename) process.system('svn checkout file://%s/%s %s' % (self.repo, path, self.checkoutdir)) os.chdir(self.checkoutdir)
def _fake_clone(self): # Fake a checkout, the real thing is too expensive process = Process(quiet=True) source = self._fake_source package = join(dirname(__file__), 'tests', source) archive = zipfile.ZipFile(package, 'r') archive.extractall() os.rename(source[:-4], 'testclone') self.dirstack.push('testclone') if self.scm.version_info[:2] >= (1, 7): url = process.popen('svn info')[1][2][5:] else: url = process.popen('svn info')[1][1][5:] process.system('svn switch --relocate %s file://%s/trunk' % (url, self.packagedir)) self.dirstack.pop() self.clonedir = join(self.tempdir, 'testclone')
def testSwitchRemoteBranch(self): scm = Git(Process(quiet=True)) self.branch(self.packagedir, '2.x') self.clone() self.assertEqual(scm.get_branch_from_sandbox(self.clonedir), 'master') self.assertEqual(scm.switch_branch(self.clonedir, '2.x'), 0) self.assertEqual(scm.get_branch_from_sandbox(self.clonedir), '2.x')
def testGetGitifySubversion(self): """ Support git-svn-helpers/gitify style dual git/svn checkouts/clones. """ # Simulate a git-svn-helpers/gitify style dual svn/git checkout/clone svn_url = urlparse.urlunsplit(('file', '', self.packagedir, '', '')) git_svn_clonedir = self.clonedir + '.git-svn' process = Process(quiet=True) process.system( 'git svn clone -s {0} {1}'.format(svn_url, git_svn_clonedir)) os.rename( os.path.join(git_svn_clonedir, '.git'), os.path.join(self.clonedir, '.git')) scms = SCMFactory() self.assertEqual(scms.get_scm_from_url(svn_url).name, 'svn') self.assertEqual(scms.get_scm_from_sandbox(self.clonedir).name, 'svn')
def testCreateExistingTag(self): scm = Mercurial(Process(quiet=True)) self.assertEqual( scm.create_tag(self.packagedir, '2.6', 'testpackage', '2.6', False), 0) self.assertEqual(scm.tag_exists(self.packagedir, '2.6'), True) self.assertRaises(SystemExit, scm.create_tag, self.packagedir, '2.6', 'testpackage', '2.6', False)
def testSwitchBranch(self): scm = Subversion(Process(quiet=True)) trunkid = 'file://%s/trunk' % self.packagedir branchid = 'file://%s/branches/2.x' % self.packagedir self.branch(self.clonedir, branchid) self.assertEqual(scm.get_branch_from_sandbox(self.clonedir), trunkid) self.assertEqual(scm.switch_branch(self.clonedir, branchid), 0) self.assertEqual(scm.get_branch_from_sandbox(self.clonedir), branchid)
def testCreateAndPushRemoteTag(self): scm = Mercurial(Process(quiet=True)) self.clone() self.assertEqual( scm.create_tag(self.clonedir, '2.6', 'testpackage', '2.6', True), 0) self.assertEqual(scm.tag_exists(self.clonedir, '2.6'), True) self.assertEqual(scm.tag_exists(self.packagedir, '2.6'), True)
def testCreateExistingTag(self): scm = Subversion(Process(quiet=True)) tagid = 'file://%s/tags/2.6' % self.packagedir self.assertEqual(scm.create_tag(self.clonedir, tagid, 'testpackage', '2.6', False), 0) self.assertEqual(scm.tag_exists(self.clonedir, tagid), True) # Note: This works! Subversion just copies stuff into a subdirectory... self.assertEqual(scm.create_tag(self.clonedir, tagid, 'testpackage', '2.6', False), 0) # Note: Only on the third attempt tagging fails self.assertRaises(SystemExit, scm.create_tag, self.clonedir, tagid, 'testpackage', '2.6', False)
def testCommitAndPushDirtyRemoteSandbox(self): scm = Mercurial(Process(quiet=True)) self.clone() self.modify(self.clonedir) self.assertEqual( scm.commit_sandbox(self.clonedir, 'testpackage', '2.6', True), 0) self.verify(self.clonedir) self.update(self.packagedir) self.verify(self.packagedir)
def testSwitchRemoteBranch(self): scm = Mercurial(Process(quiet=True)) self.branch(self.packagedir, '2.x') self.modify(self.packagedir) self.assertEqual( scm.commit_sandbox(self.packagedir, 'testpackage', '0.0', True), 0) self.clone() self.assertEqual(scm.get_branch_from_sandbox(self.clonedir), 'default') self.assertEqual(scm.switch_branch(self.clonedir, '2.x'), 0) self.assertEqual(scm.get_branch_from_sandbox(self.clonedir), '2.x')
def testAmbiguousSandbox(self): scms = SCMFactory() process = Process() self.dirstack.push(self.packagedir) process.system('hg init .') process.system('hg add README.txt setup.py testpackage/__init__.py') process.system('hg commit -m"Import"') self.dirstack.pop() self.assertRaises(SystemExit, scms.get_scm, None, self.packagedir)
def setUp(self): SubversionSetup.setUp(self) process = Process(quiet=True) process.system('svn mv -m"Rename" "file://%s/tags" "file://%s/tag"' % (self.packagedir, self.packagedir)) process.system('svn mv -m"Rename" "file://%s/branches" "file://%s/branch"' % (self.packagedir, self.packagedir))
def clone(self): process = Process(quiet=True) process.system('git clone testpackage testclone') self.clonedir = join(self.tempdir, 'testclone') # Park the server on a branch self.dirstack.push('testpackage') process.system('git checkout parking') self.dirstack.pop() # Make sure the clone is on master self.dirstack.push('testclone') process.system('git checkout master') self.dirstack.pop()
def testGitManifest(self): st = Setuptools(Process(quiet=True, env=get_env())) archive = st.run_dist(self.packagedir, [], 'sdist', ['--formats=zip'], ff='git') self.assertEqual( get_manifest(archive), """\ README.txt setup.py testpackage/__init__.py testpackage/git_only.c testpackage/git_only.py testpackage/git_only.txt testpackage.egg-info/PKG-INFO testpackage.egg-info/SOURCES.txt testpackage.egg-info/dependency_links.txt testpackage.egg-info/not-zip-safe testpackage.egg-info/requires.txt testpackage.egg-info/top_level.txt""")
def testUpdateWithRevisionPin(self): from mr.developer.develop import CmdCheckout from mr.developer.develop import CmdUpdate process = Process() repository = os.path.join(self.tempdir, 'repository') rc, lines = process.popen( "svnadmin create {0}".format(repository)) assert rc == 0 checkout = os.path.join(self.tempdir, 'checkout') rc, lines = process.popen( "svn checkout file://{0} {1}".format(repository, checkout), echo=False) assert rc == 0 foo = os.path.join(checkout, 'foo') self.mkfile(foo, 'foo') rc, lines = process.popen( "svn add {0}".format(foo), echo=False) assert rc == 0 rc, lines = process.popen( "svn commit {0} -m foo".format(foo), echo=False) assert rc == 0 bar = os.path.join(checkout, 'bar') self.mkfile(bar, 'bar') rc, lines = process.popen( "svn add {0}".format(bar), echo=False) assert rc == 0 rc, lines = process.popen( "svn commit {0} -m bar".format(bar), echo=False) assert rc == 0 src = os.path.join(self.tempdir, 'src') develop = MockDevelop() develop.sources = { 'egg': Source( kind='svn', name='egg', url='file://{0}@1'.format(repository), path=os.path.join(src, 'egg'))} CmdCheckout(develop)(develop.parser.parse_args(['co', 'egg'])) assert set(os.listdir(os.path.join(src, 'egg'))) == set(('.svn', 'foo')) CmdUpdate(develop)(develop.parser.parse_args(['up', 'egg'])) assert set(os.listdir(os.path.join(src, 'egg'))) == set(('.svn', 'foo'))
def testBadPush(self): scm = Mercurial(Process(quiet=True)) self.clone() self.destroy() self.assertRaises(SystemExit, scm.commit_sandbox, self.clonedir, 'testpackage', '2.6', True)
def testBadServer(self): scm = Mercurial(Process(quiet=True)) self.destroy() self.assertRaises(SystemExit, scm.clone_url, self.packagedir, 'testclone')
def testCommitCleanSandbox(self): scm = Mercurial(Process(quiet=True)) self.assertEqual( scm.commit_sandbox(self.packagedir, 'testpackage', '2.6', False), 0)
def testCommitAndPushCleanRemoteSandbox(self): scm = Mercurial(Process(quiet=True)) self.clone() self.assertEqual( scm.commit_sandbox(self.clonedir, 'testpackage', '2.6', True), 0)
def testBadSandbox(self): scm = Subversion(Process(quiet=True)) tagid = 'file://%s/tags/2.6' % self.packagedir self.destroy(self.clonedir) self.assertRaises(SystemExit, scm.create_tag, self.clonedir, tagid, 'testpackage', '2.6', False)
def testBadSandbox(self): scm = Mercurial(Process(quiet=True)) self.destroy() self.assertRaises(SystemExit, scm.get_branch_from_sandbox, self.packagedir)
def tag(self, dir, tagid): process = Process(quiet=True) process.system('svn cp -m"Tag" file://%s/trunk %s' % (self.packagedir, tagid)) process.system('svn co %s testtag' % tagid) self.tagdir = join(self.tempdir, 'testtag')
def test_quiet(self): process = Process(quiet=True) value = process.pipe('echo "Hello world"') self.assertEqual(value, 'Hello world')
def update(self, dir): process = Process(quiet=True) process.system('git checkout master')
def branch(self, dir, branchid): process = Process(quiet=True) process.system('svn cp -m"Branch" file://%s/trunk %s' % (self.packagedir, branchid)) process.system('svn co %s testbranch' % branchid) self.branchdir = join(self.tempdir, 'testbranch')
def remove(self, dir): process = Process(quiet=True) process.system('git rm setup.py')
def clone(self): process = Process(quiet=True) process.system('hg clone testpackage testclone') self.clonedir = join(self.tempdir, 'testclone')
def branch(self, dir, branchid): process = Process(quiet=True) process.system('hg branch %s' % branchid)
def testSwitchUnknownBranch(self): scm = Mercurial(Process(quiet=True)) self.assertRaises(SystemExit, scm.switch_branch, self.packagedir, '2.x')
def __init__(self, rc=None, lines=None, func=None): Process.__init__(self, quiet=True) self.rc = rc or 0 self.lines = lines or [] self.func = func
def tag(self, dir, tagid): process = Process(quiet=True) process.system('hg tag %s' % tagid) process.system('hg update %s' % tagid)
def modifyprop(self, dir): process = Process(quiet=True) process.system('svn propset svn:format "text/x-python" setup.py')
def testCreateAndPushTag(self): scm = Subversion(Process(quiet=True)) tagid = 'file://%s/tags/2.6' % self.packagedir self.assertEqual(scm.create_tag(self.clonedir, tagid, 'testpackage', '2.6', True), 0) self.assertEqual(scm.tag_exists(self.clonedir, tagid), True)
def testBadSandbox(self): scm = Mercurial(Process(quiet=True)) self.destroy() self.assertRaises(SystemExit, scm.check_tag_exists, self.packagedir, '2.6')
def testBadSandbox(self): scm = Subversion(Process(quiet=True)) self.destroy(self.clonedir) self.assertRaises(SystemExit, scm.get_root_from_sandbox, self.clonedir)
def test_bad_cmd(self): process = Process() value = process.pipe('$ "Hello world"') self.assertEqual(value, '')
def testBadSandbox(self): scm = Mercurial(Process(quiet=True)) self.destroy() self.assertRaises(SystemExit, scm.is_unclean_sandbox, self.packagedir)
def test_simple(self): process = Process() value = process.pipe('echo "Hello world"') self.assertEqual(value, 'Hello world')
def testCommitAndPushDirtyLocalSandbox(self): scm = Mercurial(Process(quiet=True)) self.modify(self.packagedir) self.assertEqual( scm.commit_sandbox(self.packagedir, 'testpackage', '2.6', True), 0)
def clone(self): process = Process(quiet=True) process.system('svn checkout file://%s/trunk testclone' % self.packagedir) self.clonedir = join(self.tempdir, 'testclone')
def test_quiet(self): process = Process(quiet=True) rc = process.system('echo "Hello world"') self.assertEqual(rc, 0)
def testBadSandbox(self): scm = Subversion(Process(quiet=True)) branchid = 'file://%s/branches/2.x' % self.packagedir self.destroy(self.clonedir) self.assertRaises(SystemExit, scm.switch_branch, self.clonedir, branchid)
def testCloneUrl(self): scm = Mercurial(Process(quiet=True)) self.assertEqual(scm.clone_url(self.packagedir, 'testclone'), 0) self.assertEqual(isdir('testclone'), True)
def testBadRepository(self): scm = Subversion(Process(quiet=True)) tagid = 'file://%s/tags/2.6' % self.packagedir self.destroy(self.packagedir) self.assertRaises(SystemExit, scm.check_tag_exists, self.clonedir, tagid)
def test_simple(self): process = Process() rc = process.system('echo "Hello world" > output') self.assertEqual(rc, 0) self.assertEqual(process.pipe('cat output'), 'Hello world')
def test_bad_cmd(self): process = Process() rc = process.system('$ "Hello world" 2> output') self.assertEqual(rc, 127)
def testBadSandbox(self): scm = Mercurial(Process(quiet=True)) self.destroy() self.assertRaises(SystemExit, scm.switch_branch, self.packagedir, '2.x')
def update(self, dir): process = Process(quiet=True) process.system('hg update')
def tag(self, dir, tagid): process = Process(quiet=True) process.system('git tag %s' % tagid) process.system('git checkout %s' % tagid)
def test_env(self): env = os.environ.copy() env['HELLO'] = 'Hello world' process = Process(quiet=True, env=env) value = process.pipe('echo ${HELLO}') self.assertEqual(value, 'Hello world')
def testBadSandbox(self): scm = Mercurial(Process(quiet=True)) self.destroy() self.assertRaises(SystemExit, scm.create_tag, self.packagedir, '2.6', 'testpackage', '2.6', False)
def branch(self, dir, branchid): process = Process(quiet=True) process.system('git branch %s' % branchid) process.system('git checkout %s' % branchid)