2 * Copyright (C) 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.
22 #include <plover/repository.h>
24 const char *test_repo_packages[]={
25 "zsh","zsh2","zip","zap","filesystem","zappy","zappy-tools","zappy2",
26 "unsatisfiable","uninstallable","badpostun"
29 static void test_from_files(void)
32 struct razor_set *set;
33 struct razor_package_iterator *iter;
34 struct razor_package *package;
35 PloverRepository *repository;
36 PloverPackageSet *package_set;
39 GList *expected=NULL,*lnk;
41 filenames=g_new(char *,G_N_ELEMENTS(test_repo_packages)+1);
42 for(i=0;i<G_N_ELEMENTS(test_repo_packages);i++)
43 filenames[i]=g_strconcat("../yum-repo-test-dir/Packages/",
44 test_repo_packages[i],"-1-1.noarch.rpm",NULL);
46 repository=plover_repository_new_from_files((const char **)filenames,&err);
47 g_strfreev(filenames);
48 if (!repository && err)
49 g_error("../yum-repo-test-dir: %s",err->message);
50 g_assert(repository != NULL);
51 g_assert(err == NULL);
52 package_set=plover_repository_get_package_set(repository);
53 g_assert(package_set != NULL);
54 set=plover_package_set_get_razor(package_set);
55 g_assert(set != NULL);
56 for(i=0;i<G_N_ELEMENTS(test_repo_packages);i++)
57 expected=g_list_prepend(expected,
58 (gpointer)g_intern_string(test_repo_packages[i]));
59 iter=razor_package_iterator_create(set);
60 while(razor_package_iterator_next(iter,&package,RAZOR_DETAIL_NAME,&name,
63 lnk=g_list_find(expected,g_intern_string(name));
65 g_warning("Unexpected package in set: %s",name);
67 expected=g_list_delete_link(expected,lnk);
69 razor_package_iterator_destroy(iter);
71 g_warning("%d missing package%s in set, including %s",
72 g_list_length(expected),g_list_length(expected)==1?"":"s",
74 g_object_unref(repository);
77 static void test_from_yum(void)
80 struct razor_set *set;
81 struct razor_package_iterator *iter;
82 struct razor_package *package;
83 PloverRepository *repository;
84 PloverPackageSet *package_set;
86 GList *expected=NULL,*lnk;
88 repository=plover_repository_new_from_yum("../yum-repo-test-dir",&err);
89 if (!repository && err)
90 g_error("../yum-repo-test-dir: %s",err->message);
91 g_assert(repository != NULL);
92 g_assert(err == NULL);
93 package_set=plover_repository_get_package_set(repository);
94 g_assert(package_set != NULL);
95 set=plover_package_set_get_razor(package_set);
96 g_assert(set != NULL);
97 for(i=0;i<G_N_ELEMENTS(test_repo_packages);i++)
98 expected=g_list_prepend(expected,
99 (gpointer)g_intern_string(test_repo_packages[i]));
100 iter=razor_package_iterator_create(set);
101 while(razor_package_iterator_next(iter,&package,RAZOR_DETAIL_NAME,&name,
104 lnk=g_list_find(expected,g_intern_string(name));
106 g_warning("Unexpected package in set: %s",name);
108 expected=g_list_delete_link(expected,lnk);
110 razor_package_iterator_destroy(iter);
112 g_warning("%d missing package%s in set, including %s",
113 g_list_length(expected),g_list_length(expected)==1?"":"s",
115 g_object_unref(repository);
118 static void test_open_rpm(void)
120 struct razor_rpm *rpm;
121 PloverRepository *repository;
122 PloverPackageSet *package_set;
123 PloverPackage *package;
125 GSList *packages,*lnk;
127 repository=plover_repository_new_from_yum("../yum-repo-test-dir",&err);
129 g_error("../yum-repo-test-dir: %s",err->message);
130 package_set=plover_repository_get_package_set(repository);
131 packages=plover_package_set_get_packages(package_set);
132 for(lnk=packages;lnk;lnk=lnk->next)
134 package=PLOVER_PACKAGE(lnk->data);
135 rpm=plover_repository_open_rpm(repository,package,&err);
137 g_error("%s: %s",plover_package_get_name(package),err->message);
138 g_assert(rpm != NULL);
139 g_assert(err == NULL);
140 razor_rpm_get_details(rpm,RAZOR_DETAIL_NAME,&name,RAZOR_DETAIL_LAST);
141 g_assert_cmpstr(plover_package_get_name(package),==,name);
142 razor_rpm_close(rpm);
144 g_object_unref(repository);
147 int main(int argc,char **argv)
149 g_test_init(&argc,&argv,NULL);
150 g_test_bug_base("mailto:ali@juiblex.co.uk");
151 g_test_add_func("/repository/from-files",test_from_files);
152 g_test_add_func("/repository/from-yum",test_from_yum);
153 g_test_add_func("/repository/open-rpm",test_open_rpm);