diff --git a/OMakefile b/OMakefile index 1c822ea..faf8bfd 100644 --- a/OMakefile +++ b/OMakefile @@ -21,7 +21,7 @@ section tests.cmo: tests$(EXT_OBJ): - OCamlProgram(tests, tests chat ircd irc command client channel) + OCamlProgram(tests, tests chat irc command client channel) .PHONY: clean clean: diff --git a/chat.ml b/chat.ml index 900eb64..57473b7 100644 --- a/chat.ml +++ b/chat.ml @@ -153,7 +153,7 @@ let chat script proc = let _ = proc ues a in let _ = new chat_handler script ues b in try - Unixqueue.run ues + Unixqueue.run ues; with | Chat_match (got, expected) -> raise (Failure ("Not matched: got " ^ diff --git a/client.ml b/client.ml index 0ae08cb..a8eb9f5 100644 --- a/client.ml +++ b/client.ml @@ -13,6 +13,7 @@ type t = {outq: Command.t Queue.t; username: string ref; realname: string ref} +let dbg msg a = prerr_endline msg; a let by_file_descr = Hashtbl.create 25 let by_nick = Hashtbl.create 25 @@ -69,15 +70,14 @@ let handle_command_login cli cmd = | (_, nick) -> write cli (Command.create ~sender:(Some !Irc.name) - ~text:(Some "*** Hi there.") - "NOTICE" - [nick])) + ~text:(Some "Welcome to IRC.") + "001" [nick])) let crlf = Str.regexp "\r?\n" let handle_input cli = let buf = Str.string_before cli.ibuf !(cli.ibuf_len) in - let lines = Str.split crlf buf in + let lines = Str.split_delim crlf buf in let rec loop l = match l with | [] -> diff --git a/tests.ml b/tests.ml index afe11b6..9d12441 100644 --- a/tests.ml +++ b/tests.ml @@ -37,41 +37,17 @@ let unit_tests = let regression_tests = - let login_script = + let login_script nick = [ - Send "USER nick +iw nick :gecos\r\n"; - Send "NICK nick\r\n"; - Recv ":testserver.test NOTICE nick :*** Hi there.\r\n"; + Send ("USER " ^ nick ^ " +iw " ^ nick ^ " :gecos\r\n"); + Send ("NICK " ^ nick ^ "\r\n"); + Recv (":testserver.test 001 " ^ nick ^ " :Welcome to IRC.\r\n"); ] in "Regression tests" >::: [ "Simple connection" >:: - (do_chat - login_script); - - "Full connection" >:: - (do_chat - (login_script @ - [ - Recv ":testserver.test 001 nick :Welcome to the test script\r\n"; - Recv ":testserver.test 002 nick :Your host is testserver.test\r\n"; - Recv ":testserver.test 003 nick :This server is timeless\r\n"; - Recv ":testserver.test 004 nick testserver.test testscript DGabcdfg bilmnopst bkloveI\r\n"; - Recv ":testserver.test 005 nick CALLERID CASEMAPPING=rfc1459 KICKLEN=160 MODES=4 WHATEVER=4 WHO=1 CARES=3 :are supported by this server\r\n"; - Recv ":testserver.test 043 00XAAAAL6 :your unique ID\r\n"; - Recv ":testserver.test 251 nick :There are 14 users and 4 invisible on 1 servers\r\n"; - Recv ":testserver.test 252 nick 1 :IRC Operators online\r\n"; - Recv ":testserver.test 254 4 :channels formed\r\n"; - Recv ":testserver.test 255 nick :I have 17 clients and 0 servers\r\n"; - Recv ":testserver.test 265 nick :Current local users: 17 Max: 25\r\n"; - Recv ":testserver.test 266 nick :Current global users: 17 Max: 25\r\n"; - Recv ":testserver.test 250 nick :Highest connection count: 25 (25 clients) (430 connections received)\r\n"; - Recv ":testserver.test 375 nick :- xirc.lanl.gov Message of the Day -\r\n"; - Recv ":testserver.test 372 nick :- This is ircd-hybrid MOTD replace it with something better\r\n"; - Recv ":testserver.test 376 nick :End of /MOTD command.\r\n"; - ] - )); + (do_chat (login_script "nick")); ] let _ =