pygobject r908 - in trunk: . gio tests



Author: johan
Date: Fri Aug  1 22:13:07 2008
New Revision: 908
URL: http://svn.gnome.org/viewvc/pygobject?rev=908&view=rev

Log:
2008-08-02  Johan Dahlin  <johan gnome org>

    * gio/gio.defs:
    * gio/gfile.override:
    * tests/test_gio.py:
    Wrap gio.File.move



Modified:
   trunk/ChangeLog
   trunk/gio/gio.defs
   trunk/tests/test_gio.py

Modified: trunk/gio/gio.defs
==============================================================================
--- trunk/gio/gio.defs	(original)
+++ trunk/gio/gio.defs	Fri Aug  1 22:13:07 2008
@@ -1723,6 +1723,45 @@
 )
 
 (define-method move
+  (docstring
+"Tries to move the file or directory source to the location\n"
+"specified by destination. If native move operations are\n"
+"supported then this is used, otherwise a copy + delete fallback\n"
+"is used. The native implementation may support moving directories\n"
+"(for instance on moves inside the same filesystem), but the \n"
+"fallback code does not.\n"
+"\n"
+"If the flag gio.FILE_COPY_OVERWRITE is specified an already existing\n"
+"destination file is overwritten.\n"
+"\n"
+"If the flag gio.FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlink\n"
+"will be copied as symlinks, otherwise the target of the source symlink\n"
+"will be copied.\n"
+"\n"
+"If cancellable is not None, then the operation can be cancelled b\n"
+"triggering the cancellable object from another thread.\n"
+"If the operation was cancelled, the error gio.ERROR_CANCELLED\n"
+"will be returned.\n"
+"\n"
+"If progress_callback is not None, then the operation can be monitored\n"
+"by setting this to a callable. if specified progress_callback_data will\n"
+"be passed to this function. It is guaranteed that this callback\n"
+"will be called after all data has been transferred with the total number\n"
+"of bytes copied during the operation.\n"
+"\n"
+"If the source file does not exist then the gio.ERROR_NOT_FOUND\n"
+"error is returned, independent on the status of the destination.\n"
+"\n"
+"If gio.FILE_COPY_OVERWRITE is not specified and the target exists\n"
+"then the error gio.ERROR_EXISTS is returned.\n"
+"\n"
+"If trying to overwrite a file over a directory the gio.ERROR_IS_DIRECTORY\n"
+"error is returned. If trying to overwrite a directory with a directory\n"
+"the gio.ERROR_WOULD_MERGE error is returned.\n"
+"\n"
+"If the source is a directory and the target does not exist\n"
+"or gio.FILE_COPY_OVERWRITE is specified and the target is a file\n"
+"then the gio.ERROR_WOULD_RECURSE error is returned.")
   (of-object "GFile")
   (c-name "g_file_move")
   (return-type "gboolean")

Modified: trunk/tests/test_gio.py
==============================================================================
--- trunk/tests/test_gio.py	(original)
+++ trunk/tests/test_gio.py	Fri Aug  1 22:13:07 2008
@@ -13,7 +13,8 @@
 
     def tearDown(self):
         self._f.close()
-        os.unlink("file.txt")
+        if os.path.exists('file.txt'):
+            os.unlink("file.txt")
 
     def testReadAsync(self):
         self._f.write("testing")
@@ -159,6 +160,33 @@
         finally:
             os.unlink("copy.txt")
 
+    def testMove(self):
+        if os.path.exists('move.txt'):
+            os.unlink("move.txt")
+
+        source = gio.File('file.txt')
+        destination = gio.File('move.txt')
+        retval = source.move(destination)
+        self.failUnless(retval)
+
+        self.failIf(os.path.exists('file.txt'))
+        self.failUnless(os.path.exists('move.txt'))
+
+        self.called = False
+        def callback(current, total):
+            self.called = True
+        source = gio.File('move.txt')
+        destination = gio.File('move-2.txt')
+        try:
+            retval = source.move(destination, callback)
+            self.failUnless(retval)
+
+            self.failIf(os.path.exists('move.txt'))
+            self.failUnless(os.path.exists('move-2.txt'))
+            self.failUnless(self.called)
+        finally:
+            os.unlink("move-2.txt")
+
     def testInfoList(self):
         infolist = self.file.query_settable_attributes()
         for info in infolist:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]