summaryrefslogtreecommitdiff
path: root/tests/test_repairwc.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_repairwc.py')
-rw-r--r--tests/test_repairwc.py259
1 files changed, 0 insertions, 259 deletions
diff --git a/tests/test_repairwc.py b/tests/test_repairwc.py
deleted file mode 100644
index c239da7..0000000
--- a/tests/test_repairwc.py
+++ /dev/null
@@ -1,259 +0,0 @@
-import osc.core
-import osc.oscerr
-import os
-import sys
-from common import GET, PUT, POST, DELETE, OscTestCase
-from xml.etree import cElementTree as ET
-FIXTURES_DIR = os.path.join(os.getcwd(), 'repairwc_fixtures')
-
-def suite():
- import unittest
- return unittest.makeSuite(TestRepairWC)
-
-class TestRepairWC(OscTestCase):
- def _get_fixtures_dir(self):
- return FIXTURES_DIR
-
- def __assertNotRaises(self, exception, meth, *args, **kwargs):
- try:
- meth(*args, **kwargs)
- except exception:
- self.fail('%s raised' % exception.__name__)
-
- def test_working_empty(self):
- """consistent, empty working copy"""
- self._change_to_pkg('working_empty')
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_working_nonempty(self):
- """
- consistent, non-empty working copy. One file is in conflict,
- one file is marked for deletion and one file has state 'A'
- """
- self._change_to_pkg('working_nonempty')
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_buildfiles(self):
- """
- wc has a _buildconfig_prj_arch and a _buildinfo_prj_arch.xml in the storedir
- """
- self._change_to_pkg('buildfiles')
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- @GET('http://localhost/source/osctest/simple1/foo?rev=1', text='This is a simple test.\n')
- def test_simple1(self):
- """a file is marked for deletion but storefile doesn't exist"""
- self._change_to_pkg('simple1')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self.assertTrue(os.path.exists(os.path.join('.osc', 'foo')))
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'M')
- self._check_status(p, 'merge', ' ')
- self._check_status(p, 'toadd1', '?')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_simple2(self):
- """a file "somefile" exists in the storedir which isn't tracked"""
- self._change_to_pkg('simple2')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self.assertFalse(os.path.exists(os.path.join('.osc', 'somefile')))
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'M')
- self._check_status(p, 'merge', ' ')
- self._check_status(p, 'toadd1', '?')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_simple3(self):
- """toadd1 has state 'A' and a file .osc/toadd1 exists"""
- self._change_to_pkg('simple3')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self.assertFalse(os.path.exists(os.path.join('.osc', 'toadd1')))
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'M')
- self._check_status(p, 'merge', ' ')
- self._check_addlist('toadd1\n')
- self._check_status(p, 'toadd1', 'A')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_simple4(self):
- """a file is listed in _to_be_deleted but isn't present in _files"""
- self._change_to_pkg('simple4')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'M')
- self._check_status(p, 'merge', ' ')
- self._check_status(p, 'toadd1', '?')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_simple5(self):
- """a file is listed in _in_conflict but isn't present in _files"""
- self._change_to_pkg('simple5')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self.assertFalse(os.path.exists(os.path.join('.osc', '_in_conflict')))
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'M')
- self._check_status(p, 'merge', ' ')
- self._check_status(p, 'toadd1', '?')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- @GET('http://localhost/source/osctest/simple6/foo?rev=1', text='This is a simple test.\n')
- def test_simple6(self):
- """
- a file is listed in _to_be_deleted and is present
- in _files but the storefile is missing
- """
- self._change_to_pkg('simple6')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self.assertTrue(os.path.exists(os.path.join('.osc', 'foo')))
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'M')
- self._check_status(p, 'merge', ' ')
- self._check_status(p, 'toadd1', '?')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_simple7(self):
- """files marked as skipped don't exist in the storedir"""
- self._change_to_pkg('simple7')
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_simple8(self):
- """
- a file is marked as skipped but the skipped file exists in the storedir
- """
- self._change_to_pkg('simple8')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self.assertFalse(os.path.exists(os.path.join('.osc', 'skipped')))
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'M')
- self._check_status(p, 'merge', ' ')
- self._check_status(p, 'toadd1', '?')
- self._check_status(p, 'skipped', 'S')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- @GET('http://localhost/source/osctest/multiple/merge?rev=1', text='Is it\npossible to\nmerge this file?I hope so...\n')
- @GET('http://localhost/source/osctest/multiple/nochange?rev=1', text='This file didn\'t change.\n')
- def test_multiple(self):
- """
- a storefile is missing, a file is listed in _to_be_deleted
- but is not present in _files, a file is listed in _in_conflict
- but the storefile is missing and a file exists in the storedir
- but is not present in _files
- """
- self._change_to_pkg('multiple')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair()
- self.assertTrue(os.path.exists(os.path.join('.osc', 'foo')))
- self.assertFalse(os.path.exists(os.path.join('.osc', 'unknown_file')))
- self._check_deletelist('foo\n')
- self._check_status(p, 'foo', 'D')
- self._check_status(p, 'nochange', 'C')
- self._check_status(p, 'merge', ' ')
- self._check_status(p, 'foobar', 'A')
- self._check_status(p, 'toadd1', '?')
- # additional cleanup check
- self.__assertNotRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
-
- def test_noapiurl(self):
- """the package wc has no _apiurl file"""
- self._change_to_pkg('noapiurl')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair('http://localhost')
- self.assertTrue(os.path.exists(os.path.join('.osc', '_apiurl')))
- self.assertEqual(open(os.path.join('.osc', '_apiurl')).read(), 'http://localhost\n')
- self.assertEqual(p.apiurl, 'http://localhost')
-
- def test_invalidapiurl(self):
- """the package wc has an invalid apiurl file (invalid url format)"""
- self._change_to_pkg('invalid_apiurl')
- p = osc.core.Package('.', wc_check=False)
- p.wc_repair('http://localhost')
- self.assertTrue(os.path.exists(os.path.join('.osc', '_apiurl')))
- self.assertEqual(open(os.path.join('.osc', '_apiurl')).read(), 'http://localhost\n')
- self.assertEqual(p.apiurl, 'http://localhost')
-
- def test_invalidapiurl_param(self):
- """pass an invalid apiurl to wc_repair"""
- import urllib2
- self._change_to_pkg('invalid_apiurl')
- p = osc.core.Package('.', wc_check=False)
- self.assertRaises(urllib2.URLError, p.wc_repair, 'http:/localhost')
- self.assertRaises(urllib2.URLError, p.wc_repair, 'invalid')
-
- def test_noapiurlNotExistingApiurl(self):
- """the package wc has no _apiurl file and no apiurl is passed to repairwc"""
- self._change_to_pkg('noapiurl')
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Package, '.')
- p = osc.core.Package('.', wc_check=False)
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, p.wc_repair)
- self.assertFalse(os.path.exists(os.path.join('.osc', '_apiurl')))
-
- def test_project_noapiurl(self):
- """the project wc has no _apiurl file"""
- import shutil
- prj_dir = os.path.join(self.tmpdir, 'prj_noapiurl')
- shutil.copytree(os.path.join(self._get_fixtures_dir(), 'prj_noapiurl'), prj_dir)
- storedir = os.path.join(prj_dir, osc.core.store)
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Project, prj_dir, getPackageList=False)
- prj = osc.core.Project(prj_dir, wc_check=False, getPackageList=False)
- prj.wc_repair('http://localhost')
- self.assertTrue(os.path.exists(os.path.join(storedir, '_apiurl')))
- self.assertTrue(os.path.exists(os.path.join(storedir, '_apiurl')))
- self.assertEqual(open(os.path.join(storedir, '_apiurl'), 'r').read(), 'http://localhost\n')
-
- def test_project_invalidapiurl(self):
- """the project wc has an invalid _apiurl file (invalid url format)"""
- import shutil
- prj_dir = os.path.join(self.tmpdir, 'prj_invalidapiurl')
- shutil.copytree(os.path.join(self._get_fixtures_dir(), 'prj_invalidapiurl'), prj_dir)
- storedir = os.path.join(prj_dir, osc.core.store)
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Project, prj_dir, getPackageList=False)
- prj = osc.core.Project(prj_dir, wc_check=False, getPackageList=False)
- prj.wc_repair('http://localhost')
- self.assertTrue(os.path.exists(os.path.join(storedir, '_apiurl')))
- self.assertTrue(os.path.exists(os.path.join(storedir, '_apiurl')))
- self.assertEqual(open(os.path.join(storedir, '_apiurl'), 'r').read(), 'http://localhost\n')
-
- def test_project_invalidapiurl_param(self):
- """pass an invalid apiurl to wc_repair"""
- import shutil
- import urllib2
- prj_dir = os.path.join(self.tmpdir, 'prj_invalidapiurl')
- shutil.copytree(os.path.join(self._get_fixtures_dir(), 'prj_invalidapiurl'), prj_dir)
- storedir = os.path.join(prj_dir, osc.core.store)
- self.assertRaises(osc.oscerr.WorkingCopyInconsistent, osc.core.Project, prj_dir, getPackageList=False)
- prj = osc.core.Project(prj_dir, wc_check=False, getPackageList=False)
- self.assertRaises(urllib2.URLError, prj.wc_repair, 'http:/localhost')
- self.assertRaises(urllib2.URLError, prj.wc_repair, 'invalid')
-
-if __name__ == '__main__':
- import unittest
- unittest.main()