From c7bd44256ce9f77a54e22561405b06690a805e94 Mon Sep 17 00:00:00 2001 From: Philip Thiem Date: Sun, 30 Jun 2013 21:11:35 -0500 Subject: Finished some 1.7 tests, and updated the zip file to include the .svn dirs Several fixes to get the code to pass the tests --HG-- extra : rebase_source : 76e13888a6efc871cc254076c7e58f201af24472 --- setuptools/svn_utils.py | 69 ++++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 29 deletions(-) (limited to 'setuptools/svn_utils.py') diff --git a/setuptools/svn_utils.py b/setuptools/svn_utils.py index 52a1c07b..7d30d322 100644 --- a/setuptools/svn_utils.py +++ b/setuptools/svn_utils.py @@ -45,7 +45,8 @@ class SVNEntries(object): @staticmethod def get_svn_tool_version(): proc = _Popen(['svn', '--version', '--quiet'], - stdout=_PIPE, shell=(sys.platform=='win32')) + stdout=_PIPE, stderr=_PIPE, + shell=(sys.platform=='win32')) data = unicode(proc.communicate()[0], encoding='utf-8') if data: return data.strip() @@ -56,7 +57,7 @@ class SVNEntries(object): def load_dir(class_, base): filename = os.path.join(base, '.svn', 'entries') f = open(filename) - result = SVNEntries.read(f, None) + result = SVNEntries.read(f, base) f.close() return result @@ -66,16 +67,15 @@ class SVNEntries(object): if data.startswith(']*path="(\.+)">', re.I) - entryre = re.compile(r'', re.M or re.I) - urlre = re.compile(r'(.*?)', re.I) + entryre = re.compile(r'', re.DOTALL or re.I) + urlre = re.compile(r'(.*?)', re.I) revre = re.compile(r']*revision="(\d+)"', re.I) namere = re.compile(r'(.*?)', re.I) @@ -238,12 +247,12 @@ class SVNEntriesCMD(SVNEntries): stdout=_PIPE, shell=(sys.platform=='win32')) data = unicode(proc.communicate()[0], encoding='utf-8') self.entries = self.entryre.findall(data) - self.get_dir_data = self.__get_cached_dir_data + self.get_entries = self.__get_cached_entries return self.entries def get_url(self): "Get repository URL" - return self.urlre.search(self.get_entries()[0]).group(1) + return self.urlre.search(self.get_dir_data()[0]).group(1) def parse_revision_numbers(self): #NOTE: if one has recently committed, @@ -253,7 +262,7 @@ class SVNEntriesCMD(SVNEntries): else: return [ int(m.group(1)) - for entry in self.get_enries() + for entry in self.get_entries() for m in self.revre.finditer(entry) if m.group(1) ] @@ -270,16 +279,18 @@ class SVNEntriesCMD(SVNEntries): if m.group(1) ] - def __get_externals_data(self, filename): + def _get_externals_data(self, filename): #othewise will be called twice. - if filename.lower() != 'dir-props': + if os.path.basename(filename).lower() != 'dir-props': return '' #regard the shell argument, see: http://bugs.python.org/issue8557 - proc = _Popen(['svn', 'propget', self.path], + proc = _Popen(['svn', 'propget', 'svn:externals', self.path], stdout=_PIPE, shell=(sys.platform=='win32')) try: - return unicode(proc.communicate()[0], encoding='utf-8').splitlines() + lines = unicode(proc.communicate()[0], encoding='utf-8') + lines = [line for line in lines.splitlines() if line] + return lines except ValueError: return '' -- cgit v1.2.1