|
|
|
#define main unused_main
|
|
|
|
int unused_main(int argc, char *argv[]);
|
|
|
|
|
|
|
|
#include "../lightningd.c"
|
|
|
|
|
|
|
|
/* AUTOGENERATED MOCKS START */
|
|
|
|
/* Generated stub for crashlog_activate */
|
|
|
|
void crashlog_activate(const char *argv0 UNNEEDED, struct log *log UNNEEDED)
|
|
|
|
{ fprintf(stderr, "crashlog_activate called!\n"); abort(); }
|
|
|
|
/* Generated stub for debug_poll */
|
|
|
|
int debug_poll(struct pollfd *fds UNNEEDED, nfds_t nfds UNNEEDED, int timeout UNNEEDED)
|
|
|
|
{ fprintf(stderr, "debug_poll called!\n"); abort(); }
|
|
|
|
/* Generated stub for gossip_init */
|
|
|
|
void gossip_init(struct lightningd *ld UNNEEDED)
|
|
|
|
{ fprintf(stderr, "gossip_init called!\n"); abort(); }
|
|
|
|
/* Generated stub for handle_opts */
|
|
|
|
bool handle_opts(struct lightningd *ld UNNEEDED, int argc UNNEEDED, char *argv[])
|
|
|
|
{ fprintf(stderr, "handle_opts called!\n"); abort(); }
|
|
|
|
/* Generated stub for hash_htlc_key */
|
|
|
|
size_t hash_htlc_key(const struct htlc_key *htlc_key UNNEEDED)
|
|
|
|
{ fprintf(stderr, "hash_htlc_key called!\n"); abort(); }
|
|
|
|
/* Generated stub for hsm_init */
|
|
|
|
void hsm_init(struct lightningd *ld UNNEEDED, bool newdir UNNEEDED)
|
|
|
|
{ fprintf(stderr, "hsm_init called!\n"); abort(); }
|
|
|
|
/* Generated stub for invoices_init */
|
|
|
|
struct invoices *invoices_init(const tal_t *ctx UNNEEDED)
|
|
|
|
{ fprintf(stderr, "invoices_init called!\n"); abort(); }
|
|
|
|
/* Generated stub for log_ */
|
|
|
|
void log_(struct log *log UNNEEDED, enum log_level level UNNEEDED, const char *fmt UNNEEDED, ...)
|
|
|
|
|
|
|
|
{ fprintf(stderr, "log_ called!\n"); abort(); }
|
|
|
|
/* Generated stub for new_log */
|
|
|
|
struct log *new_log(const tal_t *ctx UNNEEDED, struct log_book *record UNNEEDED, const char *fmt UNNEEDED, ...)
|
|
|
|
{ fprintf(stderr, "new_log called!\n"); abort(); }
|
|
|
|
/* Generated stub for new_log_book */
|
|
|
|
struct log_book *new_log_book(const tal_t *ctx UNNEEDED,
|
|
|
|
size_t max_mem UNNEEDED,
|
|
|
|
enum log_level printlevel UNNEEDED)
|
|
|
|
{ fprintf(stderr, "new_log_book called!\n"); abort(); }
|
|
|
|
/* Generated stub for new_topology */
|
|
|
|
struct chain_topology *new_topology(const tal_t *ctx UNNEEDED, struct log *log UNNEEDED)
|
|
|
|
{ fprintf(stderr, "new_topology called!\n"); abort(); }
|
|
|
|
/* Generated stub for populate_peer */
|
|
|
|
void populate_peer(struct lightningd *ld UNNEEDED, struct peer *peer UNNEEDED)
|
|
|
|
{ fprintf(stderr, "populate_peer called!\n"); abort(); }
|
|
|
|
/* Generated stub for register_opts */
|
|
|
|
void register_opts(struct lightningd *ld UNNEEDED)
|
|
|
|
{ fprintf(stderr, "register_opts called!\n"); abort(); }
|
|
|
|
/* Generated stub for setup_color_and_alias */
|
|
|
|
void setup_color_and_alias(struct lightningd *ld UNNEEDED)
|
|
|
|
{ fprintf(stderr, "setup_color_and_alias called!\n"); abort(); }
|
|
|
|
/* Generated stub for setup_jsonrpc */
|
|
|
|
void setup_jsonrpc(struct lightningd *ld UNNEEDED, const char *rpc_filename UNNEEDED)
|
|
|
|
{ fprintf(stderr, "setup_jsonrpc called!\n"); abort(); }
|
|
|
|
/* Generated stub for setup_topology */
|
|
|
|
void setup_topology(struct chain_topology *topology UNNEEDED,
|
|
|
|
struct timers *timers UNNEEDED,
|
|
|
|
struct timerel poll_time UNNEEDED, u32 first_peer_block UNNEEDED)
|
|
|
|
{ fprintf(stderr, "setup_topology called!\n"); abort(); }
|
|
|
|
/* Generated stub for subd_shutdown */
|
|
|
|
void subd_shutdown(struct subd *subd UNNEEDED, unsigned int seconds UNNEEDED)
|
|
|
|
{ fprintf(stderr, "subd_shutdown called!\n"); abort(); }
|
|
|
|
/* Generated stub for timer_expired */
|
|
|
|
void timer_expired(tal_t *ctx UNNEEDED, struct timer *timer UNNEEDED)
|
|
|
|
{ fprintf(stderr, "timer_expired called!\n"); abort(); }
|
|
|
|
/* Generated stub for version */
|
|
|
|
const char *version(void)
|
|
|
|
{ fprintf(stderr, "version called!\n"); abort(); }
|
|
|
|
/* Generated stub for wallet_channels_load_active */
|
|
|
|
bool wallet_channels_load_active(struct wallet *w UNNEEDED, struct list_head *peers UNNEEDED)
|
|
|
|
{ fprintf(stderr, "wallet_channels_load_active called!\n"); abort(); }
|
|
|
|
/* Generated stub for wallet_htlcs_load_for_channel */
|
|
|
|
bool wallet_htlcs_load_for_channel(struct wallet *wallet UNNEEDED,
|
|
|
|
struct wallet_channel *chan UNNEEDED,
|
|
|
|
struct htlc_in_map *htlcs_in UNNEEDED,
|
|
|
|
struct htlc_out_map *htlcs_out UNNEEDED)
|
|
|
|
{ fprintf(stderr, "wallet_htlcs_load_for_channel called!\n"); abort(); }
|
|
|
|
/* Generated stub for wallet_htlcs_reconnect */
|
|
|
|
bool wallet_htlcs_reconnect(struct wallet *wallet UNNEEDED,
|
|
|
|
struct htlc_in_map *htlcs_in UNNEEDED,
|
|
|
|
struct htlc_out_map *htlcs_out UNNEEDED)
|
|
|
|
{ fprintf(stderr, "wallet_htlcs_reconnect called!\n"); abort(); }
|
|
|
|
/* Generated stub for wallet_invoices_load */
|
|
|
|
bool wallet_invoices_load(struct wallet *wallet UNNEEDED, struct invoices *invs UNNEEDED)
|
|
|
|
{ fprintf(stderr, "wallet_invoices_load called!\n"); abort(); }
|
|
|
|
/* Generated stub for wallet_new */
|
|
|
|
struct wallet *wallet_new(const tal_t *ctx UNNEEDED, struct log *log UNNEEDED)
|
|
|
|
{ fprintf(stderr, "wallet_new called!\n"); abort(); }
|
|
|
|
/* AUTOGENERATED MOCKS END */
|
|
|
|
|
|
|
|
#undef main
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
char *tmpctx = tal_tmpctx(NULL);
|
|
|
|
char *argv0;
|
|
|
|
/* We're assuming we're run from top build dir. */
|
|
|
|
const char *answer = path_canon(tmpctx, "lightningd/test");
|
|
|
|
|
|
|
|
/* Various different ways we could find ourselves. */
|
|
|
|
argv0 = path_join(tmpctx,
|
|
|
|
path_cwd(tmpctx), "lightningd/test/run-find_my_path");
|
|
|
|
unsetenv("PATH");
|
|
|
|
|
|
|
|
/* Absolute path. */
|
|
|
|
assert(streq(find_my_path(tmpctx, argv0), answer));
|
|
|
|
|
|
|
|
/* Relative to cwd. */
|
|
|
|
argv0 = "lightningd/test/run-find_my_path";
|
|
|
|
assert(streq(find_my_path(tmpctx, argv0), answer));
|
|
|
|
|
|
|
|
/* Using $PATH */
|
|
|
|
setenv("PATH", path_join(tmpctx,
|
|
|
|
path_cwd(tmpctx), "lightningd/test"), 1);
|
|
|
|
argv0 = "run-find_my_path";
|
|
|
|
|
|
|
|
assert(streq(find_my_path(tmpctx, argv0), answer));
|
|
|
|
|
|
|
|
/* Even with dummy things in path. */
|
|
|
|
char **pathelems = tal_arr(tmpctx, char *, 4);
|
|
|
|
pathelems[0] = "/tmp/foo";
|
|
|
|
pathelems[1] = "/sbin";
|
|
|
|
pathelems[2] = path_join(tmpctx, path_cwd(tmpctx), "lightningd/test");
|
|
|
|
pathelems[3] = NULL;
|
|
|
|
|
|
|
|
setenv("PATH", tal_strjoin(tmpctx, pathelems, ":", STR_NO_TRAIL), 1);
|
|
|
|
assert(streq(find_my_path(tmpctx, argv0), answer));
|
|
|
|
|
|
|
|
assert(!taken_any());
|
|
|
|
take_cleanup();
|
|
|
|
tal_free(tmpctx);
|
|
|
|
return 0;
|
|
|
|
}
|