| Index: tests/gclient_test.py | 
| =================================================================== | 
| --- tests/gclient_test.py	(revision 15714) | 
| +++ tests/gclient_test.py	(working copy) | 
| @@ -1220,21 +1220,22 @@ | 
| options = self.Options(verbose=True) | 
| base_path = os.path.join(self.root_dir, self.relpath) | 
| options.force = True | 
| -    file_info = gclient.PrintableObject() | 
| -    file_info.root = 'blah' | 
| -    file_info.url = self.url | 
| -    file_info.uuid = 'ABC' | 
| -    file_info.revision = 42 | 
| +    file_info = { | 
| +      'Repository Root': 'blah', | 
| +      'URL': self.url, | 
| +      'UUID': 'ABC', | 
| +      'Revision': 42, | 
| +    } | 
| options.path_exists(os.path.join(base_path, '.git')).AndReturn(False) | 
| # Checkout or update. | 
| options.path_exists(base_path).AndReturn(True) | 
| gclient.CaptureSVNInfo(options, os.path.join(base_path, "."), '.' | 
| ).AndReturn(file_info) | 
| # Cheat a bit here. | 
| -    gclient.CaptureSVNInfo(options, file_info.url, '.').AndReturn(file_info) | 
| +    gclient.CaptureSVNInfo(options, file_info['URL'], '.').AndReturn(file_info) | 
| additional_args = [] | 
| if options.manually_grab_svn_rev: | 
| -      additional_args = ['--revision', str(file_info.revision)] | 
| +      additional_args = ['--revision', str(file_info['Revision'])] | 
| files_list = [] | 
| gclient.RunSVNAndGetFileList(options, ['update', base_path] + additional_args, | 
| self.root_dir, files_list) | 
| @@ -1259,6 +1260,41 @@ | 
| scm.update(options, self.args, file_list) | 
| self.mox.VerifyAll() | 
|  | 
| +  def testGetSVNFileInfo(self): | 
| +    xml_text = r"""<?xml version="1.0"?> | 
| +<info> | 
| +<entry kind="file" path="%s" revision="14628"> | 
| +<url>http://src.chromium.org/svn/trunk/src/chrome/app/d</url> | 
| +<repository><root>http://src.chromium.org/svn</root></repository> | 
| +<wc-info> | 
| +<schedule>add</schedule> | 
| +<depth>infinity</depth> | 
| +<copy-from-url>http://src.chromium.org/svn/trunk/src/chrome/app/DEPS</copy-from-url> | 
| +<copy-from-rev>14628</copy-from-rev> | 
| +<checksum>369f59057ba0e6d9017e28f8bdfb1f43</checksum> | 
| +</wc-info> | 
| +</entry> | 
| +</info> | 
| +""" % self.url | 
| +    options = self.Options(verbose=True) | 
| +    gclient.CaptureSVN(options, ['info', '--xml', self.url], | 
| +                       '.').AndReturn(xml_text) | 
| +    expected = { | 
| +      'URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/d', | 
| +      'UUID': None, | 
| +      'Repository Root': 'http://src.chromium.org/svn', | 
| +      'Schedule': 'add', | 
| +      'Copied From URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/DEPS', | 
| +      'Copied From Rev': '14628', | 
| +      'Path': self.url, | 
| +      'Revision': 14628, | 
| +      'Node Kind': 'file', | 
| +    } | 
| +    self.mox.ReplayAll() | 
| +    file_info = self._CaptureSVNInfo(options, self.url, '.') | 
| +    self.assertEquals(sorted(file_info.items()), sorted(expected.items())) | 
| +    self.mox.VerifyAll() | 
| + | 
| def testCaptureSvnInfo(self): | 
| xml_text = """<?xml version="1.0"?> | 
| <info> | 
| @@ -1288,10 +1324,18 @@ | 
| '.').AndReturn(xml_text) | 
| self.mox.ReplayAll() | 
| file_info = self._CaptureSVNInfo(options, self.url, '.') | 
| -    self.failUnless(file_info.root == self.root_dir) | 
| -    self.failUnless(file_info.url == self.url) | 
| -    self.failUnless(file_info.uuid == '7b9385f5-0452-0410-af26-ad4892b7a1fb') | 
| -    self.failUnless(file_info.revision == 35) | 
| +    expected = { | 
| +      'URL': self.url, | 
| +      'UUID': '7b9385f5-0452-0410-af26-ad4892b7a1fb', | 
| +      'Revision': 35, | 
| +      'Repository Root': self.root_dir, | 
| +      'Schedule': 'normal', | 
| +      'Copied From URL': None, | 
| +      'Copied From Rev': None, | 
| +      'Path': '.', | 
| +      'Node Kind': 'dir', | 
| +    } | 
| +    self.assertEqual(file_info, expected) | 
| self.mox.VerifyAll() | 
|  | 
|  | 
|  |