- core.request_interactive_review: don't execute review code path if no reviews are...
[opensuse:osc.git] / tests / test_init_project.py
1 import osc.core
2 import osc.oscerr
3 import os
4 from common import GET, OscTestCase
5 FIXTURES_DIR = os.path.join(os.getcwd(), 'init_project_fixtures')
6
7 def suite():
8     import unittest
9     return unittest.makeSuite(TestInitProject)
10
11 class TestInitProject(OscTestCase):
12     def _get_fixtures_dir(self):
13         # workaround for git because it doesn't allow empty dirs
14         if not os.path.exists(os.path.join(FIXTURES_DIR, 'osctest')):
15             os.mkdir(os.path.join(FIXTURES_DIR, 'osctest'))
16         return FIXTURES_DIR
17
18     def tearDown(self):
19         if os.path.exists(os.path.join(FIXTURES_DIR, 'osctest')):
20             os.rmdir(os.path.join(FIXTURES_DIR, 'osctest'))
21         OscTestCase.tearDown(self)
22
23     def test_simple(self):
24         """initialize a project dir"""
25         prj_dir = os.path.join(self.tmpdir, 'testprj')
26         prj = osc.core.Project.init_project('http://localhost', prj_dir, 'testprj', getPackageList=False)
27         self.assertTrue(isinstance(prj, osc.core.Project))
28         storedir = os.path.join(prj_dir, osc.core.store)
29         self._check_list(os.path.join(storedir, '_project'), 'testprj\n')
30         self._check_list(os.path.join(storedir, '_apiurl'), 'http://localhost\n')
31         self._check_list(os.path.join(storedir, '_packages'), '<project name="testprj" />')
32
33     def test_dirExists(self):
34         """initialize a project dir but the dir already exists"""
35         prj_dir = os.path.join(self.tmpdir, 'testprj')
36         os.mkdir(prj_dir)
37         prj = osc.core.Project.init_project('http://localhost', prj_dir, 'testprj', getPackageList=False)
38         self.assertTrue(isinstance(prj, osc.core.Project))
39         storedir = os.path.join(prj_dir, osc.core.store)
40         self._check_list(os.path.join(storedir, '_project'), 'testprj\n')
41         self._check_list(os.path.join(storedir, '_apiurl'), 'http://localhost\n')
42         self._check_list(os.path.join(storedir, '_packages'), '<project name="testprj" />')
43
44     def test_storedirExists(self):
45         """initialize a project dir but the storedir already exists"""
46         prj_dir = os.path.join(self.tmpdir, 'testprj')
47         os.mkdir(prj_dir)
48         os.mkdir(os.path.join(prj_dir, osc.core.store))
49         self.assertRaises(osc.oscerr.OscIOError, osc.core.Project.init_project, 'http://localhost', prj_dir, 'testprj')
50
51     @GET('http://localhost/source/testprj', text='<directory count="0" />')
52     def test_no_package_tracking(self):
53         """initialize a project dir but disable package tracking; enable getPackageList=True;
54         disable wc_check (because we didn't disable the package tracking before the Project class
55         was imported therefore REQ_STOREFILES contains '_packages')
56         """
57         import osc.conf
58         # disable package tracking
59         osc.conf.config['do_package_tracking'] = False
60         prj_dir = os.path.join(self.tmpdir, 'testprj')
61         os.mkdir(prj_dir)
62         prj = osc.core.Project.init_project('http://localhost', prj_dir, 'testprj', False, wc_check=False)
63         self.assertTrue(isinstance(prj, osc.core.Project))
64         storedir = os.path.join(prj_dir, osc.core.store)
65         self._check_list(os.path.join(storedir, '_project'), 'testprj\n')
66         self._check_list(os.path.join(storedir, '_apiurl'), 'http://localhost\n')
67         self.assertFalse(os.path.exists(os.path.join(storedir, '_packages')))
68
69 if __name__ == '__main__':
70     import unittest
71     unittest.main()