This means we don't have to manually choose what to link against, which is much of the complexity of our Makefiles: the compiler will automatically use any object files it needs to link. We already do this for ccan as libccan.a, now we have libcommon.a. We don't link against it for *everything*, as some tests require their own versions. Notes: 1. I get rid of the weird plugins/test/Makefile2 (accidental commit?) 2. Many tests change due to update-mocks. 3. In some places I added the missing dependency on the Makefile itself, though most are in the next patch. Before: Total program size: 221366528 Total tests size: 364243856 After: Total program size: 190733656 Total tests size: 337880888 Build time from make clean (RUST=0) (includes building external libs): Before: real 0m38.227000-44.245000(41.8222+/-1.6)s user 3m2.105000-33.696000(23.1442+/-8.4)s sys 0m35.054000-42.269000(39.7231+/-2)s After: real 0m38.944000-40.416000(40.1131+/-0.4)s user 3m6.790000-17.159000(15.0571+/-2.8)s sys 0m35.304000-37.336000(36.8942+/-0.57)s Build time after touch config.vars (RUST=0): Before: real 0m18.928000-22.776000(21.5084+/-1.1)s user 2m8.613000-36.567000(27.7281+/-7.7)s sys 0m20.458000-23.436000(22.3963+/-0.77)s After: real 0m19.831000-21.862000(21.5528+/-0.58)s user 2m15.361000-30.731000(28.4798+/-4.4)s sys 0m21.056000-22.339000(22.0346+/-0.35)s Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> rusty@rusty-Framework:~/devel/cvs/lightni
119 lines
3.7 KiB
C
119 lines
3.7 KiB
C
#include "config.h"
|
|
#include "config_test.h"
|
|
#include <common/amount.h>
|
|
#include <common/bigsize.h>
|
|
#include <common/channel_id.h>
|
|
#include <common/configvar.h>
|
|
#include <common/daemon.h>
|
|
#include <common/json_stream.h>
|
|
#include <common/node_id.h>
|
|
#include <common/setup.h>
|
|
#include <common/wireaddr.h>
|
|
#include <fcntl.h>
|
|
#include <stdio.h>
|
|
#include <sys/socket.h>
|
|
|
|
int test_main(int argc, char *argv[]);
|
|
ssize_t test_read(int fd, void *buf, size_t len);
|
|
int test_socket(int domain, int type, int protocol);
|
|
int test_connect(int sockfd, const struct sockaddr *addr,
|
|
socklen_t addrlen);
|
|
int test_getpid(void);
|
|
int test_printf(const char *format, ...);
|
|
int test_fputc(int c, FILE *stream);
|
|
int test_chdir(const char *path);
|
|
|
|
#define main test_main
|
|
#define cli_read test_read
|
|
#define socket test_socket
|
|
#define connect test_connect
|
|
#define getpid test_getpid
|
|
#define printf test_printf
|
|
#define fputc test_fputc
|
|
#define chdir test_chdir
|
|
|
|
#include "../lightning-cli.c"
|
|
#undef main
|
|
|
|
/* AUTOGENERATED MOCKS START */
|
|
/* AUTOGENERATED MOCKS END */
|
|
|
|
int test_socket(int domain UNUSED, int type UNUSED, int protocol UNUSED)
|
|
{
|
|
/* We give a real fd, as it writes to it */
|
|
return open("/dev/null", O_WRONLY);
|
|
}
|
|
|
|
int test_connect(int sockfd UNUSED, const struct sockaddr *addr UNUSED,
|
|
socklen_t addrlen UNUSED)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int test_getpid(void)
|
|
{
|
|
return 9999;
|
|
}
|
|
|
|
static char *response = "{\"id\": \"cli:test#9999\", \"jsonrpc\": \"2.0\", \"result\": {\"channels\": [\"\n\", \"├477308sat OUT/OURS ┼ IN/THEIRS 477308sat┤ SCID FLAG ALIAS\", \"├──────────────────────┼──────────────────────┤ 580612x1826x0 [__] BLUEIRON-v0.7.2rc1\"], \"my_address\": \"02b78caed0f45120acc48efe867aa506e8ea60f0712a23303178471da0ca2213f5@hdco6sxkbisc7s5t.onion\", \"format-hint\": \"simple\", \"avail_in\": \"0.00477308500btc (USD $54.37)\", \"num_utxos\": 0, \"num_gossipers\": 1, \"channels_flags\": \"P:private O:offline\", \"avail_out\": \"0.00477308500btc (USD $54.37)\", \"utxo_amount\": \"0.00000000btc (USD $0.00)\", \"num_channels\": 1, \"num_connected\": 1}}\n\n";
|
|
static size_t response_off;
|
|
|
|
ssize_t test_read(int fd UNUSED, void *buf, size_t len)
|
|
{
|
|
if (len > strlen(response + response_off))
|
|
len = strlen(response + response_off);
|
|
memcpy(buf, response + response_off, len);
|
|
return len;
|
|
}
|
|
|
|
static char *output;
|
|
|
|
int test_printf(const char *fmt, ...)
|
|
{
|
|
va_list ap;
|
|
|
|
va_start(ap, fmt);
|
|
tal_append_vfmt(&output, fmt, ap);
|
|
va_end(ap);
|
|
return 1;
|
|
}
|
|
|
|
int test_fputc(int c, FILE *stream)
|
|
{
|
|
tal_append_fmt(&output, "%c", c);
|
|
return (unsigned)c;
|
|
}
|
|
|
|
int test_chdir(const char *path)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc UNUSED, char *argv[])
|
|
{
|
|
common_setup(argv[0]);
|
|
|
|
char *fake_argv[] = { argv[0], "--lightning-dir=/tmp/", "test", "-N", "none", NULL };
|
|
|
|
output = tal_strdup(NULL, "");
|
|
assert(test_main(5, fake_argv) == 0);
|
|
|
|
assert(streq(output, "channels=\n"
|
|
"\n"
|
|
"├477308sat OUT/OURS ┼ IN/THEIRS 477308sat┤ SCID FLAG ALIAS\n"
|
|
"├──────────────────────┼──────────────────────┤ 580612x1826x0 [__] BLUEIRON-v0.7.2rc1\n"
|
|
"my_address=02b78caed0f45120acc48efe867aa506e8ea60f0712a23303178471da0ca2213f5@hdco6sxkbisc7s5t.onion\n"
|
|
"avail_in=0.00477308500btc (USD $54.37)\n"
|
|
"num_utxos=0\n"
|
|
"num_gossipers=1\n"
|
|
"channels_flags=P:private O:offline\n"
|
|
"avail_out=0.00477308500btc (USD $54.37)\n"
|
|
"utxo_amount=0.00000000btc (USD $0.00)\n"
|
|
"num_channels=1\n"
|
|
"num_connected=1\n"));
|
|
tal_free(output);
|
|
assert(!taken_any());
|
|
common_shutdown();
|
|
return 0;
|
|
}
|