} fn mine_blocks(&self, n: u64) -> Vec { let blocks = self.bitcoin_rpc_server.mine_blocks(n); self.index.update().unwrap(); blocks } fn mine_blocks_with_subsidy(&self, n: u64, subsidy: u64) -> Vec { let blocks = self.bitcoin_rpc_server.mine_blocks_with_subsidy(n, subsidy); self.index.update().unwrap(); blocks } } impl Drop for TestServer { fn drop(&mut self) { self.ord_server_handle.shutdown(); } } fn parse_server_args(args: &str) -> (Options, Server) { match Arguments::try_parse_from(args.split_whitespace()) { Ok(arguments) => match arguments.subcommand { Subcommand::Server(server) => (arguments.options, server), subcommand => panic!("unexpected subcommand: {subcommand:?}"), }, Err(err) => panic!("error parsing arguments: {err}"), } } #[test] fn http_and_https_port_dont_conflict() { parse_server_args( "ord server --http-port 0 --https-port 0 --acme-cache foo --acme-contact bar --acme-domain baz",