ssb: Begin to add some CLI tests.
All checks were successful
Build Tilde Friends / Build-All (push) Successful in 33m19s
All checks were successful
Build Tilde Friends / Build-All (push) Successful in 33m19s
This commit is contained in:
parent
3bf19fabda
commit
b3cedf2baa
@ -531,7 +531,7 @@ static int _tf_command_private(const char* file, int argc, char* argv[])
|
|||||||
{ "id", required_argument, NULL, 'i' },
|
{ "id", required_argument, NULL, 'i' },
|
||||||
{ "recipients", required_argument, NULL, 'r' },
|
{ "recipients", required_argument, NULL, 'r' },
|
||||||
{ "db-path", required_argument, NULL, 'd' },
|
{ "db-path", required_argument, NULL, 'd' },
|
||||||
{ "text", required_argument, NULL, 'c' },
|
{ "text", required_argument, NULL, 't' },
|
||||||
{ "help", no_argument, NULL, 'h' },
|
{ "help", no_argument, NULL, 'h' },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
@ -1478,4 +1478,97 @@ void tf_ssb_test_triggers(const tf_test_options_t* options)
|
|||||||
uv_loop_close(&loop);
|
uv_loop_close(&loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _subprocess_check_call(const char* command)
|
||||||
|
{
|
||||||
|
int result = system(command);
|
||||||
|
if (!WIFEXITED(result))
|
||||||
|
{
|
||||||
|
tf_printf("Command did not report exit: %s.\n", command);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
if (WEXITSTATUS(result) != 0)
|
||||||
|
{
|
||||||
|
tf_printf("Command returned %d: %s.\n", WEXITSTATUS(result), command);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static char* _subprocess_check_output(const char* command)
|
||||||
|
{
|
||||||
|
FILE* proc = popen(command, "r");
|
||||||
|
if (!proc)
|
||||||
|
{
|
||||||
|
tf_printf("Command failed (%s): %s.\n", strerror(errno), command);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
char* result = NULL;
|
||||||
|
size_t size = 0;
|
||||||
|
if (proc)
|
||||||
|
{
|
||||||
|
const int k_block_size = 1024;
|
||||||
|
result = tf_realloc(result, size + k_block_size);
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
size_t bytes = fread(result + size, 1, k_block_size, proc);
|
||||||
|
if (bytes > 0)
|
||||||
|
{
|
||||||
|
size += bytes;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pclose(proc);
|
||||||
|
}
|
||||||
|
result = tf_realloc(result, size + 1);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
result[size] = '\0';
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool _isspace(char c)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
c == ' ' ||
|
||||||
|
c == '\t' ||
|
||||||
|
c == '\r' ||
|
||||||
|
c == '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
static char* _trim(char* p)
|
||||||
|
{
|
||||||
|
if (!p)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t length = strlen(p);
|
||||||
|
while (length > 0 && _isspace(p[length - 1]))
|
||||||
|
{
|
||||||
|
p[length - 1] = '\0';
|
||||||
|
length--;
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tf_ssb_test_cli(const tf_test_options_t* options)
|
||||||
|
{
|
||||||
|
tf_printf("Testing CLI.\n");
|
||||||
|
unlink("out/test_db0.sqlite");
|
||||||
|
|
||||||
|
char command[1024];
|
||||||
|
snprintf(command, sizeof(command), "%s get_identity -d out/test_db0.sqlite", options->exe_path);
|
||||||
|
_subprocess_check_call(command);
|
||||||
|
char* id = _trim(_subprocess_check_output(command));
|
||||||
|
tf_printf("id = [%s]\n", id);
|
||||||
|
|
||||||
|
snprintf(command, sizeof(command), "%s private -i %s -r %s -d out/test_db0.sqlite -t '{\"type\": \"post\", \"text\": \"hello world\"}'", options->exe_path, id, id);
|
||||||
|
_subprocess_check_call(command);
|
||||||
|
|
||||||
|
tf_free(id);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -89,4 +89,10 @@ void tf_ssb_test_invite(const tf_test_options_t* options);
|
|||||||
*/
|
*/
|
||||||
void tf_ssb_test_triggers(const tf_test_options_t* options);
|
void tf_ssb_test_triggers(const tf_test_options_t* options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
** Test command-line interface.
|
||||||
|
** @param options The test options.
|
||||||
|
*/
|
||||||
|
void tf_ssb_test_cli(const tf_test_options_t* options);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -1079,6 +1079,7 @@ void tf_tests(const tf_test_options_t* options)
|
|||||||
_tf_test_run(options, "connect_str", tf_ssb_test_connect_str, false);
|
_tf_test_run(options, "connect_str", tf_ssb_test_connect_str, false);
|
||||||
_tf_test_run(options, "invite", tf_ssb_test_invite, false);
|
_tf_test_run(options, "invite", tf_ssb_test_invite, false);
|
||||||
_tf_test_run(options, "triggers", tf_ssb_test_triggers, false);
|
_tf_test_run(options, "triggers", tf_ssb_test_triggers, false);
|
||||||
|
_tf_test_run(options, "cli", tf_ssb_test_cli, false);
|
||||||
tf_printf("Tests completed.\n");
|
tf_printf("Tests completed.\n");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user