18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file file_manip_tests.cpp
38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2003 OProfile authors
58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING
68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon
88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie
98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <unistd.h>
128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stdlib.h>
138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <string>
158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <iostream>
168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <list>
178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "file_manip.h"
198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddusing namespace std;
218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddtemplate <typename Input, typename Output>
238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct input_output {
248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	Input input;
258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	Output output;
268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddtemplate <typename Input, typename Output, typename Result>
308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void check_result(char const * fct_name, Input const & input,
318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		  Output const & output, Result const & result)
328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	if (result != output) {
348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		cerr << fct_name << " "
358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << "for:\n\"" << input << "\"\n"
368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << "expect:\n\"" << output << "\"\n"
378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << "found:\n\"" << result << "\"\n";
388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		exit(EXIT_FAILURE);
398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddtemplate <typename Input, typename Output, typename Result>
438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void check_result(char const * fct_name, Input const & input1,
448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	Input input2, Output const & output, Result const & result)
458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	if (result != output) {
478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		cerr << fct_name << ": \n"
488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << "for:\n\"" << input1 << "\"\n"
498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << "\"" << input2 << "\"\n"
508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << "expect:\n\"" << output << "\"\n"
518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << "found:\n\"" << result << "\"\n";
528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		exit(EXIT_FAILURE);
538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic input_output<char const *, char const *> expect_dirname[] =
588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/", "/" },
608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "//////", "/" },
618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/usr", "/" },
628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "///usr", "/" },
638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	// suprising but conform to dirname(1)
648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "///usr/dir", "///usr" },
658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "usr/dir", "usr" },
668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "usr", "." },
678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "n", "." },
688cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "../..", ".." },
698cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/../..", "/.." },
708cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "./..", "." },
718cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "./.", "." },
728cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "..", "." },
738cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ ".", "." },
748cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "", "." },
758cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ 0, 0 }
768cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
778cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
788cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void dirname_tests()
798cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
808cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	input_output<char const *, char const *> const * cur;
818cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	for (cur = expect_dirname; cur->input; ++cur) {
828cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		string result = op_dirname(cur->input);
838cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		check_result("dirname", cur->input, cur->output, result);
848cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
858cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
868cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
878cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
888cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic input_output<char const *, char const*> expect_basename[] =
898cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
908cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/", "/" },
918cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "//////", "/" },
928cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/usr", "usr" },
938cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "///usr", "usr" },
948cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "///usr/dir", "dir" },
958cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "///usr//dir", "dir" },
968cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "usr/dir", "dir" },
978cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "usr", "usr" },
988cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "../..", ".." },
998cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/../..", ".." },
1008cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "./..", ".." },
1018cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "./.", "." },
1028cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ ".", "." },
1038cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ 0, 0 }
1048cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
1058cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1068cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void basename_tests()
1078cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
1088cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	input_output<char const *, char const *> const * cur;
1098cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	for (cur = expect_basename; cur->input; ++cur) {
1108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		string result = op_basename(cur->input);
1118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		check_result("basename", cur->input, cur->output, result);
1128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
1138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
1148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic input_output<char const *, bool> expect_is_directory[] =
1178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
1188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ ".", true },
1198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/.", true },
1208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "./", true },
1218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/", true },
1228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "../", true },
1238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "../.", true },
1248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "non_existing_dir", false },
1258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ 0, 0 }
1268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
1278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void is_directory_tests()
1298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
1308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	input_output<char const *, bool> const * cur;
1318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	for (cur = expect_is_directory; cur->input; ++cur) {
1328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		bool result = is_directory(cur->input);
1338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		check_result("is_directory", cur->input, cur->output, result);
1348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
1358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
1368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic input_output<pair<string, string>, bool>
1398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddexpect_is_files_identical[] = {
1408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define MAKE_PAIR(a, b) make_pair(string(a), string(b))
1418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ MAKE_PAIR(__FILE__, __FILE__), true },
1428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ MAKE_PAIR(__FILE__, "not_existing"), false },
1438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ MAKE_PAIR("not_exisiting", __FILE__), false },
1448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ MAKE_PAIR("not_exisiting", "not_existing"), false },
1458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ MAKE_PAIR("", ""), false }
1468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#undef MAKE_PAIR
1478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
1488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddvoid is_files_identical_tests(char const * prog_name)
1508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
1518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check_result("is_files_identical", prog_name, prog_name,
1528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	             is_files_identical(prog_name, prog_name), true);
1538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	input_output<pair<string, string>, bool> const * cur;
1558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	for (cur = expect_is_files_identical; !cur->input.first.empty(); ++cur) {
1568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		bool result = is_files_identical(cur->input.first,
1578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		                                 cur->input.second);
1588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		check_result("is_files_identical", cur->input.first,
1598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		             cur->input.second, cur->output, result);
1608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
1618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
1628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic input_output<char const *, bool> expect_op_file_readable[] =
1658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
1668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ __FILE__, true },
1678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "./" __FILE__, true },
1688cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ ".", false },
1698cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/.", false },
1708cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "./", false },
1718cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "/", false },
1728cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "../", false },
1738cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "../.", false },
1748cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "non_existing_file", false },
1758cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ 0, 0 }
1768cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
1778cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1788cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void op_file_readable_tests()
1798cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
1808cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	input_output<char const *, bool> const * cur;
1818cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	for (cur = expect_op_file_readable; cur->input; ++cur) {
1828cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		bool result = op_file_readable(cur->input);
1838cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		check_result("op_file_readable", cur->input, cur->output, result);
1848cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
1858cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
1868cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1878cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
1888cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic input_output<string, string> expect_realpath[] =
1898cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
1908cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	// realpath() file argument must exists.
1918cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "file_manip_tests.o", "file_manip_tests.o" },
1928cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "../tests/" "file_manip_tests.o", "file_manip_tests.o" },
1938cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ ".//.//" "file_manip_tests.o", "file_manip_tests.o" },
1948cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	// POSIX namespaces ignored by realpath(3)
1958cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "//", "/" },
1968cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "//usr", "/usr" },
1978cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "///", "/" },
1988cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	{ "", "" }
1998cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
2008cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
2018cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
2028cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd// FIXME: useful to test symlinks too
2038cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void realpath_tests()
2048cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
2058cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	input_output<string, string> const * cur;
2068cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	for (cur = expect_realpath; !cur->input.empty(); ++cur) {
2078cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		string result = op_realpath(cur->input);
2088cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		string expect = cur->output;
2098cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		if (cur->input[0] != '/')
2108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd			expect = SRCDIR + expect;
2118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		check_result("op_realpath", cur->input,
2128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		            expect, result);
2138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
2148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
2158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
2168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
2178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddvoid create_file_list_tests()
2188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
2198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	list<string> result;
2208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	if (!create_file_list(result, ".")) {
2218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		cerr << "create_file_list() fail\n";
2228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		exit(EXIT_FAILURE);
2238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
2248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	if (result.empty()) {
2258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		cerr << "create_file_list(); empty result\n";
2268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		exit(EXIT_FAILURE);
2278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
2288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
2298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
2308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
2318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddint main(int, char * argv[])
2328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
2338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	dirname_tests();
2348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	basename_tests();
2358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	is_directory_tests();
2368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	is_files_identical_tests(argv[0]);
2378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	op_file_readable_tests();
2388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	realpath_tests();
2398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	create_file_list_tests();
2408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	return EXIT_SUCCESS;
2418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
242