|  | @@ -49,29 +49,38 @@
 | 
											
												
													
														|  |   */
 |  |   */
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static const char *
 |  |  static const char *
 | 
											
												
													
														|  | -locate_resources(void)
 |  | 
 | 
											
												
													
														|  | 
 |  | +locate_path(const char *a_path)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -	return
 |  | 
 | 
											
												
													
														|  | 
 |  | +	static char r_path[256];
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  #ifdef _WIN32
 |  |  #ifdef _WIN32
 | 
											
												
													
														|  |  #ifdef LOCAL_TEST
 |  |  #ifdef LOCAL_TEST
 | 
											
												
													
														|  | -	    "resources\\";
 |  | 
 | 
											
												
													
														|  | 
 |  | +	sprintf(r_path, "%s\\", a_path);
 | 
											
												
													
														|  |  #else
 |  |  #else
 | 
											
												
													
														|  | -	    /* Appveyor */
 |  | 
 | 
											
												
													
														|  | -	    "..\\..\\..\\resources\\"; /* TODO: the different paths
 |  | 
 | 
											
												
													
														|  | -	                                            * used in the different test
 |  | 
 | 
											
												
													
														|  | -	                                            * system is an unsolved
 |  | 
 | 
											
												
													
														|  | -	                                            * problem */
 |  | 
 | 
											
												
													
														|  | 
 |  | +	/* Appveyor */
 | 
											
												
													
														|  | 
 |  | +	sprintf(r_path, "..\\..\\..\\%s\\", a_path);
 | 
											
												
													
														|  | 
 |  | +/* TODO: the different paths
 | 
											
												
													
														|  | 
 |  | + * used in the different test
 | 
											
												
													
														|  | 
 |  | + * system is an unsolved
 | 
											
												
													
														|  | 
 |  | + * problem. */
 | 
											
												
													
														|  |  #endif
 |  |  #endif
 | 
											
												
													
														|  |  #else
 |  |  #else
 | 
											
												
													
														|  |  #ifdef LOCAL_TEST
 |  |  #ifdef LOCAL_TEST
 | 
											
												
													
														|  | -	    "resources/";
 |  | 
 | 
											
												
													
														|  | 
 |  | +	sprintf(r_path, "%s/", a_path);
 | 
											
												
													
														|  |  #else
 |  |  #else
 | 
											
												
													
														|  | -	    /* Travis */
 |  | 
 | 
											
												
													
														|  | -	    "../../resources/"; // TODO: fix path in CI test environment
 |  | 
 | 
											
												
													
														|  | 
 |  | +	/* Travis */
 | 
											
												
													
														|  | 
 |  | +	sprintf(r_path,
 | 
											
												
													
														|  | 
 |  | +	        "../../%s/",
 | 
											
												
													
														|  | 
 |  | +	        a_path); // TODO: fix path in CI test environment
 | 
											
												
													
														|  |  #endif
 |  |  #endif
 | 
											
												
													
														|  |  #endif
 |  |  #endif
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	return r_path;
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +#define locate_resources() locate_path("resources")
 | 
											
												
													
														|  | 
 |  | +#define locate_test_exes() locate_path("output")
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static const char *
 |  |  static const char *
 | 
											
												
													
														|  |  locate_ssl_cert(void)
 |  |  locate_ssl_cert(void)
 | 
											
										
											
												
													
														|  | @@ -803,6 +812,8 @@ START_TEST(test_request_handlers)
 | 
											
												
													
														|  |  	struct mg_connection *ws_client3_conn = NULL;
 |  |  	struct mg_connection *ws_client3_conn = NULL;
 | 
											
												
													
														|  |  #endif
 |  |  #endif
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +	char cmd_buf[256];
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	memset((void *)OPTIONS, 0, sizeof(OPTIONS));
 |  |  	memset((void *)OPTIONS, 0, sizeof(OPTIONS));
 | 
											
												
													
														|  |  	OPTIONS[opt_idx++] = "listening_ports";
 |  |  	OPTIONS[opt_idx++] = "listening_ports";
 | 
											
												
													
														|  |  	OPTIONS[opt_idx++] = HTTP_PORT;
 |  |  	OPTIONS[opt_idx++] = HTTP_PORT;
 | 
											
										
											
												
													
														|  | @@ -1069,6 +1080,34 @@ START_TEST(test_request_handlers)
 | 
											
												
													
														|  |  #endif
 |  |  #endif
 | 
											
												
													
														|  |  	mg_close_connection(client_conn);
 |  |  	mg_close_connection(client_conn);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/* Test with CGI test executable */
 | 
											
												
													
														|  | 
 |  | +#if defined(_WIN32)
 | 
											
												
													
														|  | 
 |  | +	sprintf(cmd_buf, "copy %s\\cgi_test.cgi cgi_test.exe", locate_test_exes());
 | 
											
												
													
														|  | 
 |  | +#else
 | 
											
												
													
														|  | 
 |  | +	sprintf(cmd_buf, "cp %s/cgi_test.cgi cgi_test.cgi", locate_test_exes());
 | 
											
												
													
														|  | 
 |  | +#endif
 | 
											
												
													
														|  | 
 |  | +	system(cmd_buf);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +#if !defined(NO_CGI) && !defined(NO_FILES) && !defined(_WIN32)
 | 
											
												
													
														|  | 
 |  | +	/* TODO: add test for windows, check with POST */
 | 
											
												
													
														|  | 
 |  | +	client_conn = mg_download(
 | 
											
												
													
														|  | 
 |  | +	    "localhost",
 | 
											
												
													
														|  | 
 |  | +	    ipv4_port,
 | 
											
												
													
														|  | 
 |  | +	    0,
 | 
											
												
													
														|  | 
 |  | +	    ebuf,
 | 
											
												
													
														|  | 
 |  | +	    sizeof(ebuf),
 | 
											
												
													
														|  | 
 |  | +	    "%s",
 | 
											
												
													
														|  | 
 |  | +	    "POST /cgi_test.cgi HTTP/1.0\r\nContent-Length: 3\r\n\r\nABC");
 | 
											
												
													
														|  | 
 |  | +	ck_assert(client_conn != NULL);
 | 
											
												
													
														|  | 
 |  | +	ri = mg_get_request_info(client_conn);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	ck_assert(ri != NULL);
 | 
											
												
													
														|  | 
 |  | +	ck_assert_str_eq(ri->uri, "200");
 | 
											
												
													
														|  | 
 |  | +	mg_close_connection(client_conn);
 | 
											
												
													
														|  | 
 |  | +#endif
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	/* Get zipped static data - will not work if Accept-Encoding is not set */
 |  |  	/* Get zipped static data - will not work if Accept-Encoding is not set */
 | 
											
												
													
														|  |  	client_conn = mg_download("localhost",
 |  |  	client_conn = mg_download("localhost",
 | 
											
												
													
														|  |  	                          ipv4_port,
 |  |  	                          ipv4_port,
 |