2 * Copyright (C) 2009, 2011, 2016 J. Ali Harlow <ali@juiblex.co.uk>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 #include "plover/plover.h"
26 #include "plover/uri-handler.h"
27 #include "test-uri-handler-gresource.h"
29 LUALIB_API int luaopen_posix(lua_State *L);
31 void test_resource(void)
33 gchar *prefix,*root,*root_uri,*s;
36 struct comps_group *group;
37 struct comps_requirement *pkg;
38 struct plover_vector *packages=NULL;
41 test_uri_handler_register_resource();
42 root=g_strdup("razor-test-dir-XXXXXX");
43 g_assert(mkdtemp(root));
44 file=g_file_new_for_path(root);
45 root_uri=g_file_get_uri(file);
47 g_setenv("RAZOR_ROOT",root_uri,TRUE);
49 comps=plover_comps_new_from_uri(
50 "resource:///uk/co/juiblex/project/plover/repodata/comps.xml");
53 perror("resource:///uk/co/juiblex/project/plover/repodata/comps.xml");
56 prefix=plover_default_prefix_for_vendor(comps->vendor);
57 group=plover_comps_lookup_group(comps,"base");
60 fprintf(stderr,"No base group found in comps.xml\n");
63 packages=plover_vector_new();
67 for(pkg=group->packages;pkg;pkg=pkg->next)
69 if (plover_vector_contains(packages,pkg->name))
71 if (pkg->type==COMPS_REQUIREMENT_DEFAULT ||
72 pkg->type==COMPS_REQUIREMENT_MANDATORY ||
73 pkg->type==COMPS_REQUIREMENT_CONDITIONAL && (!pkg->requires ||
74 plover_vector_contains(packages,pkg->requires)))
77 plover_vector_append(packages,pkg->name);
81 plover_comps_free(comps);
84 fprintf(stderr,"No packages to install\n");
87 if (!plover_install_uri("resource:///uk/co/juiblex/project/plover",prefix,
88 packages->strings,&error))
90 fprintf(stderr,"%s\n",error->message);
94 plover_vector_free(packages);
96 g_unsetenv("RAZOR_ROOT");
97 test_uri_handler_unregister_resource();
98 s=g_build_filename(root,"usr/bin/zsh",NULL);
100 if (!g_file_test(s,G_FILE_TEST_EXISTS))
101 g_error("%s: Missing file",s);
105 int main(int argc,char **argv)
108 razor_set_lua_loader("posix",(void (*)())luaopen_posix);
109 g_test_init(&argc,&argv,NULL);
110 g_test_bug_base("mailto:ali@juiblex.co.uk");
111 g_test_add_func("/uri-handler/resource",test_resource);