diff options
author | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-05 21:59:53 +0000 |
---|---|---|
committer | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-05 21:59:53 +0000 |
commit | a90a13d7cab9c7fd8bab4be02520e1e9a0ef7c83 (patch) | |
tree | 11774fc0d687fc2ddb6309cafb0560464bcfc263 /native_client_sdk | |
parent | b53332396f09e0fe183e686ca20cdfebf24c67fc (diff) | |
download | chromium_src-a90a13d7cab9c7fd8bab4be02520e1e9a0ef7c83.zip chromium_src-a90a13d7cab9c7fd8bab4be02520e1e9a0ef7c83.tar.gz chromium_src-a90a13d7cab9c7fd8bab4be02520e1e9a0ef7c83.tar.bz2 |
[NaCl SDK] Fix the sdk_updater auto-update feature when /tmp is a different filesystem.
os.rename fails when the source and destination are different filesystems.
shutil.move does a os.rename, but if it fails for this reason, copies and
removes instead.
BUG=none
TBR=noelallen@chromium.org
NOTRY=true
Review URL: https://chromiumcodereview.appspot.com/11029060
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@160493 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
-rw-r--r-- | native_client_sdk/src/build_tools/sdk_tools/sdk_update_common.py | 2 | ||||
-rwxr-xr-x | native_client_sdk/src/build_tools/tests/test_sdktools.py | 12 |
2 files changed, 11 insertions, 3 deletions
diff --git a/native_client_sdk/src/build_tools/sdk_tools/sdk_update_common.py b/native_client_sdk/src/build_tools/sdk_tools/sdk_update_common.py index 99d4c62..ad4175e 100644 --- a/native_client_sdk/src/build_tools/sdk_tools/sdk_update_common.py +++ b/native_client_sdk/src/build_tools/sdk_tools/sdk_update_common.py @@ -53,7 +53,7 @@ def RenameDir(srcdir, destdir): for num_tries in xrange(max_tries): try: RemoveDir(destdir) - os.rename(srcdir, destdir) + shutil.move(srcdir, destdir) return except OSError as err: if err.errno != errno.EACCES: diff --git a/native_client_sdk/src/build_tools/tests/test_sdktools.py b/native_client_sdk/src/build_tools/tests/test_sdktools.py index 8d4afc8..c453f24 100755 --- a/native_client_sdk/src/build_tools/tests/test_sdktools.py +++ b/native_client_sdk/src/build_tools/tests/test_sdktools.py @@ -38,8 +38,8 @@ class SdkToolsTestCase(unittest.TestCase): def SetupDefault(self): self.SetupWithBaseDirPrefix('sdktools') - def SetupWithBaseDirPrefix(self, basedir_prefix): - self.basedir = tempfile.mkdtemp(prefix=basedir_prefix) + def SetupWithBaseDirPrefix(self, basedir_prefix, tmpdir=None): + self.basedir = tempfile.mkdtemp(prefix=basedir_prefix, dir=tmpdir) # We have to make sure that we build our updaters with a version that is at # least as large as the version in the sdk_tools bundle. If not, update # tests may fail because the "current" version (according to the sdk_cache) @@ -202,6 +202,14 @@ class TestAutoUpdateSdkTools(SdkToolsTestCase): self.assertFalse(os.path.exists(sdk_tools_update_dir)) +class TestAutoUpdateSdkToolsDifferentFilesystem(TestAutoUpdateSdkTools): + def setUp(self): + # On Linux (on my machine at least), /tmp is a different filesystem than + # the current directory. os.rename fails when the source and destination + # are on different filesystems. Test that case here. + self.SetupWithBaseDirPrefix('sdktools', tmpdir='.') + + def main(): suite = unittest.defaultTestLoader.loadTestsFromModule(sys.modules[__name__]) result = unittest.TextTestRunner(verbosity=2).run(suite) |