- rewrote addfile() and delete_file() methods from the Package class (for the details...
[opensuse:osc.git] / tests / test_addfiles.py
1 import osc.core
2 import osc.oscerr
3 import os
4 import sys
5 from common import GET, OscTestCase
6
7 FIXTURES_DIR = os.path.join(os.getcwd(), 'addfile_fixtures')
8
9 class TestAddFiles(OscTestCase):
10     def _get_fixtures_dir(self):
11         return FIXTURES_DIR
12
13     def testSimpleAdd(self):
14         """add one file ('toadd1') to the wc"""
15         self._change_to_pkg('simple')
16         p = osc.core.Package('.')
17         p.addfile('toadd1')
18         exp = 'A    toadd1\n'
19         self.assertEqual(sys.stdout.getvalue(), exp)
20         self.assertFalse(os.path.exists(os.path.join('.osc', 'toadd1')))
21         self._check_status(p, 'toadd1', 'A')
22         self.__check_addlist('toadd1\n')
23
24     def testSimpleMultipleAdd(self):
25         """add multiple files ('toadd1', 'toadd2') to the wc"""
26         self._change_to_pkg('simple')
27         p = osc.core.Package('.')
28         p.addfile('toadd1')
29         p.addfile('toadd2')
30         exp = 'A    toadd1\nA    toadd2\n'
31         self.assertEqual(sys.stdout.getvalue(), exp)
32         self.assertFalse(os.path.exists(os.path.join('.osc', 'toadd1')))
33         self.assertFalse(os.path.exists(os.path.join('.osc', 'toadd2')))
34         self._check_status(p, 'toadd1', 'A')
35         self._check_status(p, 'toadd2', 'A')
36         self.__check_addlist('toadd1\ntoadd2\n')
37
38     def testAddVersionedFile(self):
39         """add a versioned file"""
40         self._change_to_pkg('simple')
41         p = osc.core.Package('.')
42         self.assertRaises(osc.oscerr.PackageFileConflict, p.addfile, 'merge')
43         self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_added')))
44         self._check_status(p, 'merge', ' ')
45
46     def testAddUnversionedFileTwice(self):
47         """add the same file twice"""
48         self._change_to_pkg('simple')
49         p = osc.core.Package('.')
50         p.addfile('toadd1')
51         self.assertRaises(osc.oscerr.PackageFileConflict, p.addfile, 'toadd1')
52         exp = 'A    toadd1\n'
53         self.assertEqual(sys.stdout.getvalue(), exp)
54         self.assertFalse(os.path.exists(os.path.join('.osc', 'toadd1')))
55         self._check_status(p, 'toadd1', 'A')
56         self.__check_addlist('toadd1\n')
57
58     def testReplace(self):
59         """replace a deleted file ('foo')"""
60         self._change_to_pkg('simple')
61         p = osc.core.Package('.')
62         open('foo', 'w').write('replaced file\n')
63         p.addfile('foo')
64         exp = 'A    foo\n'
65         self.assertEqual(sys.stdout.getvalue(), exp)
66         self.assertTrue(os.path.exists(os.path.join('.osc', 'foo')))
67         self.assertNotEqual(open(os.path.join('.osc', 'foo'), 'r').read(), 'replaced file\n')
68         self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_deleted')))
69         self._check_status(p, 'foo', 'R')
70         self.__check_addlist('foo\n')
71
72     def testAddNonExistentFile(self):
73         """add a non existent file"""
74         self._change_to_pkg('simple')
75         p = osc.core.Package('.')
76         self.assertRaises(IOError, p.addfile, 'doesnotexist')
77         self.assertFalse(os.path.exists(os.path.join('.osc', '_to_be_added')))
78
79     def __check_addlist(self, exp):
80         self._check_list('_to_be_added', exp)
81
82 if __name__ == '__main__':
83     import unittest
84     unittest.main()