mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-01 03:24:41 +01:00
8b1aa3ef8b
lightning-cli is going to need to know what network we're on, so it will need to parse the config files. Move the code which does the initial bootstrap parsing into common, as well as the config file parsing core. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
136 lines
4.9 KiB
C
136 lines
4.9 KiB
C
#include "config.h"
|
|
#include <assert.h>
|
|
#include <common/amount.h>
|
|
#include <common/bigsize.h>
|
|
#include <fcntl.h>
|
|
#include <stdio.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.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);
|
|
|
|
#define main test_main
|
|
#define read test_read
|
|
#define socket test_socket
|
|
#define connect test_connect
|
|
#define getpid test_getpid
|
|
#define printf test_printf
|
|
#define fputc test_fputc
|
|
|
|
#include "../lightning-cli.c"
|
|
#undef main
|
|
|
|
/* AUTOGENERATED MOCKS START */
|
|
/* Generated stub for amount_asset_is_main */
|
|
bool amount_asset_is_main(struct amount_asset *asset UNNEEDED)
|
|
{ fprintf(stderr, "amount_asset_is_main called!\n"); abort(); }
|
|
/* Generated stub for amount_asset_to_sat */
|
|
struct amount_sat amount_asset_to_sat(struct amount_asset *asset UNNEEDED)
|
|
{ fprintf(stderr, "amount_asset_to_sat called!\n"); abort(); }
|
|
/* Generated stub for amount_sat_add */
|
|
bool amount_sat_add(struct amount_sat *val UNNEEDED,
|
|
struct amount_sat a UNNEEDED,
|
|
struct amount_sat b UNNEEDED)
|
|
{ fprintf(stderr, "amount_sat_add called!\n"); abort(); }
|
|
/* Generated stub for amount_sat_eq */
|
|
bool amount_sat_eq(struct amount_sat a UNNEEDED, struct amount_sat b UNNEEDED)
|
|
{ fprintf(stderr, "amount_sat_eq called!\n"); abort(); }
|
|
/* Generated stub for amount_sat_sub */
|
|
bool amount_sat_sub(struct amount_sat *val UNNEEDED,
|
|
struct amount_sat a UNNEEDED,
|
|
struct amount_sat b UNNEEDED)
|
|
{ fprintf(stderr, "amount_sat_sub called!\n"); abort(); }
|
|
/* Generated stub for bigsize_get */
|
|
size_t bigsize_get(const u8 *p UNNEEDED, size_t max UNNEEDED, bigsize_t *val UNNEEDED)
|
|
{ fprintf(stderr, "bigsize_get called!\n"); abort(); }
|
|
/* Generated stub for bigsize_put */
|
|
size_t bigsize_put(u8 buf[BIGSIZE_MAX_LEN] UNNEEDED, bigsize_t v UNNEEDED)
|
|
{ fprintf(stderr, "bigsize_put called!\n"); abort(); }
|
|
/* Generated stub for version_and_exit */
|
|
char *version_and_exit(const void *unused UNNEEDED)
|
|
{ fprintf(stderr, "version_and_exit called!\n"); abort(); }
|
|
/* 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\": \"lightning-cli-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 main(int argc UNUSED, char *argv[])
|
|
{
|
|
setup_locale();
|
|
|
|
char *fake_argv[] = { argv[0], "--lightning-dir=/tmp/", "test", NULL };
|
|
|
|
output = tal_strdup(NULL, "");
|
|
assert(test_main(3, fake_argv) == 0);
|
|
assert(!taken_any());
|
|
|
|
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);
|
|
take_cleanup();
|
|
return 0;
|
|
}
|