#include "test_lib.h"
#include "test_helpers.h"
#include "index.h"

#include <git/odb.h>
#include <git/index.h>

#define TEST_INDEX_PATH "../resources/testrepo.git/index"

int filecmp(const char *filename1, const char *filename2)
{
	git_file file1, file2;
	struct stat stat1, stat2;

	/* char buffer1[1024], buffer2[1024]; */

	file1 = gitfo_open(filename1, O_RDONLY);
	file2 = gitfo_open(filename2, O_RDONLY);

	if (file1 < 0 || file2 < 0)
		return GIT_ERROR;

	gitfo_fstat(file1, &stat1);
	gitfo_fstat(file2, &stat2);

	if (stat1.st_size != stat2.st_size)
		return GIT_ERROR;

	/* TODO: byte-per-byte comparison */

	return 0;
}

BEGIN_TEST(index_load_test)
	git_index *index;
	git_filelock out_file;

	must_pass(git_index_open_bare(&index, TEST_INDEX_PATH));
	must_pass(git_index_read(index));
	must_be_true(index->on_disk);

	must_pass(git_filelock_init(&out_file, "index_rewrite"));
	must_pass(git_filelock_lock(&out_file, 0));
	must_pass(git_index__write(index, &out_file));
	must_pass(git_filelock_commit(&out_file));

	git_index_free(index);
END_TEST