source: trunk/src/allmydata/test/cli/common.py

Last change on this file was 1cfe843d, checked in by Alexandre Detiste <alexandre.detiste@…>, at 2024-02-22T23:40:25Z

more python2 removal

  • Property mode set to 100644
File size: 2.3 KB
Line 
1"""
2Ported to Python 3.
3"""
4
5from six import ensure_str, ensure_text
6
7from ...scripts import runner
8from ..common_util import ReallyEqualMixin, run_cli, run_cli_unicode
9
10def parse_options(basedir, command, args):
11    args = [ensure_text(s) for s in args]
12    o = runner.Options()
13    o.parseOptions(["--node-directory", basedir, command] + args)
14    while hasattr(o, "subOptions"):
15        o = o.subOptions
16    return o
17
18class CLITestMixin(ReallyEqualMixin):
19    """
20    A mixin for use with ``GridTestMixin`` to execute CLI commands against
21    nodes created by methods of that mixin.
22    """
23    def do_cli_unicode(self, verb, argv, client_num=0, **kwargs):
24        """
25        Run a Tahoe-LAFS CLI command.
26
27        :param verb: See ``run_cli_unicode``.
28
29        :param argv: See ``run_cli_unicode``.
30
31        :param int client_num: The number of the ``GridTestMixin``-created
32            node against which to execute the command.
33
34        :param kwargs: Additional keyword arguments to pass to
35            ``run_cli_unicode``.
36        """
37        # client_num is used to execute client CLI commands on a specific
38        # client.
39        client_dir = self.get_clientdir(i=client_num)
40        nodeargs = [ u"--node-directory", client_dir ]
41        return run_cli_unicode(verb, argv, nodeargs=nodeargs, **kwargs)
42
43
44    def do_cli(self, verb, *args, **kwargs):
45        """
46        Like ``do_cli_unicode`` but work with ``bytes`` everywhere instead of
47        ``unicode``.
48
49        Where possible, prefer ``do_cli_unicode``.
50        """
51        # client_num is used to execute client CLI commands on a specific
52        # client.
53        client_num = kwargs.pop("client_num", 0)
54        # If we were really going to launch a child process then
55        # `unicode_to_argv` would be the right thing to do here.  However,
56        # we're just going to call some Python functions directly and those
57        # Python functions want native strings.  So ignore the requirements
58        # for passing arguments to another process and make sure this argument
59        # is a native string.
60        verb = ensure_str(verb)
61        args = [ensure_str(arg) for arg in args]
62        client_dir = ensure_str(self.get_clientdir(i=client_num))
63        nodeargs = [ "--node-directory", client_dir ]
64        return run_cli(verb, *args, nodeargs=nodeargs, **kwargs)
Note: See TracBrowser for help on using the repository browser.