Index: chrome/test/chromedriver/test/run_py_tests.py |
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py |
index b5629b9b228450e45edafe2a41ae1f541f9eb839..b43098e1d9796d3a8e511992d0245bcb650f93cf 100755 |
--- a/chrome/test/chromedriver/test/run_py_tests.py |
+++ b/chrome/test/chromedriver/test/run_py_tests.py |
@@ -105,6 +105,7 @@ _ANDROID_NEGATIVE_FILTER['chrome'] = ( |
'ChromeSwitchesCapabilityTest.*', |
'ChromeExtensionsCapabilityTest.*', |
'MobileEmulationCapabilityTest.*', |
+ 'ChromeDownloadDirTest.*', |
# https://crbug.com/274650 |
'ChromeDriverTest.testCloseWindow', |
# https://code.google.com/p/chromedriver/issues/detail?id=270 |
@@ -771,59 +772,64 @@ class ChromeDriverAndroidTest(ChromeDriverBaseTest): |
class ChromeDownloadDirTest(ChromeDriverBaseTest): |
- def testFileDownLoad(self): |
- try: |
- self.download_dir = tempfile.mkdtemp() |
- download_name = os.path.join(self.download_dir, 'a_red_dot.png') |
- driver = self.CreateDriver(download_dir=self.download_dir) |
- driver.Load(ChromeDriverTest.GetHttpUrlForFile( |
- '/chromedriver/download.html')) |
- driver.FindElement('id', 'red-dot').Click() |
- |
- deadline = time.time() + 60 |
- while True: |
- time.sleep(0.1) |
- if os.path.isfile(download_name) or time.time() > deadline: |
- break |
- self.assertTrue(os.path.isfile(download_name), "Failed to download file!") |
- finally: |
- shutil.rmtree(self.download_dir) |
+ def __init__(self, *args, **kwargs): |
+ super(ChromeDownloadDirTest, self).__init__(*args, **kwargs) |
+ self._temp_dirs = [] |
- def testDownloadDirectoryOverridesExistingPreferences(self): |
- """ test existing prefence profile - check setting if it is correct """ |
+ def CreateTempDir(self): |
+ temp_dir = tempfile.mkdtemp() |
+ self._temp_dirs.append(temp_dir) |
+ return temp_dir |
- try: |
- user_data_dir = tempfile.mkdtemp() |
- tmp_download_dir = tempfile.mkdtemp() |
- sub_dir = os.path.join(user_data_dir, 'Default') |
- os.mkdir(sub_dir) |
- prefs_file_path = os.path.join(sub_dir, 'Preferences') |
- |
- prefs = { |
- 'test': 'this should not be changed', |
- 'download': { |
- 'default_directory': '/old/download/directory' |
- } |
+ def tearDown(self): |
+ # Call the superclass tearDown() method before deleting temp dirs, so that |
+ # Chrome has a chance to exit before its user data dir is blown away from |
+ # underneath it. |
+ super(ChromeDownloadDirTest, self).tearDown() |
+ for temp_dir in self._temp_dirs: |
+ shutil.rmtree(temp_dir) |
+ |
+ def testFileDownload(self): |
+ download_dir = self.CreateTempDir() |
+ download_name = os.path.join(download_dir, 'a_red_dot.png') |
+ driver = self.CreateDriver(download_dir=download_dir) |
+ driver.Load(ChromeDriverTest.GetHttpUrlForFile( |
+ '/chromedriver/download.html')) |
+ driver.FindElement('id', 'red-dot').Click() |
+ deadline = time.time() + 60 |
+ while True: |
+ time.sleep(0.1) |
+ if os.path.isfile(download_name) or time.time() > deadline: |
+ break |
+ self.assertTrue(os.path.isfile(download_name), "Failed to download file!") |
+ |
+ def testDownloadDirectoryOverridesExistingPreferences(self): |
+ user_data_dir = self.CreateTempDir() |
+ download_dir = self.CreateTempDir() |
+ sub_dir = os.path.join(user_data_dir, 'Default') |
+ os.mkdir(sub_dir) |
+ prefs_file_path = os.path.join(sub_dir, 'Preferences') |
+ |
+ prefs = { |
+ 'test': 'this should not be changed', |
+ 'download': { |
+ 'default_directory': '/old/download/directory' |
} |
+ } |
- with open(prefs_file_path, 'w') as f: |
- json.dump(prefs, f) |
+ with open(prefs_file_path, 'w') as f: |
+ json.dump(prefs, f) |
- driver = self.CreateDriver( |
- chrome_switches=['user-data-dir=' + user_data_dir], |
- download_dir = tmp_download_dir) |
+ driver = self.CreateDriver( |
+ chrome_switches=['user-data-dir=' + user_data_dir], |
+ download_dir=download_dir) |
- with open(prefs_file_path) as f: |
- prefs = json.load(f) |
+ with open(prefs_file_path) as f: |
+ prefs = json.load(f) |
- self.assertEqual('this should not be changed', prefs['test'], |
- "Existing preference was unexpectedly overridden") |
- download = prefs['download'] |
- self.assertEqual(download['default_directory'], tmp_download_dir, |
- 'Download directory preference was not updated to match capabilities') |
- finally: |
- shutil.rmtree(user_data_dir) |
- shutil.rmtree(tmp_download_dir) |
+ self.assertEqual('this should not be changed', prefs['test']) |
+ download = prefs['download'] |
+ self.assertEqual(download['default_directory'], download_dir) |
class ChromeSwitchesCapabilityTest(ChromeDriverBaseTest): |
"""Tests that chromedriver properly processes chromeOptions.args capabilities. |