Commit ce0f92dc authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

selftests: net: py: teach cmd() how to print itself



Teach cmd() how to print itself, to make debug prints easier.
Example output (leading # due to ksft_pr()):

  # CMD: /root/ksft-net-drv/drivers/net/gro
  #   EXIT: 1
  #   STDOUT: ipv6 with ext header does coalesce:
  #   STDERR: Expected {200 }, Total 1 packets
  #           Received {100 [!=200]100 [!=0]}, Total 2 packets.

Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/20260113000740.255360-3-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent b324192e
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -41,7 +41,9 @@ class cmd:
        self.ret = None
        self.ksft_term_fd = None

        self.host = host
        self.comm = comm

        if host:
            self.proc = host.cmd(comm)
        else:
@@ -99,6 +101,27 @@ class cmd:
            raise CmdExitFailure("Command failed: %s\nSTDOUT: %s\nSTDERR: %s" %
                                 (self.proc.args, stdout, stderr), self)

    def __repr__(self):
        def str_fmt(name, s):
            name += ': '
            return (name + s.strip().replace('\n', '\n' + ' ' * len(name)))

        ret = "CMD"
        if self.host:
            ret += "[remote]"
        if self.ret is None:
            ret += f" (unterminated): {self.comm}\n"
        elif self.ret == 0:
            ret += f" (success): {self.comm}\n"
        else:
            ret += f": {self.comm}\n"
            ret += f"  EXIT: {self.ret}\n"
        if self.stdout:
            ret += str_fmt("  STDOUT", self.stdout) + "\n"
        if self.stderr:
            ret += str_fmt("  STDERR", self.stderr) + "\n"
        return ret.strip()


class bkg(cmd):
    """