diff options
author | Vicent Marti <tanoku@gmail.com> | 2011-09-28 18:57:32 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2011-09-28 18:57:32 +0200 |
commit | d02a7d833083518353ede8c940410d5229e83e48 (patch) | |
tree | 0383712b04e1352e780703c285e8d4aafa4ab143 | |
parent | 35e9407c4698080b29f2bcb3d379454bb0ae62bb (diff) | |
download | libgit2-d02a7d833083518353ede8c940410d5229e83e48.tar.gz |
Update Clay
-rwxr-xr-x | tests-clay/clay | 102 | ||||
-rw-r--r-- | tests-clay/clay.h | 37 | ||||
-rw-r--r-- | tests-clay/clay_main.c | 61 |
3 files changed, 84 insertions, 116 deletions
diff --git a/tests-clay/clay b/tests-clay/clay index a45205e9f..365027a89 100755 --- a/tests-clay/clay +++ b/tests-clay/clay @@ -4,45 +4,19 @@ from __future__ import with_statement from string import Template import re, fnmatch, os -VERSION = "0.7.0" +VERSION = "0.8.0" TEST_FUNC_REGEX = r"^(void\s+(test_%s__(\w+))\(\s*(void)?\s*\))\s*\{" -TEMPLATE_MAIN = Template( -r""" +CLAY_HEADER = """ /* - * Clay v${version} + * Clay v0.7.0 * * This is an autogenerated file. Do not modify. * To add new unit tests or suites, regenerate the whole * file with `./clay` */ - -#define clay_print(...) ${clay_print} - -${clay_library} - -${extern_declarations} - -static const struct clay_func _all_callbacks[] = { - ${test_callbacks} -}; - -static const struct clay_suite _all_suites[] = { - ${test_suites} -}; - -static const char _suites_str[] = "${suites_str}"; - -int _CC main(int argc, char *argv[]) -{ - return clay_test( - argc, argv, _suites_str, - _all_callbacks, ${cb_count}, - _all_suites, ${suite_count} - ); -} -""") +""" TEMPLATE_SUITE = Template( r""" @@ -60,7 +34,6 @@ def main(): parser = OptionParser() parser.add_option('-c', '--clay-path', dest='clay_path') - parser.add_option('-o', '--output', dest='output') parser.add_option('-v', '--report-to', dest='print_mode', default='stdout') options, args = parser.parse_args() @@ -68,14 +41,13 @@ def main(): for folder in args: builder = ClayTestBuilder(folder, clay_path = options.clay_path, - output_folder = options.output, print_mode = options.print_mode) builder.render() class ClayTestBuilder: - def __init__(self, folder_name, output_folder = None, clay_path = None, print_mode = 'stdout'): + def __init__(self, path, clay_path = None, print_mode = 'stdout'): self.declarations = [] self.callbacks = [] self.suites = [] @@ -84,22 +56,17 @@ class ClayTestBuilder: self.clay_path = os.path.abspath(clay_path) if clay_path else None self.print_mode = print_mode - folder_name = os.path.abspath(folder_name) - if not output_folder: - output_folder = folder_name - - self.output = os.path.join(output_folder, "clay_main.c") - self.output_header = os.path.join(output_folder, "clay.h") - - self.modules = ["clay.c", "clay_sandbox.c", "clay_fixtures.c", "clay_fs.c"] + self.path = os.path.abspath(path) + self.modules = ["clay_sandbox.c", "clay_fixtures.c", "clay_fs.c"] print("Loading test suites...") - for root, dirs, files in os.walk(folder_name): - module_root = root[len(folder_name):] + for root, dirs, files in os.walk(self.path): + module_root = root[len(self.path):] module_root = [c for c in module_root.split(os.sep) if c] tests_in_module = fnmatch.filter(files, "*.c") + tests_in_module.sort() for test_file in tests_in_module: full_path = os.path.join(root, test_file) @@ -113,29 +80,36 @@ class ClayTestBuilder: 'No tests found under "%s"' % folder_name) def render(self): - template = TEMPLATE_MAIN.substitute( - version = VERSION, - clay_print = self._get_print_method(), - clay_library = self._get_library(), - extern_declarations = "\n".join(self.declarations), + main_file = os.path.join(self.path, 'clay_main.c') + with open(main_file, "w") as out: + template = Template(self._load_file('clay.c')) + + output = template.substitute( + clay_print = self._get_print_method(), + clay_modules = self._get_modules(), - suites_str = ", ".join(self.suite_list), + suites_str = ", ".join(self.suite_list), - test_callbacks = ",\n\t".join(self.callbacks), - cb_count = len(self.callbacks), + test_callbacks = ",\n\t".join(self.callbacks), + cb_count = len(self.callbacks), - test_suites = ",\n\t".join(self.suites), - suite_count = len(self.suites), - ) + test_suites = ",\n\t".join(self.suites), + suite_count = len(self.suites), + ) + + out.write(output) - with open(self.output, "w") as out: - out.write(template) + header_file = os.path.join(self.path, 'clay.h') + with open(header_file, "w") as out: + template = Template(self._load_file('clay.h')) + + output = template.substitute( + extern_declarations = "\n".join(self.declarations), + ) - with open(self.output_header, "w") as out: - out.write(self._load_file('clay.h')) + out.write(output) - print ('Written test suite to "%s"' % self.output) - print ('Written header to "%s"' % self.output_header) + print ('Written Clay suite to "%s"' % self.path) ##################################################### # Internal methods @@ -166,7 +140,7 @@ class ClayTestBuilder: content = base64.b64decode(content) return zlib.decompress(content) - def _get_library(self): + def _get_modules(self): return "\n".join(self._load_file(f) for f in self.modules) def _parse_comment(self, comment): @@ -217,11 +191,11 @@ class ClayTestBuilder: print(" %s (%d tests)" % (clean_name, len(callbacks))) CLAY_FILES = { -"clay.c" : r"""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""", -"clay_sandbox.c" : r"""eJyNVe9v2jAQ/Zz8FVcqlaTQkm7Vpon1w6R2ExorCKhaqUVRmjjFauIg27DRiv99ZzuQH9BuCIkod7577909I2QgaQjhLODgh0mw8ueBnN2fe18+Tbu2LUyYMmlT4S+DhEa+TOc6yQkzJqQ5eqxeuParbY0n3yb+BITE0xaNwVElHBVuw5GQLhxcgOfalsWJXHAG3ibvYOz3xpe9ER44FdJPs4i49bz82QnCkAiRV731Bz9duFBlu/a6gjmmrIxXI31cxDHhbRD0hfgSEsKecuj5QUMrDy8D7ofZgkm4gPNuLccUJGyJynBxP8UcLGM1Jr+GSKTRBvWkf67M7834ajQcDb73+lcNG6w1cjqkcURi8G971x8/GCV+EDkh6XyoMDuXt4PRpWtQtsGAr+lySBJBsFwOmSql4oyDQxGQ1wUKXwseXWi1qKtx1khg8hOR+OBsGdEpSmqZ8eBL1VadkpQtiOqiI7uLoVJNC9SLs3C+cjaqY6i90VyVLtGwrLWNX9vqHEMvBjkjKpvyjKUE9Y8yIlgTBxOsIGArOaPsqQ2Sr0BmsBAEOtgfjjv2G6AaKt7IcdVhmWAFWQnYGiVmEY0NtsmMChArIUm6BZXQZ4IgKngUgXDBuQZPOQllhsF3AJ6+ie70HWhbV5ycldd/mdEItKEXTAQsesz+OOqd3nQFoOR2b6rs03zwmsVi7a5mOEMWiBJhdgtBYuHztFSs7kFcWZpEfg7BMN3iKG2gCvgyoIm2UUPXU9Lc6U9DWW9r2M2VUbV3gcGYO4vLsFw0QfneUWrZFhbDbqg3PlRJ1Nm/Ao6eZTzFob0QDVcNejgY9+4A3fY74BGIJBAzIvSQS3a0duyoSBRGrM+D5vN40POwrFoImp3m1i7bQdRqKGYncDZV9y3mm0bVeKtVFFN7tFm7IgtaCmm7GM4+ZbENJu2RTCNKn9Enc1/8czy1/wU1H3Ox6TqmTKUtSnR90+/vnMn1KExS3Udd4f8dAUdH+1Z4/zoZpMomZbbeZ8/by88cML4qM9ubWuHzF4WiW5U=""", +"clay.c" : r"""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""", +"clay_sandbox.c" : r"""eJyNVe9v2jAQ/Zz8FVcqlaTQkm7Vpon1w7R2E1pbENC1UousNHGKtcRBsWGjFf/7znYgP6DdEBJR7nz33rt7RkhfsgCCqZ8BCWJ/SWa+nN6fep8+TLq2LUyYcWkzQRZ+zEIik5lOcoKUC2mOHqoXrv1iW6PxlzEZg5B42mIROKqEo8JtOBDShb0z8FzbsjIq5xkHb523NyK90XlviAeOhSRJGlK3npc/O34QUCHyqrek/8OFM1W2a68qmCPGy3g10sd5FNGsDYI9UyIhpvwph54fNLTy8MLPSJDOuYQzOO3WckxByheoTCbuJ5iDZazG+GqARBptUE/658L83owuhoNh/1vv8qJhg7VCTvssCmkE5LZ3/f6dUeI7lWOazAYKs3N+2x+euwZlGwz4mi77NBYUy+WQmVIqSjNwGALyusDgc8GjC60WczXOGglMfqISH5wNIzZBSS0zHnyp2qpTkvE5VV10ZHsxVKppgXplPJgtnbXqGGqvNVelSzQsa2Xj17Y6h9CLQE6pymZZyhOK+ocpFbyJg/GX4POlnDL+1AaZLUGmMBcUOtgfDjv2K6AaKt7IcdVhmWAFWQnYCiXmIYsMtvGUCRBLIWmyARWzXxRBVPAoAsE8yzR4ltFAphh8A+Dxq+iO34C2ccXRSXn9FykLQRt6zoXPw8f0j6Pe6U1XAEpu9ybKPs0Hr1ks1vZqBlNkgSgRZrcQJBIkS0rF6h7ElWVxSHIIhukGR2kDVYBIn8XaRg1dT0lzpz8NZb2NYddXRtXeBQZj7jQqw3LRBOV7R6llW1gMu6He+FAlUWf/Ajh6nmYJDu2Zarhq0IP+qHcH6LbffhaCiH0xpUIPuWRHa8uOikRhxPo8WD6PBz0Py6qFoNlpbuyyGUSthmJ2BCcTdd9ivmlUjbdaRTG1R+u1K7KgpZC2i+HsUhbbYFJZsqvRV/LzYphjSn6hU2ZE/HNAtX8GNSFztek6pkylMYp0fXN5uXUmV6SwSXUjdYX/9wQcHOxa4t0LZZAqo5TZeh89byc/c8A4q8xsZ2qFz1+bVFxx""", "clay_fixtures.c" : r"""eJyFUV1LwzAUfW5+xZU9rLUVJ4ggZQ9DFAUfRCZMRglZmrBAl5Qkk03xv9v0a82U+Zabc+45595rLLGCAlXSWKBrouEccbGzW81wSew6HCIrYljicTuqJBsWoS8UmFbPobXA8npye5OlFSI+GbaglbK4YDJFKOjeMAVjdfUInUPkyFZLWu7DWiKBxtgpKN78RZETEByactlLXcBVBmdTGF+OIxQEPhrHGdRQ1zzMv5xUYN84ROLY8b1MEPeTJEdsV3tRq0wdt06tWcWVzXpS9I3QSPCccbh7nr3jh6fF/O31Hr/M5o9ouGpa4NYlPHmBVt074i/lBLy+OsWHEjkcXLAhMl+p3Wk3bjBV1VIG6TxOApgWZN8s4k8bWjAit+W/NnoTejMddI+GqW1GTOaCox8pOffr""", "clay_fs.c" : r"""eJylVdtu20YQfSa/YkAD8TKWY8dJX6L0wXDEVqgsBhINN7UFhiGX1qIkl9hd+dLG/57ZCynJUWEkfZE0s7NnZufMGe2xsqAlpJfj6ZsT399DgzUUojhKo8npb3Mg+ud8PBlNE/hq/NP4LJ5G49n5aTKOp71zNJvFs4vx06DzPz6MZ6HvS5UplkO+zAS89EtWUd7KtM3UkuS8kcqdGE/o/+t71tYm/ArTi8lk6HuS/UNTBRVtbtRyAGzo+x4rgaQ2zMaFvucJqlaicdd8z15AHKkE/rbxIQI6+DqrKp4TF3YAJ2GH/AxwTeu8fTBRA0jtl0Xp0K+sucAsx9suzPPauX2v5AIIMxYweO9AhnBwwELAbvTFXLGFrmf/aF+X4/Uu2L++3scEjwjmitRnQ/+x7/0tZ0XXecIaBTUv6AC22i/5SuRPnQWVynAy/z3CSYg/zpPZxVkCJQLp4m2YvYqVbJHrEHU7bJgG+y7IZNBQf1HBz2nNxQN5oeEHoDnnJdlOHYa2aa18dRetmlxziI8ZOl8bCV5ruk3u3ptw9OlUnaeMquxGorOfd/OcKs2kpEKlBFuMibHUuKUCm8gbW1aoOTge4HFwyZqC30l4EgdlhmYR+J4tVVBK1q0wpnv0U4JkKmqygxTDQEdfFKcfRpNRMsKx6zgzM7oLL+c4oz9A80aSs/jjp40U6bpmA46t0vgVzZpVS7TLApg3lOwe55A6ivMqe3AKCV4GoQXZo5WkXbk4kr5c0qpK+UoRW5SrMBM3t1cLg60HV19YSS0nVuA+wE/dY/zSg8XF32StX/S9h2OrobIVeLskUhVUCM2eF8wfpKI1oM3FO/hsb3+GHDeCo/DVdRNozjx6zxQ5fB06lXXwehIsPr2n+S0xtR4vBqboLvguYwqD9YUBvLD1D/DesFfr5ejPcTJPTpOLObHn/4PLnkprmpJ+WQy3pbpeqNZOcenovvVCxm1ZIK0bEl4Hrpdpf2pbYs2rjchDs+f6nfVfAXYRuu6hGRx9Yc1R3gZD5zVBweGsd5wsNjVuXG+0y81O6KRuDt4u+r8Ro/B6JRWOo5RG5OuxM6QZYUeGfVAcdM9B6b3lRlpqr8ya4gu/363wZ0W9oekNjt4udvVA1N/1oNxuQvfiHc342TdbTYNa0u2XPiN9I/NV464Qs/e1a8PxiLJvClb63wD3Q6FA""", -"clay.h" : r"""eJy9VF1v2jAUfW5+xR15IVFU2GvXVkIVqEiomjaqbU+WcW6KtWBntrOyfz/bCR8JpFn3wBPmxsfn3HuOHfJMpJgBIQ+LyQ+ynH5dkkdCgtAWucCTehBywfIyRbjVJs356np9HwS/JU+B5fQPIVRrVGYYXHFhgEmRcsOlSIIru9a2sqYK4oznmFRbcsvS+opKSdWqpaiZ4kV9lgPqtSzzlNCVVCb6tNdANBrCcqSiLIa+Nozrv1H1P44SqBayoL9KtOAdNtMNqDs25Jmbj5/CbP59+fxlSj5Plo/BsToH5VtTKhw22/Q1IuimwVKXNRXpSm7fA9mpewMSop15FgSjOA4ghon3w44NNpQpqeGVmzXgtsg54wb8rGGDWtMXtPtHe+ct66bUhhTWUTK0AJWAcyFqGu2/RHB/B+PEpmU2X0wJcavF/MmvBrNSMC+A0TyHjFrv0xsYQHg4M4GP0Qmx29lPfNvJO90WyAymkDUEGOk19CioSPrpP3T3bfmVnasj5hqENGBUied4d149rJH9/A+fmMNdyKhxdMp8YafOSbiAUeOo51IJ+Y/XqZbUvGFVMYGn58Xi/GVowaqpd8Lq9veYXaKbgO7o9XVzCN2B4ziIncIOmWkDezrym9qYdj+7hmZSMZcoe6R9HEevVAkuXtpNeBVnQtMVlSXaZ7e6GdeD8y9HzfSeU79VEEhL5X6MI8EtstJF7GZwHMD6df8LLiKMPg==""" +"clay.h" : r"""eJy9Vctu2zAQPEdfsbV6sAQhTq9pGsAIbMSAERStg7YngqZWEVGZVEmqcVH030NSfkm2qqYHn0wtOTuzu0M65JlIMQNC7ubjb2Qx+bwg94QEoQ1ygUfxIOSCFVWKcKNNWvDlZX4bBD8lT4EV9BchVGtUZhhccGGASZFyw6VIggu71jaSUwVxxgtM6iOFZWntolJStWIpaqZ4ucnlgDqXVZESupTKRO93GohGQ1iBVFTl0MeG8eYzqr/jKIF6IUv6o0IL3mIz3YC6tCHPXH98F6azr4vHTxPycby4Dw7VOShfm0rhsFmmjxFBVw2WTVhTkS7l+jWQrbq/QEK0Pc+CYBTHAcQw9vOwbYMVZUpqeOYmB1yXBWfcgO81rFBr+oT2/Gg3ecu6qrQhpZ0oGVqASsBNIWoO2u9EcPsBrhLrlulsPiHEreazB78aTCvBvABGiwIyamefXsMAwn3OBN5FR8TuZD/xTSfvZF0iM5hC1hBgpNfQo6Am6ad/01235Ve2r46YaxDSgFEVnuLdzuouR/b9P+bEHO5Mg7qKjpnPPKlTEs4wqKuo51IJ+Y/XaSOpecPqYAIPj/P56cvQgtVd74Rtyt9hto5uArqt11fN3nR7jkMjdgrbe6YN7KnIH2pjOuqZSsWcoWxG+zaOnqkSXDy1a/AiTnimyykLtK9ufTEuB6cfjg3Ta7J+qSGQVsr9GEeCa2SVc9j14IT/vI4VmlymdtOSKOrOal/f29+4NqgEOdz5E2z/GF4ABeagMA==""" } if __name__ == '__main__': diff --git a/tests-clay/clay.h b/tests-clay/clay.h index db6f05425..e77a647b3 100644 --- a/tests-clay/clay.h +++ b/tests-clay/clay.h @@ -48,11 +48,46 @@ void cl_fixture_cleanup(const char *fixture_name); #define cl_check_fail(expr) cl_check_fail_((expr), NULL) #define cl_check(expr) cl_check_((expr), NULL) - /** * Forced failure/warning */ #define cl_fail(desc) clay__assert(0, __FILE__, __LINE__, "Test failed.", desc, 1) #define cl_warning(desc) clay__assert(0, __FILE__, __LINE__, "Warning during test execution:", desc, 0) +/** + * Test method declarations + */ +extern void test_core_dirent__dont_traverse_dot(void); +extern void test_core_dirent__traverse_subfolder(void); +extern void test_core_dirent__traverse_slash_terminated_folder(void); +extern void test_core_dirent__dont_traverse_empty_folders(void); +extern void test_core_dirent__traverse_weird_filenames(void); +extern void test_core_filebuf__0(void); +extern void test_core_filebuf__1(void); +extern void test_core_filebuf__2(void); +extern void test_core_path__0(void); +extern void test_core_path__1(void); +extern void test_core_path__2(void); +extern void test_core_path__5(void); +extern void test_core_path__6(void); +extern void test_core_rmdir__initialize(void); +extern void test_core_rmdir__delete_recursive(void); +extern void test_core_rmdir__fail_to_delete_non_empty_dir(void); +extern void test_core_string__0(void); +extern void test_core_string__1(void); +extern void test_core_vector__0(void); +extern void test_core_vector__1(void); +extern void test_core_vector__2(void); +extern void test_network_remotes__initialize(void); +extern void test_network_remotes__cleanup(void); +extern void test_network_remotes__parsing(void); +extern void test_network_remotes__refspec_parsing(void); +extern void test_network_remotes__fnmatch(void); +extern void test_network_remotes__transform(void); +extern void test_status_single__hash_single_file(void); +extern void test_status_worktree__initialize(void); +extern void test_status_worktree__cleanup(void); +extern void test_status_worktree__whole_repository(void); +extern void test_status_worktree__empty_repository(void); + #endif diff --git a/tests-clay/clay_main.c b/tests-clay/clay_main.c index 25342e7ee..602ca1c63 100644 --- a/tests-clay/clay_main.c +++ b/tests-clay/clay_main.c @@ -1,14 +1,3 @@ - -/* - * Clay v0.7.0 - * - * This is an autogenerated file. Do not modify. - * To add new unit tests or suites, regenerate the whole - * file with `./clay` - */ - -#define clay_print(...) printf(__VA_ARGS__) - #include <assert.h> #include <setjmp.h> #include <stdlib.h> @@ -20,6 +9,8 @@ #include <sys/types.h> #include <sys/stat.h> +#define clay_print(...) printf(__VA_ARGS__) + #ifdef _WIN32 # include <windows.h> # include <io.h> @@ -27,7 +18,7 @@ # include <direct.h> # pragma comment(lib, "shell32") -# define _CC __cdecl +# define _MAIN_CC __cdecl # define stat(path, st) _stat(path, st) # define mkdir(path, mode) _mkdir(path) @@ -42,8 +33,9 @@ # endif typedef struct _stat STAT_T; #else +# include <sys/wait.h> /* waitpid(2) */ # include <unistd.h> -# define _CC +# define _MAIN_CC typedef struct stat STAT_T; #endif @@ -455,8 +447,11 @@ static int build_sandbox_path(void) #ifdef _MSC_VER if (_mktemp_s(_clay_path, sizeof(_clay_path)) != 0) return -1; + + if (mkdir(_clay_path, 0700) != 0) + return -1; #else - if (mktemp(_clay_path) == NULL) + if (mkdtemp(_clay_path) == NULL) return -1; #endif @@ -468,9 +463,6 @@ static int clay_sandbox(void) if (_clay_path[0] == '\0' && build_sandbox_path() < 0) return -1; - if (mkdir(_clay_path, 0700) != 0) - return -1; - if (chdir(_clay_path) != 0) return -1; @@ -665,39 +657,6 @@ cl_fs_cleanup(void) #endif -extern void test_core_dirent__dont_traverse_dot(void); -extern void test_core_dirent__traverse_subfolder(void); -extern void test_core_dirent__traverse_slash_terminated_folder(void); -extern void test_core_dirent__dont_traverse_empty_folders(void); -extern void test_core_dirent__traverse_weird_filenames(void); -extern void test_core_filebuf__0(void); -extern void test_core_filebuf__1(void); -extern void test_core_filebuf__2(void); -extern void test_core_path__0(void); -extern void test_core_path__1(void); -extern void test_core_path__2(void); -extern void test_core_path__5(void); -extern void test_core_path__6(void); -extern void test_core_rmdir__initialize(void); -extern void test_core_rmdir__delete_recursive(void); -extern void test_core_rmdir__fail_to_delete_non_empty_dir(void); -extern void test_core_string__0(void); -extern void test_core_string__1(void); -extern void test_core_vector__0(void); -extern void test_core_vector__1(void); -extern void test_core_vector__2(void); -extern void test_network_remotes__initialize(void); -extern void test_network_remotes__cleanup(void); -extern void test_network_remotes__parsing(void); -extern void test_network_remotes__refspec_parsing(void); -extern void test_network_remotes__fnmatch(void); -extern void test_network_remotes__transform(void); -extern void test_status_single__hash_single_file(void); -extern void test_status_worktree__initialize(void); -extern void test_status_worktree__cleanup(void); -extern void test_status_worktree__whole_repository(void); -extern void test_status_worktree__empty_repository(void); - static const struct clay_func _all_callbacks[] = { {"dont_traverse_dot", &test_core_dirent__dont_traverse_dot, 0}, {"traverse_subfolder", &test_core_dirent__traverse_subfolder, 0}, @@ -787,7 +746,7 @@ static const struct clay_suite _all_suites[] = { static const char _suites_str[] = "core::dirent, core::filebuf, core::path, core::rmdir, core::string, core::vector, network::remotes, status::single, status::worktree"; -int _CC main(int argc, char *argv[]) +int _MAIN_CC main(int argc, char *argv[]) { return clay_test( argc, argv, _suites_str, |