Browse Source

Unitest is now able to resolve paths next to main test folder.

Marco Bambini 8 years ago
parent
commit
d0ae150d55
1 changed files with 16 additions and 1 deletions
  1. 16 1
      src/cli/unittest.c

+ 16 - 1
src/cli/unittest.c

@@ -24,6 +24,8 @@ typedef struct {
 	int32_t			expected_col;
 	int32_t			expected_col;
 } test_data;
 } test_data;
 
 
+static const char *test_folder_path;
+
 static void unittest_init (const char *target_file, test_data *data) {
 static void unittest_init (const char *target_file, test_data *data) {
 	#pragma unused(target_file)
 	#pragma unused(target_file)
 	++data->ncount;
 	++data->ncount;
@@ -78,7 +80,16 @@ static void callback_error (error_type_t error_type, const char *message, error_
 
 
 static const char *callback_read (const char *path, size_t *size, uint32_t *fileid, void *xdata) {
 static const char *callback_read (const char *path, size_t *size, uint32_t *fileid, void *xdata) {
 	#pragma unused(fileid,xdata)
 	#pragma unused(fileid,xdata)
-	return file_read(path, size);
+	if (file_exists(path)) return file_read(path, size);
+	
+	// this unittest is able to resolve path only next to main test folder (not in nested folders)
+	const char *newpath = file_buildpath(path, test_folder_path);
+	if (!newpath) return NULL;
+	
+	const char *buffer = file_read(newpath, size);
+	mem_free(newpath);
+	
+	return buffer;
 }
 }
 
 
 static void test_folder (const char *folder_path, test_data *data) {
 static void test_folder (const char *folder_path, test_data *data) {
@@ -104,6 +115,9 @@ static void test_folder (const char *folder_path, test_data *data) {
 			continue;
 			continue;
 		}
 		}
 		
 		
+		// test only files with a .gravity extension
+		if (strstr(full_path, ".gravity") == NULL) continue;
+		
 		// load source code
 		// load source code
 		size_t size = 0;
 		size_t size = 0;
 		const char *source_code = file_read(full_path, &size);
 		const char *source_code = file_read(full_path, &size);
@@ -179,6 +193,7 @@ int main (int argc, const char* argv[]) {
 	
 	
 	mem_init();
 	mem_init();
 	nanotime_t tstart = nanotime();
 	nanotime_t tstart = nanotime();
+	test_folder_path = argv[1];
 	test_folder(argv[1], &data);
 	test_folder(argv[1], &data);
 	nanotime_t tend = nanotime();
 	nanotime_t tend = nanotime();