~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/atomicfile.py

  • Committer: John Arbash Meinel
  • Date: 2009-06-12 18:05:15 UTC
  • mto: (4371.4.5 vila-better-heads)
  • mto: This revision was merged to the branch mainline in revision 4449.
  • Revision ID: john@arbash-meinel.com-20090612180515-t0cwbjsnve094oik
Add a failing test for handling nodes that are in the same linear chain.

It fails because the ancestry skipping causes us to miss the fact that the two nodes
are actually directly related. We could check at the beginning, as the 
code used to do, but I think that will be incomplete for the more-than-two
heads cases.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2008, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2004, 2005 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
16
16
 
17
17
 
18
18
import os
 
19
import sys
19
20
 
20
21
from bzrlib.lazy_import import lazy_import
21
22
lazy_import(globals(), """
22
23
import stat
 
24
import socket
23
25
import warnings
24
26
 
25
27
from bzrlib import (
58
60
 
59
61
        self.realfilename = filename
60
62
 
61
 
        flags = os.O_EXCL | os.O_CREAT | os.O_WRONLY | osutils.O_NOINHERIT
 
63
        flags = os.O_EXCL | os.O_CREAT | os.O_WRONLY
62
64
        if mode == 'wb':
63
65
            flags |= osutils.O_BINARY
64
66
        elif mode != 'wt':
80
82
            if stat.S_IMODE(st.st_mode) != new_mode:
81
83
                os.chmod(self.tmpfilename, new_mode)
82
84
 
 
85
    def _get_closed(self):
 
86
        symbol_versioning.warn('AtomicFile.closed deprecated in bzr 0.10',
 
87
                               DeprecationWarning, stacklevel=2)
 
88
        return self._fd is None
 
89
 
 
90
    closed = property(_get_closed)
 
91
 
83
92
    def __repr__(self):
84
93
        return '%s(%r)' % (self.__class__.__name__,
85
94
                           self.realfilename)
111
120
        """Discard the file unless already committed."""
112
121
        if self._fd is not None:
113
122
            self.abort()
 
123
 
 
124
    def __del__(self):
 
125
        if self._fd is not None:
 
126
            warnings.warn("%r leaked" % self)