test_main.c 2.99 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/*
 * This file is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License, version 2,
 * as published by the Free Software Foundation.
 *
 * In addition to the permissions in the GNU General Public License,
 * the authors give you unlimited permission to link the compiled
 * version of this file into combinations with other programs,
 * and to distribute those combinations without any restriction
 * coming from the use of this file.  (The General Public License
 * restrictions do apply in other respects; for example, they cover
 * modification of the file, and distribution when not linked into
 * a combined executable.)
 *
 * This file is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file COPYING.  If not, write to
 * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

26
#include <string.h>
27
#include <git2.h>
28

29 30 31 32 33 34 35 36 37 38 39 40 41 42
#include "test_lib.h"
#include "test_helpers.h"

extern git_testsuite *libgit2_suite_core(void);
extern git_testsuite *libgit2_suite_rawobjects(void);
extern git_testsuite *libgit2_suite_objread(void);
extern git_testsuite *libgit2_suite_objwrite(void);
extern git_testsuite *libgit2_suite_commit(void);
extern git_testsuite *libgit2_suite_revwalk(void);
extern git_testsuite *libgit2_suite_index(void);
extern git_testsuite *libgit2_suite_hashtable(void);
extern git_testsuite *libgit2_suite_tag(void);
extern git_testsuite *libgit2_suite_tree(void);
extern git_testsuite *libgit2_suite_refs(void);
43
extern git_testsuite *libgit2_suite_sqlite(void);
44 45 46 47 48 49 50 51 52 53 54 55 56 57

typedef git_testsuite *(*libgit2_suite)(void);

static libgit2_suite suite_methods[]= {
	libgit2_suite_core,
	libgit2_suite_rawobjects,
	libgit2_suite_objread,
	libgit2_suite_objwrite,
	libgit2_suite_commit,
	libgit2_suite_revwalk,
	libgit2_suite_index,
	libgit2_suite_hashtable,
	libgit2_suite_tag,
	libgit2_suite_tree,
58 59
	libgit2_suite_refs,
	libgit2_suite_sqlite,
60 61 62
};

#define GIT_SUITE_COUNT (ARRAY_SIZE(suite_methods))
63 64


65
git_testsuite **libgit2_get_suites()
66
{
67 68
	git_testsuite **suites;
	unsigned int i;
69

70 71 72
	suites = git__malloc(GIT_SUITE_COUNT * sizeof(void *));
	if (suites == NULL)
		return NULL;
73

74 75
	for (i = 0; i < GIT_SUITE_COUNT; ++i)
		suites[i] = suite_methods[i]();
76

77 78
	return suites;
}
79

80 81 82
void libgit2_free_suites(git_testsuite **suites)
{
	unsigned int i;
83

84 85
	for (i = 0; i < GIT_SUITE_COUNT; ++i)
		git_testsuite_free(suites[i]);
86

87 88
	free(suites);
}
89

90
int main(int GIT_UNUSED(argc), char *GIT_UNUSED(argv[]))
91
{
92
	unsigned int i, failures;
93 94 95 96 97 98
	git_testsuite **suites;

	GIT_UNUSED_ARG(argc);
	GIT_UNUSED_ARG(argv);

	suites = libgit2_get_suites();
99
	failures = 0;
100 101

	for (i = 0; i < GIT_SUITE_COUNT; ++i)
102
		failures += git_testsuite_run(suites[i]);
103 104

	libgit2_free_suites(suites);
105 106

	return failures ? -1 : 0;
107
}
108