|  | @@ -46,6 +46,30 @@
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +const char *locate_ssl_cert(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	return
 | 
	
		
			
				|  |  | +#ifdef _WIN32
 | 
	
		
			
				|  |  | +#ifdef LOCAL_TEST
 | 
	
		
			
				|  |  | +	    "resources\\ssl_cert.pem";
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +	    /* Appveyor */
 | 
	
		
			
				|  |  | +	    "..\\..\\..\\resources\\ssl_cert.pem"; /* TODO: the different paths
 | 
	
		
			
				|  |  | +                                                * used in the different test 
 | 
	
		
			
				|  |  | +                                                * system is an unsolved 
 | 
	
		
			
				|  |  | +                                                * problem */
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#ifdef LOCAL_TEST
 | 
	
		
			
				|  |  | +        "../resources/ssl_cert.pem";
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +	    /* Travis */
 | 
	
		
			
				|  |  | +	    "../../resources/ssl_cert.pem"; // TODO: fix path in CI test environment
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  START_TEST(test_the_test_environment)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	char wd[300];
 | 
	
	
		
			
				|  | @@ -53,10 +77,12 @@ START_TEST(test_the_test_environment)
 | 
	
		
			
				|  |  |  	FILE *f;
 | 
	
		
			
				|  |  |  	struct stat st;
 | 
	
		
			
				|  |  |  	int ret;
 | 
	
		
			
				|  |  | +	const char *ssl_cert = locate_ssl_cert();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(wd, 0, sizeof(wd));
 | 
	
		
			
				|  |  |  	memset(buf, 0, sizeof(buf));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /* Get the current working directory */
 | 
	
		
			
				|  |  |  #ifdef _WIN32
 | 
	
		
			
				|  |  |  	(void)GetCurrentDirectoryA(sizeof(wd), wd);
 | 
	
	
		
			
				|  | @@ -69,11 +95,13 @@ START_TEST(test_the_test_environment)
 | 
	
		
			
				|  |  |  /* Check the pem file */
 | 
	
		
			
				|  |  |  #ifdef _WIN32
 | 
	
		
			
				|  |  |  	strcpy(buf, wd);
 | 
	
		
			
				|  |  | -	strcat(buf, "..\\..\\..\\resources\\ssl_cert.pem");
 | 
	
		
			
				|  |  | +    strcat(buf, "\\");
 | 
	
		
			
				|  |  | +	strcat(buf, ssl_cert);
 | 
	
		
			
				|  |  |  	f = fopen(buf, "rb");
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  |  	strcpy(buf, wd);
 | 
	
		
			
				|  |  | -	strcat(buf, "../../resources/ssl_cert.pem");
 | 
	
		
			
				|  |  | +    strcat(buf, "/");
 | 
	
		
			
				|  |  | +	strcat(buf, ssl_cert);
 | 
	
		
			
				|  |  |  	f = fopen(buf, "r");
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -163,30 +191,36 @@ END_TEST
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  START_TEST(test_mg_start_stop_https_server)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +#ifndef NO_SSL
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	struct mg_context *ctx;
 | 
	
		
			
				|  |  | -	const char *OPTIONS[] = {
 | 
	
		
			
				|  |  | -#if !defined(NO_FILES)
 | 
	
		
			
				|  |  | -		"document_root",
 | 
	
		
			
				|  |  | -		".",
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -		"listening_ports",
 | 
	
		
			
				|  |  | -		"8080r,8443s",
 | 
	
		
			
				|  |  | -		"ssl_certificate",
 | 
	
		
			
				|  |  | -#ifdef _WIN32
 | 
	
		
			
				|  |  | -		"..\\..\\..\\resources/ssl_cert.pem", // TODO: the different paths used
 | 
	
		
			
				|  |  | -                                              // in the different test system is
 | 
	
		
			
				|  |  | -                                              // an unsolved problem
 | 
	
		
			
				|  |  | -#else
 | 
	
		
			
				|  |  | -		"../../resources/ssl_cert.pem", // TODO: fix path in CI test environment
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -		NULL,
 | 
	
		
			
				|  |  | -	};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	size_t ports_cnt;
 | 
	
		
			
				|  |  |  	int ports[16];
 | 
	
		
			
				|  |  |  	int ssl[16];
 | 
	
		
			
				|  |  |  	struct mg_callbacks callbacks;
 | 
	
		
			
				|  |  |  	char errmsg[256];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	const char *OPTIONS[8]; /* initializer list here is rejected by CI test */
 | 
	
		
			
				|  |  | +	int opt_idx = 0;
 | 
	
		
			
				|  |  | +	const char *ssl_cert = locate_ssl_cert();
 | 
	
		
			
				|  |  | +	ck_assert(ssl_cert != NULL);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	memset((void *)OPTIONS, 0, sizeof(OPTIONS));
 | 
	
		
			
				|  |  | +#if !defined(NO_FILES)
 | 
	
		
			
				|  |  | +	OPTIONS[opt_idx++] = "document_root";
 | 
	
		
			
				|  |  | +	OPTIONS[opt_idx++] = ".";
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +	OPTIONS[opt_idx++] = "listening_ports";
 | 
	
		
			
				|  |  | +	OPTIONS[opt_idx++] = "8080r,8443s";
 | 
	
		
			
				|  |  | +	OPTIONS[opt_idx++] = "ssl_certificate";
 | 
	
		
			
				|  |  | +	OPTIONS[opt_idx++] = ssl_cert;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	ck_assert_int_le(opt_idx, (int)(sizeof(OPTIONS) / sizeof(OPTIONS[0])));
 | 
	
		
			
				|  |  | +	ck_assert(OPTIONS[sizeof(OPTIONS) / sizeof(OPTIONS[0]) - 1] == NULL);
 | 
	
		
			
				|  |  | +	ck_assert(OPTIONS[sizeof(OPTIONS) / sizeof(OPTIONS[0]) - 2] == NULL);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	memset(ports, 0, sizeof(ports));
 | 
	
		
			
				|  |  |  	memset(ssl, 0, sizeof(ssl));
 | 
	
		
			
				|  |  |  	memset(&callbacks, 0, sizeof(callbacks));
 | 
	
	
		
			
				|  | @@ -210,6 +244,7 @@ START_TEST(test_mg_start_stop_https_server)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	mg_Sleep(1);
 | 
	
		
			
				|  |  |  	mg_stop(ctx);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  END_TEST
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -294,6 +329,7 @@ START_TEST(test_request_handlers)
 | 
	
		
			
				|  |  |  	const char *opt;
 | 
	
		
			
				|  |  |  	FILE *f;
 | 
	
		
			
				|  |  |  	int opt_idx = 0;
 | 
	
		
			
				|  |  | +	const char *ssl_cert = locate_ssl_cert();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset((void *)OPTIONS, 0, sizeof(OPTIONS));
 | 
	
		
			
				|  |  |  	OPTIONS[opt_idx++] = "listening_ports";
 | 
	
	
		
			
				|  | @@ -303,17 +339,9 @@ START_TEST(test_request_handlers)
 | 
	
		
			
				|  |  |  	OPTIONS[opt_idx++] = ".";
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  #ifndef NO_SSL
 | 
	
		
			
				|  |  | +	ck_assert(ssl_cert != NULL);
 | 
	
		
			
				|  |  |  	OPTIONS[opt_idx++] = "ssl_certificate";
 | 
	
		
			
				|  |  | -#ifdef _WIN32
 | 
	
		
			
				|  |  | -	OPTIONS[opt_idx++] =
 | 
	
		
			
				|  |  | -	    "..\\..\\..\\resources/ssl_cert.pem"; // TODO: the different
 | 
	
		
			
				|  |  | -                                              // paths used in the
 | 
	
		
			
				|  |  | -                                              // different test system
 | 
	
		
			
				|  |  | -                                              // is an unsolved problem
 | 
	
		
			
				|  |  | -#else
 | 
	
		
			
				|  |  | -	OPTIONS[opt_idx++] =
 | 
	
		
			
				|  |  | -	    "../../resources/ssl_cert.pem"; // TODO: fix path in CI test environment
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | +	OPTIONS[opt_idx++] = ssl_cert;
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  	ck_assert_int_le(opt_idx, (int)(sizeof(OPTIONS) / sizeof(OPTIONS[0])));
 | 
	
		
			
				|  |  |  	ck_assert(OPTIONS[sizeof(OPTIONS) / sizeof(OPTIONS[0]) - 1] == NULL);
 |