Without that fix with --call= it picks an empty string as the number: $ ipc-modem --debug --dry-run start --call= CC ipc-modem.o CCLD ipc-modem [I] Got call number! [I] Debug enabled [I] dry-run mode [1] Starting dummy modem_read_loop on FMT client [I] modem_dummy_read_loop: looping [...]
and with --call start, it things that "start" is the number and fails because the "start" command is not found: $ ipc-modem --debug --dry-run --call start make: Nothing to be done for 'all'. [I] Got call number! Error: No command given. You need to use a command. See the help below for more details. usage: ipc-modem <command> commands: boot boot modem only power-on power on the modem only power-off power off the modem only start boot modem and start read loop arguments: --call=[NUMBER] call NUMBER --debug enable debug messages --dry-run Test the ipc-modem program without talking to the modem. --help print this help message --pin=[PIN] provide SIM card PIN With this fix it handles both situation by printing the right error: $ipc-modem --debug --dry-run start --call= make: Nothing to be done for 'all'. [E] Missing call number $ make ; ./ipc-modem --debug --dry-run --call start make: Nothing to be done for 'all'. [E] Missing call number Signed-off-by: Denis 'GNUtoo' Carikli <gnu...@cyberdimension.org> --- tools/ipc-modem.c | 7 ++++++- tools/ipc-modem.py | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tools/ipc-modem.c b/tools/ipc-modem.c index 9990d4f..08f9c3a 100644 --- a/tools/ipc-modem.c +++ b/tools/ipc-modem.c @@ -686,7 +686,12 @@ int parse_cmdline_opts(struct ipc_modem_data *data, int argc, char *argv[]) if (strcmp(opt_l[opt_i].name, "call") == 0) { if (optarg) { - if (strlen(optarg) < 14) { + if (strlen(optarg) == 0) { + ipc_modem_log(data->client, + MODEM_LOG_ERROR, + "Missing call number\n"); + return EX_USAGE; + } else if (strlen(optarg) < 14) { assert(strlen(optarg) < sizeof(data->call_number)); ipc_modem_log(data->client, diff --git a/tools/ipc-modem.py b/tools/ipc-modem.py index 12ee774..0fe76d7 100755 --- a/tools/ipc-modem.py +++ b/tools/ipc-modem.py @@ -75,7 +75,7 @@ class IpcModem(object): else: raise Exception() - def test_call(self, timeout=3): + def test_call_with_number(self, timeout=3): expected_output = "[I] Got call number!" output = "" try: @@ -88,12 +88,22 @@ class IpcModem(object): if output != expected_output: raise Exception() + def test_call_without_number(self, timeout=3): + expected_output = "[E] Missing call number" + output = get_output(self.ipc_modem('power-on', + '--call=', + _timeout=timeout, + _ok_code=SysExit.EX_USAGE.exit_code)) + if output != expected_output: + raise Exception() + def test_commands(self): self.test_boot() self.test_power_on() self.test_power_off() self.test_start() - self.test_call() + self.test_call_with_number() + self.test_call_without_number() def main(): ipc_modem = IpcModem() -- 2.35.1 _______________________________________________ Replicant mailing list Replicant@osuosl.org https://lists.osuosl.org/mailman/listinfo/replicant