Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Unified Diff: presubmit_support.py

Issue 113964: Make AffectedFile member variables private. (Closed)
Patch Set: 80cols Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/presubmit_unittest.py » ('j') | tests/presubmit_unittest.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: presubmit_support.py
diff --git a/presubmit_support.py b/presubmit_support.py
index 42df164c6a741138412e971863c1eaf1d55f5094..6cbdfed14d43d8323d679ca3a6c27206da253565 100755
--- a/presubmit_support.py
+++ b/presubmit_support.py
@@ -316,12 +316,11 @@ class AffectedFile(object):
"""Representation of a file in a change."""
def __init__(self, path, action, repository_root=''):
- self.path = path
- self.action = action
- self.repository_root = repository_root
- self.server_path = None
- self.is_directory = None
- self.properties = {}
+ self._path = path
+ self._action = action
+ self._repository_root = repository_root
+ self._is_directory = None
+ self._properties = {}
def ServerPath(self):
"""Returns a path string that identifies the file in the SCM system.
@@ -333,32 +332,32 @@ class AffectedFile(object):
def LocalPath(self):
"""Returns the path of this file on the local disk relative to client root.
"""
- return normpath(self.path)
+ return normpath(self._path)
def AbsoluteLocalPath(self):
"""Returns the absolute path of this file on the local disk.
"""
- return normpath(os.path.join(self.repository_root, self.LocalPath()))
+ return normpath(os.path.join(self._repository_root, self.LocalPath()))
def IsDirectory(self):
"""Returns true if this object is a directory."""
- path = self.AbsoluteLocalPath()
- if self.is_directory is None:
- self.is_directory = (os.path.exists(path) and
- os.path.isdir(path))
- return self.is_directory
+ if self._is_directory is None:
+ path = self.AbsoluteLocalPath()
+ self._is_directory = (os.path.exists(path) and
+ os.path.isdir(path))
+ return self._is_directory
def Action(self):
"""Returns the action on this opened file, e.g. A, M, D, etc."""
# TODO(maruel): Somewhat crappy, Could be "A" or "A +" for svn but
# different for other SCM.
- return self.action
+ return self._action
def Property(self, property_name):
"""Returns the specified SCM property of this file, or None if no such
property.
"""
- return self.properties.get(property_name, None)
+ return self._properties.get(property_name, None)
def IsTextFile(self):
"""Returns True if the file is a text file and not a binary file."""
@@ -397,38 +396,47 @@ class AffectedFile(object):
class SvnAffectedFile(AffectedFile):
"""Representation of a file in a change out of a Subversion checkout."""
+ def __init__(self, *args, **kwargs):
+ AffectedFile.__init__(self, *args, **kwargs)
+ self._server_path = None
+ self._is_text_file = None
+
def ServerPath(self):
- if self.server_path is None:
- self.server_path = gclient.CaptureSVNInfo(
+ if self._server_path is None:
+ self._server_path = gclient.CaptureSVNInfo(
self.AbsoluteLocalPath()).get('URL', '')
- return self.server_path
+ return self._server_path
def IsDirectory(self):
- path = self.AbsoluteLocalPath()
- if self.is_directory is None:
+ if self._is_directory is None:
+ path = self.AbsoluteLocalPath()
if os.path.exists(path):
# Retrieve directly from the file system; it is much faster than
# querying subversion, especially on Windows.
- self.is_directory = os.path.isdir(path)
+ self._is_directory = os.path.isdir(path)
else:
- self.is_directory = gclient.CaptureSVNInfo(
+ self._is_directory = gclient.CaptureSVNInfo(
path).get('Node Kind') in ('dir', 'directory')
- return self.is_directory
+ return self._is_directory
def Property(self, property_name):
- if not property_name in self.properties:
- self.properties[property_name] = gcl.GetSVNFileProperty(
+ if not property_name in self._properties:
+ self._properties[property_name] = gcl.GetSVNFileProperty(
self.AbsoluteLocalPath(), property_name)
- return self.properties[property_name]
+ return self._properties[property_name]
def IsTextFile(self):
- if self.Action() == 'D':
- return False
- mime_type = gcl.GetSVNFileProperty(self.AbsoluteLocalPath(),
- 'svn:mime-type')
- if not mime_type or mime_type.startswith('text/'):
- return True
- return False
+ if self._is_text_file is None:
+ if self.Action() == 'D':
+ # A deleted file is not a text file.
+ self._is_text_file = False
+ elif self.IsDirectory():
+ self._is_text_file = False
+ else:
+ mime_type = gcl.GetSVNFileProperty(self.AbsoluteLocalPath(),
+ 'svn:mime-type')
+ self._is_text_file = (not mime_type or mime_type.startswith('text/'))
+ return self._is_text_file
class GclChange(object):
« no previous file with comments | « no previous file | tests/presubmit_unittest.py » ('j') | tests/presubmit_unittest.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698