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

Unified Diff: chrome/test/chromedriver/test/run_py_tests.py

Issue 671433005: [chromedriver] Quit Chrome before cleaning up temporary directories (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Also disable the tests on Android, since it's a desktop-only thing Created 6 years, 2 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 | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698