f->lines = NULL;
f->line_info = NULL;
f->doc_sections = NULL;
+ f->compiled = NULL;
f->name = talloc_steal(f, name);
return f;
}
else if (strstarts(f->name, "test/compile_fail"))
dest = &m->compile_fail_tests;
else
- dest = &m->other_test_files;
+ dest = &m->other_test_c_files;
} else
dest = &m->other_test_files;
} else
return sofar;
}
-struct manifest *get_manifest(const void *ctx)
+struct manifest *get_manifest(const void *ctx, const char *dir)
{
struct manifest *m = talloc(ctx, struct manifest);
+ char *olddir;
unsigned int len;
m->info_file = NULL;
list_head_init(&m->run_tests);
list_head_init(&m->compile_ok_tests);
list_head_init(&m->compile_fail_tests);
+ list_head_init(&m->other_test_c_files);
list_head_init(&m->other_test_files);
list_head_init(&m->other_files);
+ list_head_init(&m->dep_dirs);
+ list_head_init(&m->dep_objs);
+
+ olddir = talloc_getcwd(NULL);
+ if (!olddir)
+ err(1, "Getting current directory");
+
+ if (chdir(dir) != 0)
+ err(1, "Failed to chdir to %s", dir);
m->basename = talloc_getcwd(m);
if (!m->basename)
m->basename++;
add_files(m, "");
+
+ if (chdir(olddir) != 0)
+ err(1, "Returning to original directory '%s'", olddir);
+ talloc_free(olddir);
+
return m;
}