summaryrefslogtreecommitdiffstats
path: root/native_client_sdk
diff options
context:
space:
mode:
authorbinji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-05 21:59:53 +0000
committerbinji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-05 21:59:53 +0000
commita90a13d7cab9c7fd8bab4be02520e1e9a0ef7c83 (patch)
tree11774fc0d687fc2ddb6309cafb0560464bcfc263 /native_client_sdk
parentb53332396f09e0fe183e686ca20cdfebf24c67fc (diff)
downloadchromium_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.py2
-rwxr-xr-xnative_client_sdk/src/build_tools/tests/test_sdktools.py12
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)