#2027 closed defect

Inconsistent 'tahoe cp' Behavior — at Version 3

Reported by: markberger Owned by: daira
Priority: normal Milestone: 1.10.1
Component: code-frontend-cli Version: 1.10.0
Keywords: usability error cli tahoe-cp review-needed Cc:
Launchpad Bug:

Description (last modified by daira)

When copying a file from the top level of a directory node using the CLI, tahoe requires a file name to be specified.

Ex: tahoe cp tahoe:test.jpg ~ fails with the following assertion traceback, while tahoe cp tahoe:test.jpg ~/test.jpg succeeds.

Marks-MacBook-Pro-5:tahoe-fork markberger$ bin/tahoe cp tahoe:Seattle.jpg ~
Traceback (most recent call last):
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/runner.py", line 156, in run
    rc = runner(sys.argv[1:], install_node_control=install_node_control)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/runner.py", line 141, in runner
    rc = cli.dispatch[command](so)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/cli.py", line 551, in cp
    rc = tahoe_cp.copy(options)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/tahoe_cp.py", line 770, in copy
    return Copier().do_copy(options)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/tahoe_cp.py", line 451, in do_copy
    status = self.try_copy()
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/tahoe_cp.py", line 512, in try_copy
    return self.copy_to_directory(sources, target)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/tahoe_cp.py", line 672, in copy_to_directory
    self.copy_files_to_target(self.targetmap[target], target)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/tahoe_cp.py", line 703, in copy_files_to_target
    self.copy_file_into(source, name, target)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/tahoe_cp.py", line 748, in copy_file_into
    target.put_file(name, f)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/scripts/tahoe_cp.py", line 156, in put_file
    precondition(isinstance(name, unicode), name)
  File "/Users/markberger/Code/tahoe-fork/src/allmydata/util/assertutil.py", line 39, in precondition
    raise AssertionError, "".join(msgbuf)
AssertionError: precondition: 'Seattle.jpg' <type 'str'>

However, when a file is copied from a subdirectory to the local disk without a specified file name, the download will succeed.

Ex: tahoe cp tahoe:test/test.jpg ~ succeeds along with tahoe cp tahoe:test/test.jpg ~/test.jpg.

The CLI's behavior should be consistent. Either require users to specify a file name for all cp actions or allow users to copy files from the top level of a directory to a local directory without specifying a file name.

Change History (3)

comment:1 Changed at 2013-07-17T16:15:15Z by daira

  • Description modified (diff)
  • Keywords usability error cli tahoe-cp easy added
  • Owner set to daira
  • Status changed from new to assigned

comment:2 Changed at 2013-07-17T16:16:54Z by daira

  • Description modified (diff)

All four cases in the description should succeed.

comment:3 Changed at 2013-07-17T16:20:20Z by daira

  • Description modified (diff)
Note: See TracTickets for help on using tickets.