/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_atomicfile.py

  • Committer: Jelmer Vernooij
  • Date: 2018-08-14 21:37:46 UTC
  • mto: This revision was merged to the branch mainline in revision 7083.
  • Revision ID: jelmer@jelmer.uk-20180814213746-oxx6tcn57k8k98ed
Fix an ignore test. Make AtomicFile a contextmanager.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
from .. import (
24
24
    atomicfile,
25
 
    errors,
26
25
    osutils,
27
26
    )
28
27
from . import TestCaseInTempDir, TestSkipped
38
37
 
39
38
        self.assertEqual(['test'], os.listdir('.'))
40
39
        self.check_file_contents('test', b'foo\n')
41
 
        self.assertRaises(errors.AtomicFileAlreadyClosed, f.commit)
42
 
        self.assertRaises(errors.AtomicFileAlreadyClosed, f.abort)
 
40
        self.assertRaises(atomicfile.AtomicFileAlreadyClosed, f.commit)
 
41
        self.assertRaises(atomicfile.AtomicFileAlreadyClosed, f.abort)
43
42
        # close is re-entrant safe
44
43
        f.close()
45
44
 
49
48
        f.abort()
50
49
        self.assertEqual([], os.listdir('.'))
51
50
 
52
 
        self.assertRaises(errors.AtomicFileAlreadyClosed, f.abort)
53
 
        self.assertRaises(errors.AtomicFileAlreadyClosed, f.commit)
 
51
        self.assertRaises(atomicfile.AtomicFileAlreadyClosed, f.abort)
 
52
        self.assertRaises(atomicfile.AtomicFileAlreadyClosed, f.commit)
54
53
 
55
54
        # close is re-entrant safe
56
55
        f.close()
62
61
        f.close()
63
62
        self.assertEqual([], os.listdir('.'))
64
63
 
65
 
        self.assertRaises(errors.AtomicFileAlreadyClosed, f.abort)
66
 
        self.assertRaises(errors.AtomicFileAlreadyClosed, f.commit)
 
64
        self.assertRaises(atomicfile.AtomicFileAlreadyClosed, f.abort)
 
65
        self.assertRaises(atomicfile.AtomicFileAlreadyClosed, f.commit)
67
66
 
68
67
        # close is re-entrant safe
69
68
        f.close()
123
122
        f.commit()
124
123
        st = os.lstat('test')
125
124
        self.assertEqualMode(0o666 & ~umask, stat.S_IMODE(st.st_mode))
 
125
 
 
126
    def test_context_manager_commit(self):
 
127
        with atomicfile.AtomicFile('test') as f:
 
128
            self.assertPathDoesNotExist('test')
 
129
            f.write(b'foo\n')
 
130
 
 
131
        self.assertEqual(['test'], os.listdir('.'))
 
132
        self.check_file_contents('test', b'foo\n')
 
133
 
 
134
    def test_context_manager_abort(self):
 
135
        def abort():
 
136
            with atomicfile.AtomicFile('test') as f:
 
137
                f.write(b'foo\n')
 
138
                raise AssertionError
 
139
        self.assertRaises(AssertionError, abort)
 
140
        self.assertEqual([], os.listdir('.'))