|  | @@ -146,11 +146,6 @@ if ($^O =~ /darwin|bsd|linux/) {
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -if (scalar(@ARGV) > 0 and $ARGV[0] eq 'embedded') {
 |  | 
 | 
											
												
													
														|  | -  do_embedded_test();
 |  | 
 | 
											
												
													
														|  | -  exit 0;
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  if (scalar(@ARGV) > 0 and $ARGV[0] eq 'unit') {
 |  |  if (scalar(@ARGV) > 0 and $ARGV[0] eq 'unit') {
 | 
											
												
													
														|  |    do_unit_test();
 |  |    do_unit_test();
 | 
											
												
													
														|  |    exit 0;
 |  |    exit 0;
 | 
											
										
											
												
													
														|  | @@ -426,7 +421,6 @@ unless (scalar(@ARGV) > 0 and $ARGV[0] eq "basic_tests") {
 | 
											
												
													
														|  |    do_PUT_test();
 |  |    do_PUT_test();
 | 
											
												
													
														|  |    kill_spawned_child();
 |  |    kill_spawned_child();
 | 
											
												
													
														|  |    do_unit_test();
 |  |    do_unit_test();
 | 
											
												
													
														|  | -#do_embedded_test();
 |  | 
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  sub do_PUT_test {
 |  |  sub do_PUT_test {
 | 
											
										
											
												
													
														|  | @@ -460,68 +454,4 @@ sub do_unit_test {
 | 
											
												
													
														|  |    system("make $target") == 0 or fail("Unit test failed!");
 |  |    system("make $target") == 0 or fail("Unit test failed!");
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -sub do_embedded_test {
 |  | 
 | 
											
												
													
														|  | -  my $cmd = "cc -W -Wall -o $embed_exe $root/embed.c mongoose.c -I. ".
 |  | 
 | 
											
												
													
														|  | -  "-pthread -DNO_SSL -DLISTENING_PORT=\\\"127.0.0.1:$port\\\"";
 |  | 
 | 
											
												
													
														|  | -  if (on_windows()) {
 |  | 
 | 
											
												
													
														|  | -    $cmd = "cl $root/embed.c mongoose.c /I. /nologo /DNO_SSL ".
 |  | 
 | 
											
												
													
														|  | -    "/DLISTENING_PORT=\\\"$port\\\" /link /out:$embed_exe.exe ws2_32.lib ";
 |  | 
 | 
											
												
													
														|  | -  }
 |  | 
 | 
											
												
													
														|  | -  print $cmd, "\n";
 |  | 
 | 
											
												
													
														|  | -  system($cmd) == 0 or fail("Cannot compile embedded unit test");
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  spawn("./$embed_exe");
 |  | 
 | 
											
												
													
														|  | -  o("GET /test_get_header HTTP/1.0\nHost: blah\n\n",
 |  | 
 | 
											
												
													
														|  | -    'Value: \[blah\]', 'mg_get_header', 0);
 |  | 
 | 
											
												
													
														|  | -  o("GET /test_get_var?a=b&my_var=foo&c=d HTTP/1.0\n\n",
 |  | 
 | 
											
												
													
														|  | -    'Value: \[foo\]', 'mg_get_var 1', 0);
 |  | 
 | 
											
												
													
														|  | -  o("GET /test_get_var?my_var=foo&c=d HTTP/1.0\n\n",
 |  | 
 | 
											
												
													
														|  | -    'Value: \[foo\]', 'mg_get_var 2', 0);
 |  | 
 | 
											
												
													
														|  | -  o("GET /test_get_var?a=b&my_var=foo HTTP/1.0\n\n",
 |  | 
 | 
											
												
													
														|  | -    'Value: \[foo\]', 'mg_get_var 3', 0);
 |  | 
 | 
											
												
													
														|  | -  o("POST /test_get_var HTTP/1.0\nContent-Length: 10\n\n".
 |  | 
 | 
											
												
													
														|  | -    "my_var=foo", 'Value: \[foo\]', 'mg_get_var 4', 0);
 |  | 
 | 
											
												
													
														|  | -  o("POST /test_get_var HTTP/1.0\nContent-Length: 18\n\n".
 |  | 
 | 
											
												
													
														|  | -    "a=b&my_var=foo&c=d", 'Value: \[foo\]', 'mg_get_var 5', 0);
 |  | 
 | 
											
												
													
														|  | -  o("POST /test_get_var HTTP/1.0\nContent-Length: 14\n\n".
 |  | 
 | 
											
												
													
														|  | -    "a=b&my_var=foo", 'Value: \[foo\]', 'mg_get_var 6', 0);
 |  | 
 | 
											
												
													
														|  | -  o("GET /test_get_var?a=one%2btwo&my_var=foo& HTTP/1.0\n\n",
 |  | 
 | 
											
												
													
														|  | -    'Value: \[foo\]', 'mg_get_var 7', 0);
 |  | 
 | 
											
												
													
														|  | -  o("GET /test_get_var?my_var=one%2btwo&b=two%2b HTTP/1.0\n\n",
 |  | 
 | 
											
												
													
														|  | -    'Value: \[one\+two\]', 'mg_get_var 8', 0);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  # + in form data MUST be decoded to space
 |  | 
 | 
											
												
													
														|  | -  o("POST /test_get_var HTTP/1.0\nContent-Length: 10\n\n".
 |  | 
 | 
											
												
													
														|  | -    "my_var=b+c", 'Value: \[b c\]', 'mg_get_var 9', 0);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  # Test that big POSTed vars are not truncated
 |  | 
 | 
											
												
													
														|  | -  my $my_var = 'x' x 64000;
 |  | 
 | 
											
												
													
														|  | -  o("POST /test_get_var HTTP/1.0\nContent-Length: 64007\n\n".
 |  | 
 | 
											
												
													
														|  | -    "my_var=$my_var", 'Value size: \[64000\]', 'mg_get_var 10', 0);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  # Other methods should also work
 |  | 
 | 
											
												
													
														|  | -  o("PUT /test_get_var HTTP/1.0\nContent-Length: 10\n\n".
 |  | 
 | 
											
												
													
														|  | -    "my_var=foo", 'Value: \[foo\]', 'mg_get_var 11', 0);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  o("POST /test_get_request_info?xx=yy HTTP/1.0\nFoo: bar\n".
 |  | 
 | 
											
												
													
														|  | -    "Content-Length: 3\n\na=b",
 |  | 
 | 
											
												
													
														|  | -    'Method: \[POST\].URI: \[/test_get_request_info\].'.
 |  | 
 | 
											
												
													
														|  | -    'HTTP version: \[1.0\].HTTP header \[Foo\]: \[bar\].'.
 |  | 
 | 
											
												
													
														|  | -    'HTTP header \[Content-Length\]: \[3\].'.
 |  | 
 | 
											
												
													
														|  | -    'Query string: \[xx=yy\].'.
 |  | 
 | 
											
												
													
														|  | -    'Remote IP: \[\d+\].Remote port: \[\d+\].'.
 |  | 
 | 
											
												
													
														|  | -    'Remote user: \[\]'
 |  | 
 | 
											
												
													
														|  | -    , 'request_info', 0);
 |  | 
 | 
											
												
													
														|  | -  o("GET /not_exist HTTP/1.0\n\n", 'Error: \[404\]', '404 handler', 0);
 |  | 
 | 
											
												
													
														|  | -  o("bad request\n\n", 'Error: \[500\]', '* error handler', 0);
 |  | 
 | 
											
												
													
														|  | -#	o("GET /foo/secret HTTP/1.0\n\n",
 |  | 
 | 
											
												
													
														|  | -#		'401 Unauthorized', 'mg_protect_uri', 0);
 |  | 
 | 
											
												
													
														|  | -#	o("GET /foo/secret HTTP/1.0\nAuthorization: Digest username=bill\n\n",
 |  | 
 | 
											
												
													
														|  | -#		'401 Unauthorized', 'mg_protect_uri (bill)', 0);
 |  | 
 | 
											
												
													
														|  | -#	o("GET /foo/secret HTTP/1.0\nAuthorization: Digest username=joe\n\n",
 |  | 
 | 
											
												
													
														|  | -#		'200 OK', 'mg_protect_uri (joe)', 0);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  kill_spawned_child();
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  print "SUCCESS! All tests passed.\n";
 |  |  print "SUCCESS! All tests passed.\n";
 |