Rev 4957: (nmb) Implement mv for shell-like scripts in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Jan 13 18:11:23 GMT 2010
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 4957 [merge]
revision-id: pqm at pqm.ubuntu.com-20100113181121-50zma6sk6r0bvq1n
parent: pqm at pqm.ubuntu.com-20100113161025-5qx4ky13h27x4kj3
parent: v.ladeuil+lp at free.fr-20100113172408-76aswzl24u77owue
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2010-01-13 18:11:21 +0000
message:
(nmb) Implement mv for shell-like scripts
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/script.py script.py-20090901081155-yk3tiy1nunxg16ne-1
bzrlib/tests/test_script.py test_script.py-20090901081156-y90z4w2t62fv7e7b-1
=== modified file 'NEWS'
--- a/NEWS 2010-01-13 00:25:44 +0000
+++ b/NEWS 2010-01-13 17:24:08 +0000
@@ -176,6 +176,10 @@
testtools less than 0.9.2 will cause bzr to error while loading the test
suite. (Robert Collins)
+* Shell-like tests now support the command "mv" for moving files. The
+ syntax for ``mv file1 file2``, ``mv dir1 dir2`` and ``mv file dir`` is
+ supported. (Neil Martinsen-Burrell)
+
* The test progress bar no longer distinguishes tests that 'errored' from
tests that 'failed' - they're all just failures.
(Martin Pool)
=== modified file 'bzrlib/tests/script.py'
--- a/bzrlib/tests/script.py 2009-12-11 05:29:35 +0000
+++ b/bzrlib/tests/script.py 2010-01-13 17:21:29 +0000
@@ -402,6 +402,31 @@
retcode = 0
return retcode, None, err
+ def do_mv(self, test_case, input, args):
+ err = None
+ def error(msg, src, dst):
+ return "mv: cannot move %s to %s: %s\n" % (src, dst, msg)
+
+ if not args or len(args) != 2:
+ raise SyntaxError("Usage: mv path1 path2")
+ src, dst = args
+ try:
+ real_dst = dst
+ if os.path.isdir(dst):
+ real_dst = os.path.join(dst, os.path.basename(src))
+ os.rename(src, real_dst)
+ except OSError, e:
+ if e.errno == errno.ENOENT:
+ err = error('No such file or directory', src, dst)
+ else:
+ raise
+ if err:
+ retcode = 1
+ else:
+ retcode = 0
+ return retcode, None, err
+
+
class TestCaseWithMemoryTransportAndScript(tests.TestCaseWithMemoryTransport):
"""Helper class to experiment shell-like test and memory fs.
=== modified file 'bzrlib/tests/test_script.py'
--- a/bzrlib/tests/test_script.py 2009-11-08 20:28:36 +0000
+++ b/bzrlib/tests/test_script.py 2010-01-13 17:21:29 +0000
@@ -407,3 +407,43 @@
$ rm -r dir
""")
self.failIfExists('dir')
+
+
+class TestMv(script.TestCaseWithTransportAndScript):
+
+ def test_usage(self):
+ self.assertRaises(SyntaxError, self.run_script, '$ mv')
+ self.assertRaises(SyntaxError, self.run_script, '$ mv f')
+ self.assertRaises(SyntaxError, self.run_script, '$ mv f1 f2 f3')
+
+ def test_move_file(self):
+ self.run_script('$ echo content >file')
+ self.failUnlessExists('file')
+ self.run_script('$ mv file new_name')
+ self.failIfExists('file')
+ self.failUnlessExists('new_name')
+
+ def test_move_unknown_file(self):
+ self.assertRaises(AssertionError,
+ self.run_script, '$ mv unknown does-not-exist')
+
+ def test_move_dir(self):
+ self.run_script("""
+$ mkdir dir
+$ echo content >dir/file
+""")
+ self.run_script('$ mv dir new_name')
+ self.failIfExists('dir')
+ self.failUnlessExists('new_name')
+ self.failUnlessExists('new_name/file')
+
+ def test_move_file_into_dir(self):
+ self.run_script("""
+$ mkdir dir
+$ echo content > file
+""")
+ self.run_script('$ mv file dir')
+ self.failUnlessExists('dir')
+ self.failIfExists('file')
+ self.failUnlessExists('dir/file')
+
More information about the bazaar-commits
mailing list