From fb7ee36485d61a3fdbcac8d85fd032201df4e581 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Sun, 31 Jan 2021 03:26:19 +0100 Subject: Fixing compilation on linux --- .gitignore | 1 + Makefile | 4 +- README.md | 8 +-- generate | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ generate.py | 193 --------------------------------------------------------- generated.c | 200 ++++++++++++++++++++++++++++++------------------------------ header.h | 32 +++++----- main.c | 19 +++++- prettier.py | 4 +- 9 files changed, 342 insertions(+), 318 deletions(-) create mode 100755 generate delete mode 100644 generate.py diff --git a/.gitignore b/.gitignore index 40af2e8..0d0aca0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ check_leaks *.dSYM result.log generated.c +tags diff --git a/Makefile b/Makefile index ff9ca50..1126915 100644 --- a/Makefile +++ b/Makefile @@ -6,14 +6,14 @@ # By: cacharle +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/02/06 18:13:15 by cacharle #+# #+# # -# Updated: 2020/04/02 20:50:47 by charles ### ########.fr # +# Updated: 2021/01/31 03:25:48 by charles ### ########.fr # # # # **************************************************************************** # FT_PRINTF_PATH = ../ft_printf CC = gcc -CCFLAGS = -Wall -Wextra -Wno-trigraphs +CCFLAGS = -Wall -Wextra -Wno-trigraphs # Adding -std=c99 causes crash LDFLAGS = -L$(FT_PRINTF_PATH) -lftprintf NAME = ft_printf_test diff --git a/README.md b/README.md index 3bde892..f77a208 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # ft_printf test -Unit test for the ft_printf project of 42 school. +Unit test for the ft\_printf project of 42 school. -![example_screenshot](./screenshot.png) +![screenshot](./screenshot.png) ## Usage @@ -32,8 +32,8 @@ to `make fclean` in order to clean the previous .o files. It will generate random test according to the `-Wformat` flag of gcc. -- `> python3 generate.py -n [number of tests]`: generate n test -- `> python3 generate.py -h`: show all available options +- `> ./generate -n [number of tests]`: generate n test +- `> ./generate -h`: show all available options ### Bonus diff --git a/generate b/generate new file mode 100755 index 0000000..6a01773 --- /dev/null +++ b/generate @@ -0,0 +1,199 @@ +#!/usr/bin/env python3 + +# **************************************************************************** # +# # +# ::: :::::::: # +# generate.py :+: :+: :+: # +# +:+ +:+ +:+ # +# By: cacharle +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2020/02/06 18:13:26 by cacharle #+# #+# # +# Updated: 2020/02/06 19:36:46 by cacharle ### ########.fr # +# # +# **************************************************************************** # + +import os +import sys +import argparse +import string +from random import randrange, choice + + +INT_MIN = -2147483648 +INT_MAX = 2147483647 +UINT_MAX = 4294967295 +CHAR_MIN = -128 +CHAR_MAX = 127 +ULONG_INT_MAX = 18446744073709551616 + +CHARS = ( + list(string.ascii_lowercase) + + list(string.ascii_uppercase) + + list(string.punctuation) + + list(string.digits) +) +CHARS.remove("\"") +CHARS.remove("\\") +CHARS.extend([r"\t", r"\n", r"\r", r"\v", r"\f", "\\\\"]) + + +def parse_args(): + parser = argparse.ArgumentParser(prog="ft_printf_test generator", description="A random test generator") + parser.add_argument("-n", "--tests", type=int, default=100, help="number of tests to generate") + parser.add_argument("-c", "--check-gcc", action="store_true", help="check generated test is valid with gcc (slow)") + parser.add_argument("-o", "--output", default="generated.c", help="output file") + parser.add_argument("-a", "--args-max", default=5, type=int, help="maximum number of argument") + parser.add_argument("-f", "--flags-max", default=3, type=int, help="maximum number of flags") + parser.add_argument("-s", "--str-max", default=30, type=int, help="maximum length of string") + parser.add_argument("--bonus", action="store_true", help="generate with bonus flags") + return vars(parser.parse_args(sys.argv[1:])) + + +class Generator: + def __init__(self, options): + self.test_nb = options["tests"] + self.check_valid = options["check_gcc"] + self.output_filename = options["output"] + self.output_file = None + self.tmp_filename = "tmp.c" + self.args_max = options["args_max"] + self.flags_max = options["flags_max"] + self.str_max_len = options["str_max"] + self.width_max = 200 + self.width_wildcard_rate = 10 + self.width_empty_rate = 2 + self.precision_max = 200 + self.precision_wildcard_rate = 10 + self.precision_empty_rate = 2 + self.precision_point_rate = 4 + self.possible_conv = "diuxXcsp%" + if options["bonus"]: + self.possible_flags = "#0- +'" + else: + self.possible_flags = "0-" + self.possible_conv_len = len(self.possible_conv) + self.pool = [] + + def run(self): + if self.check_valid: + os.system("touch {}".format(self.tmp_filename)) + with open(self.output_filename, "w") as self.output_file: + self._write_header() + while self.test_nb > 0: + assert_printf = self._gen_printf() + if self.check_valid and not self._compile(assert_printf): + print("Failed to generate:", assert_printf) + continue + self.test_nb -= 1 + self.output_file.write(assert_printf + "\n\t") + print("Generated", self.test_nb) + self._write_footer() + if self.check_valid: + os.system("rm {}".format(self.tmp_filename)) + + def _compile(self, assert_printf): + with open(self.tmp_filename, "w") as tmp_file: + tmp_file.write("#include \n#include \"header.h\"\nvoid t (){") + tmp_file.write(assert_printf + "}") + return os.system("gcc -c -Wformat -Werror tmp.c > /dev/null 2>&1") == 0 + + def _gen_printf(self): + formats, args = self._printf_args() + args_str = "".join(["," + str(a) for a in args if a is not None]) + return "ASSERT_PRINTF(\"{}\" {});".format(''.join(formats), args_str) + + def _printf_args(self): + args = [] + formats = [] + for _ in range(randrange(1, self.args_max + 1)): + conv = self.possible_conv[randrange(self.possible_conv_len)] + f = self._fmt(conv) + for _ in range(f.count("*")): + args.append(randrange(-200, 200)) + formats.append(f) + a = self._arg(conv) + if a == "\"NULL\"": + a = "NULL" + args.append(a) + return formats, args + + def _fmt(self, conv): + return "%" + self._flags(conv) + self._width() + self._precision(conv) + conv + + def _arg(self, conv): + return { + 'c': randrange(CHAR_MIN, CHAR_MAX + 1), + 's': "\"" + self._gen_string() + "\"", + 'd': randrange(INT_MIN, INT_MAX + 1), + 'i': randrange(INT_MIN, INT_MAX + 1), + 'u': str(randrange(UINT_MAX)) + "u", + 'x': str(randrange(UINT_MAX)) + "u", + 'X': str(randrange(UINT_MAX)) + "u", + 'p': "(void*)" + str(randrange(ULONG_INT_MAX)) + "lu", + '%': None + }[conv] + + def _flags(self, conv): + return self._filter_flags( + "".join([choice(self.possible_flags) + for _ in range(randrange(1, self.flags_max + 1))]), + conv + ) + + def _filter_flags(self, flags, conv): + if "+" in flags and conv in "psxXcu": + flags = flags.replace("+", "") + if " " in flags and conv in "pcsuxX": + flags = flags.replace(" ", "") + if "0" in flags and conv in "pcs": + flags = flags.replace("0", "") + if "#" in flags and conv in "upcsdi": + flags = flags.replace("#", "") + if "'" in flags and conv not in "diu": + flags = flags.replace("'", "") + + if "0" in flags and "-" in flags: + flags = flags.replace("0", "") + if " " in flags and "+" in flags: + flags = flags.replace(" ", "") + return flags + + def _width(self): + p = randrange(100) + if p < self.width_wildcard_rate: + return "*" + p -= self.width_wildcard_rate + if p < self.width_empty_rate: + return "" + return str(randrange(1, self.width_max)) + + def _precision(self, conv): + if conv == "p" or conv == "c": + return "" + p = randrange(100) + if p < self.precision_wildcard_rate: + return ".*" + p -= self.precision_wildcard_rate + if p < self.precision_empty_rate: + return "" + p -= self.precision_empty_rate + if p < self.precision_point_rate: + return "." + return "." + str(randrange(self.precision_max)) + + def _gen_string(self): + if randrange(100) < 5: + return "NULL" + return "".join([choice(CHARS) for _ in range(randrange(self.str_max_len))]) + + def _write_header(self): + self.output_file.write("#include \"header.h\"\n\nvoid generated_test(void)\n{\n\t") + + def _write_footer(self): + self.output_file.write("}\n") + + +if __name__ == "__main__": + options = parse_args() + g = Generator(options) + g.run() diff --git a/generate.py b/generate.py deleted file mode 100644 index ba3b7d1..0000000 --- a/generate.py +++ /dev/null @@ -1,193 +0,0 @@ -# **************************************************************************** # -# # -# ::: :::::::: # -# generate.py :+: :+: :+: # -# +:+ +:+ +:+ # -# By: cacharle +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2020/02/06 18:13:26 by cacharle #+# #+# # -# Updated: 2020/02/06 19:36:46 by cacharle ### ########.fr # -# # -# **************************************************************************** # - -import os -import sys -import argparse -import string -import subprocess -from random import randrange, choice, shuffle - - -INT_MIN = -2147483648 -INT_MAX = 2147483647 -UINT_MAX = 4294967295 -CHAR_MIN = -128 -CHAR_MAX = 127 -ULONG_INT_MAX = 18446744073709551616 - -CHARS = (list(string.ascii_lowercase) + list(string.ascii_uppercase) - + list(string.punctuation) + list(string.digits)) -CHARS.remove("\"") -CHARS.remove("\\") -CHARS.extend([r"\t", r"\n", r"\r", r"\v", r"\f", "\\\\"]) - - -def parse_args(): - parser = argparse.ArgumentParser(prog="ft_printf_test generator", description="A random test generator") - parser.add_argument("-n", "--tests", type=int, default=100, help="number of tests to generate") - parser.add_argument("-c", "--check-gcc", action="store_true", help="check generated test is valid with gcc (slow)") - parser.add_argument("-o", "--output", default="generated.c", help="output file") - parser.add_argument("-a", "--args-max", default=5, type=int, help="maximum number of argument") - parser.add_argument("-f", "--flags-max", default=3, type=int, help="maximum number of flags") - parser.add_argument("-s", "--str-max", default=30, type=int, help="maximum length of string") - parser.add_argument("--bonus", action="store_true", help="generate with bonus flags") - return vars(parser.parse_args(sys.argv[1:])) - - -class Generator: - def __init__(self, options): - self.test_nb = options["tests"] - self.check_valid = options["check_gcc"] - self.output_filename = options["output"] - self.output_file = None - self.tmp_filename = "tmp.c" - self.args_max = options["args_max"] - self.flags_max = options["flags_max"] - self.str_max_len = options["str_max"] - self.width_max = 200 - self.width_wildcard_rate = 10 - self.width_empty_rate = 2 - self.precision_max = 200 - self.precision_wildcard_rate = 10 - self.precision_empty_rate = 2 - self.precision_point_rate = 4 - self.possible_conv ="diuxXcsp%" - if options["bonus"]: - self.possible_flags = "#0- +'" - else: - self.possible_flags = "0-" - self.possible_conv_len = len(self.possible_conv) - self.pool = [] - - def run(self): - if self.check_valid: - os.system("touch {}".format(self.tmp_filename)) - with open(self.output_filename, "w") as self.output_file: - self._write_header() - while self.test_nb > 0: - assert_printf = self._gen_printf() - if self.check_valid and not self._compile(assert_printf): - print("Failed to generate:", assert_printf) - continue - self.test_nb -= 1 - self.output_file.write(assert_printf + "\n\t") - print("Generated", self.test_nb) - self._write_footer() - if self.check_valid: - os.system("rm {}".format(self.tmp_filename)) - - def _compile(self, assert_printf): - with open(self.tmp_filename, "w") as tmp_file: - tmp_file.write("#include \n#include \"header.h\"\nvoid t (){") - tmp_file.write(assert_printf + "}") - return os.system("gcc -c -Wformat -Werror tmp.c > /dev/null 2>&1") == 0 - - def _gen_printf(self): - formats, args = self._printf_args() - args_str = "".join(["," + str(a) for a in args if a is not None]) - return "ASSERT_PRINTF(\"{}\" {});".format(''.join(formats), args_str) - - def _printf_args(self): - args = [] - formats = [] - for _ in range(randrange(1, self.args_max + 1)): - conv = self.possible_conv[randrange(self.possible_conv_len)] - f = self._fmt(conv) - for _ in range(f.count("*")): - args.append(randrange(-200, 200)) - formats.append(f) - a = self._arg(conv) - if a == "\"NULL\"": - a = "NULL" - args.append(a) - return formats, args - - def _fmt(self, conv): - return "%" + self._flags(conv) + self._width() + self._precision(conv) + conv - - def _arg(self, conv): - return { - 'c': randrange(CHAR_MIN, CHAR_MAX + 1), - 's': "\"" + self._gen_string() + "\"", - 'd': randrange(INT_MIN, INT_MAX + 1), - 'i': randrange(INT_MIN, INT_MAX + 1), - 'u': str(randrange(UINT_MAX)) + "u", - 'x': str(randrange(UINT_MAX)) + "u", - 'X': str(randrange(UINT_MAX)) + "u", - 'p': "(void*)" + str(randrange(ULONG_INT_MAX)) + "lu", - '%': None - }[conv] - - def _flags(self, conv): - return self._filter_flags( - "".join([choice(self.possible_flags) - for _ in range(randrange(1, self.flags_max + 1))]), - conv - ) - - def _filter_flags(self, flags, conv): - if "+" in flags and conv in "psxXcu": - flags = flags.replace("+", "") - if " " in flags and conv in "pcsuxX": - flags = flags.replace(" ", "") - if "0" in flags and conv in "pcs": - flags = flags.replace("0", "") - if "#" in flags and conv in "upcsdi": - flags = flags.replace("#", "") - if "'" in flags and conv not in "diu": - flags = flags.replace("'", "") - - if "0" in flags and "-" in flags: - flags = flags.replace("0", "") - if " " in flags and "+" in flags: - flags = flags.replace(" ", "") - return flags - - def _width(self): - p = randrange(100) - if p < self.width_wildcard_rate: - return "*" - p -= self.width_wildcard_rate - if p < self.width_empty_rate: - return "" - return str(randrange(1, self.width_max)) - - def _precision(self, conv): - if conv == "p" or conv == "c": - return "" - p = randrange(100) - if p < self.precision_wildcard_rate: - return ".*" - p -= self.precision_wildcard_rate - if p < self.precision_empty_rate: - return "" - p -= self.precision_empty_rate - if p < self.precision_point_rate: - return "." - return "." + str(randrange(self.precision_max)) - - def _gen_string(self): - if randrange(100) < 5: - return "NULL" - return "".join([choice(CHARS) for _ in range(randrange(self.str_max_len))]) - - def _write_header(self): - self.output_file.write("#include \"header.h\"\n\nvoid generated_test(void)\n{\n\t") - - def _write_footer(self): - self.output_file.write("}\n") - -if __name__ == "__main__": - options = parse_args() - g = Generator(options) - g.run() diff --git a/generated.c b/generated.c index bc98154..a2bac4a 100644 --- a/generated.c +++ b/generated.c @@ -2,104 +2,104 @@ void generated_test(void) { - ASSERT_PRINTF("%--87.48u%---86.89d%--*.171i" ,575753980u,-1706753103,-61,-1026886559); - ASSERT_PRINTF("%53c%0189.51d%-103.21d%*p%102c" ,-27,231647176,-1119242596,-94,(void*)17541392615378030860lu,80); - ASSERT_PRINTF("%-119.98X%--*.57i" ,3622566783u,-40,1402091020); - ASSERT_PRINTF("%-49.148X%-144c%---47.*x%-140.*X%-115.118s" ,1788014179u,-42,-140,1771987060u,-145,3144147879u,"H\vYsk&|8>-[gth=Kx5_0Qr`*vE@c\fN",4236150522u); - ASSERT_PRINTF("%-144.75d%--78.X%-190p%00041.*x%-23.70%" ,-265040099,1164608268u,(void*)17615309680892657552lu,106,3685356723u); - ASSERT_PRINTF("%--162.153s" ,"R5lGI]=d)JsY%"); - ASSERT_PRINTF("%-84p" ,(void*)4775667885626284982lu); - ASSERT_PRINTF("%0120.60i%--186c%23.91s" ,66904061,123,"+5sL\fbw~DLaeBVx~"); - ASSERT_PRINTF("%--3p%-149.169X" ,(void*)2930828309239637750lu,2340073959u); - ASSERT_PRINTF("%-44.191X%-36.29%%41p%-138c%00052.150X" ,1190215424u,(void*)3018354647187363245lu,46,1472975837u); - ASSERT_PRINTF("%-166.189X%-26.100%" ,207473590u); - ASSERT_PRINTF("%-153.61d%0105.36i%-77.70u%-80p" ,1957997024,1534377111,2603846243u,(void*)17500981794874329626lu); - ASSERT_PRINTF("%-70p%--20p" ,(void*)722858610728296101lu,(void*)4519852823670228835lu); - ASSERT_PRINTF("%---118.103i%--28.47u%88.166s%0123i" ,-704112513,3545495823u,"CUX`\\o",-1784647328); - ASSERT_PRINTF("%-96.78u%32s" ,3598761892u,"^\vHgagCH)m{hy[Q"); - ASSERT_PRINTF("%0196.169i%-32c" ,1040966160,53); - ASSERT_PRINTF("%-c%-32.61i%-78.13s" ,-70,-739803298,"sholGoP@h9#T#PjVsCF+Fx",(void*)604898635787958238lu,27,1458757178,209663612); - ASSERT_PRINTF("%-15.28X%157c%--35.189u%100.62s" ,2052648042u,9,1026341267u,"Cf\t3!DOK[M/t1>t1jC=tLBN:~c"); - ASSERT_PRINTF("%---*c%-14.111u" ,73,72,2447307730u); - ASSERT_PRINTF("%--*.18u%-85c%189.170s%150c%-141.*i" ,143,1032677539u,69,"H.\ni-k",-125,32,-645299566); - ASSERT_PRINTF("%-197p%03.35d%-101.10%" ,(void*)16358200459980665292lu,1110276224); - ASSERT_PRINTF("%00144.60X%--160.157%" ,132210504u); - ASSERT_PRINTF("%0135.*%%--39c%095.16i%0120.39x%8.33s" ,-193,15,143560664,578664161u,"V0_("); - ASSERT_PRINTF("%000*.137X" ,3,2361478588u); - ASSERT_PRINTF("%-138.17%%--*p%-14p%---167p%--47.91u" ,-13,(void*)10740891812216954868lu,(void*)2144050129394666231lu,(void*)11614427029332157430lu,2673098069u); - ASSERT_PRINTF("%-57.*X%-194.116u%-140.134d" ,-70,3949637465u,1974205093u,335572653); - ASSERT_PRINTF("%---77.62s%-46.195i" ,"^CQ{\vkSl[ceD\f,~A-P",-2130843036); - ASSERT_PRINTF("%-*.152u%-78.92s%--44.57u" ,-157,804520638u,"#W|lXhS\\x^i",835290868u); - ASSERT_PRINTF("%--140p%-92.95s%-102.115i" ,(void*)15758905526233078610lu,NULL,-1446158942); - ASSERT_PRINTF("%-157p%-174p%-131.*X%0146.195x%--150p" ,(void*)7878202630734999894lu,(void*)8508579576981908212lu,189,42041319u,694227551u,(void*)1547752975271419156lu); - ASSERT_PRINTF("%--*p%0*.119x%-133.14d%0156.113d%-40c" ,19,(void*)9420508942149040314lu,5,3622177574u,267981691,-545348429,63); - ASSERT_PRINTF("%-190.90x%-117.173%" ,2497145861u); - ASSERT_PRINTF("%00183.%%-44.48d" ,2066635919); - ASSERT_PRINTF("%0*.29u%00079.55u%30.43s%-17.*s" ,-189,2491194593u,1621139216u,"QA`2Any5ew*Fx>\f|\t/",142,"z|:\r$F'+\f"); - ASSERT_PRINTF("%*p%-114.86%%-27.22d" ,-112,(void*)10233099178825149944lu,500193481); - ASSERT_PRINTF("%--74.82s%--127.29X%--153c" ,"T6Hx+%F\t",3836960075u,-25); - ASSERT_PRINTF("%-38.54x%--189c%-21.79s" ,4019235240u,88,"M_KM,cWZ,k7U",-75,1057557429u,580880397u,-25,-80); + ASSERT_PRINTF("%0176.18i%0131.59i%-86X%---45.36X" ,-1748967713,-1568187420,124888334u,2293430389u); + ASSERT_PRINTF("%--40.183X%-178.81X%036.192u%-119.27s" ,2684215029u,410939004u,2169426684u,"!ufvJeVr`+BF#EV"); + ASSERT_PRINTF("%098.58d%--7.168d" ,549613177,850697743); + ASSERT_PRINTF("%-48p%-164c" ,(void*)9888845855039847185lu,114); + ASSERT_PRINTF("%-70.193x%-140c%168c%026.51%%0125.119X" ,1102840003u,-50,-17,3721437512u); + ASSERT_PRINTF("%104.60s%109c%-9p" ,"}&@/h\n\fe\r"); + ASSERT_PRINTF("%000169.50u%-127.85%%--195p%-51.49s%-160p" ,2209242471u,(void*)8769599610347160825lu,"1+6UGQiBr8wAmIE*{,xBrju#}s=X",(void*)15118044339110535138lu); + ASSERT_PRINTF("%-82.43i%-*.82%%-*.20X" ,-1945174241,-26,94,1446072230u); + ASSERT_PRINTF("%-110.159i%c%0100.177x%-188.*%" ,646185978,14,3198690061u,123); + ASSERT_PRINTF("%--81.*%%019.14%%---27c%-75.150d%00136.74x" ,70,-15,-128722927,4090510000u); + ASSERT_PRINTF("%--11.12d%0107.151x%-*.98i" ,1895257560,1269322791u,120,370452255); + ASSERT_PRINTF("%52c%00040.166%%-131c%-12.99s" ,-57,123,"k\r/ULCoKi0"); + ASSERT_PRINTF("%--140.183u%-*.35u" ,3194611513u,-160,4264407200u); + ASSERT_PRINTF("%-55.40s%--144c%-*.137i%093.12u" ,"M7>#/:*2BGG>zjU2zP'l$H(A4rY",38,53,65160444,3566926644u); + ASSERT_PRINTF("%-190.*u%--6.26X%156.96s" ,-109,3830289361u,1359348041u,"p@.CbB<\\?d"); + ASSERT_PRINTF("%-*c" ,162,89); + ASSERT_PRINTF("%-101.121s%--91.*x" ,"5AhgU}%=/*<1+!E8A(S",-192,3542796524u); + ASSERT_PRINTF("%57c%-76.*s%--38p%-*.159X%000193.93X" ,55,-20,"@(ECnQ^2yp,6x4F\fwA*iLS\fgt,De",(void*)15808961691193129302lu,168,1914174653u,2368364743u); + ASSERT_PRINTF("%--140.*d%-169.198X%-*.93%" ,-176,2043379162,1756246551u,32); + ASSERT_PRINTF("%*p%-127.193x%0120.150d" ,-64,(void*)1126585860702498506lu,4001913452u,444237491); + ASSERT_PRINTF("%--81.144s%-*c%--138X" ,"nr:W1kw_#&(;C9k",195,57,2353642673u); + ASSERT_PRINTF("%-139.77X%-82.101x" ,4273984084u,639114854u); + ASSERT_PRINTF("%-*c%-141p%-28.9u" ,-65,-4,(void*)7073624398654675005lu,113714125u); + ASSERT_PRINTF("%-64u" ,4204812483u); + ASSERT_PRINTF("%--180.61X" ,1396814909u); + ASSERT_PRINTF("%-70.21i%-*.115s%--57.196%%83.157s" ,502357737,80,"D5*;&'q|R:2T>","S}Vl41s`R:E_p>$R.\f9N"); + ASSERT_PRINTF("%--39.115i%--166.*d%--47c%--94.116X" ,1917290799,23,749316185,98,3732464596u); + ASSERT_PRINTF("%--63p%-62.182d" ,(void*)1199013529227388230lu,568134778); + ASSERT_PRINTF("%50.10s%-44.68x%--78.43s" ,"Fj&Xd",665370725u,"/p@_T=e=^Cf7!g>fDE"); + ASSERT_PRINTF("%-175.96%%-153.x" ,822360617u); + ASSERT_PRINTF("%043.165%%--35.34s%--4.*d%-189.*i" ,"TSvqw0m:$c!hhK(,R*",-100,967600936,45,1272776825); + ASSERT_PRINTF("%-166.180X%--18.47d%---111.87%%8p%0114.24X" ,1637127682u,-1931431309,(void*)3522468094256045905lu,4291674618u); + ASSERT_PRINTF("%-55.46%%--171.99s%--56.41X%-173X" ,"7",3917830995u,3557113666u); + ASSERT_PRINTF("%.99s" ,"v$(%6h"); + ASSERT_PRINTF("%00129.196u%-186.*d%--120.109d%-*.90s" ,3849192113u,-29,-424660320,-653417313,71,"O#SeWbH`V"); + ASSERT_PRINTF("%--85.97%%---129c" ,33); + ASSERT_PRINTF("%29p%0151.162x%---53.46u%-139.26X" ,(void*)17894711340605174765lu,1565093748u,662758369u,3536629372u); + ASSERT_PRINTF("%-*.144d%-36c%-96c%-c" ,196,-910445343,-65,124,87); + ASSERT_PRINTF("%--74.144x%-166p%--78.55s%-195.140x" ,625771587u,(void*)14083163232330204447lu,"P(LiM1QG='.bUp\r",314220770u); + ASSERT_PRINTF("%--*X%-88.73i" ,-14,2096742096u,754878051); + ASSERT_PRINTF("%-10.123X%---155.97x" ,382459494u,970578181u); + ASSERT_PRINTF("%-188c%-84.159x%-.82i%-192.158i" ,45,2099602418u,-590423754,1933619156); + ASSERT_PRINTF("%-*.156x%0033.100u%0.104i%-4.150x%-90.%" ,28,4190048377u,3783020883u,-1750158056,3765069756u); + ASSERT_PRINTF("%-p%-35p%00042.14i%p" ,(void*)1508633298498623712lu,(void*)4610270612598633961lu,-1053760970,(void*)4955973954213917723lu); + ASSERT_PRINTF("%--71c%074.49X%-50.195x%-106.79i" ,-112,1537135483u,4281417478u,1103336433); + ASSERT_PRINTF("%--150.*d%01.172i%--151.122d%--*.110x%--23.182%" ,193,-1523409169,453642614,881460015,68,2920216226u); + ASSERT_PRINTF("%00182.146X%16.*s" ,2246537107u,-64,",8\n/Jkn.tDZcE"); + ASSERT_PRINTF("%0047.196X%0100.115u%--147.189u" ,4124736153u,3428700903u,661309797u); + ASSERT_PRINTF("%-66p%-90c%--*.69x%0045.*u" ,(void*)9420165689360028937lu,-29,-122,174318236u,-127,2553740548u); + ASSERT_PRINTF("%-198.190i" ,-915338234); + ASSERT_PRINTF("%0110.7u%-85.40X%---182.30s" ,1517824905u,3044934856u,".iM8/ct)(S"); + ASSERT_PRINTF("%108p%-175.188i" ,(void*)11721873312409420167lu,-653373315); + ASSERT_PRINTF("%0134.185i%061.174d" ,1465312329,1402026716); + ASSERT_PRINTF("%00142.67d%-87.120s%-21.160%%-*.98d%-105.71d" ,1277409698,"/]>n?I^K$-",-187,-569482950,1801496736); + ASSERT_PRINTF("%-58.131%" ); } diff --git a/header.h b/header.h index b6369b2..6d25ac2 100644 --- a/header.h +++ b/header.h @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/06 18:13:32 by cacharle #+# #+# */ -/* Updated: 2020/07/08 18:16:16 by ykoh ### ########.fr */ +/* Updated: 2021/01/31 03:03:38 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,20 +22,20 @@ # include # include -int pid; -int pid2; -bool signaled; -static bool origin_signaled = false; -static bool user_signaled = false; -int origin_ret; -int user_ret; -char *origin_buf; -char *user_buf; - -struct timeval timeout; -fd_set input_set; -int timeout_pipe[2]; -int fd_read_num; +extern int pid; +extern int pid2; +extern bool signaled; +extern bool origin_signaled ; +extern bool user_signaled ; +extern int origin_ret; +extern int user_ret; +extern char *origin_buf; +extern char *user_buf; + +extern struct timeval timeout; +extern fd_set input_set; +extern int timeout_pipe[2]; +extern int fd_read_num; #define PIPE_WRITE 1 #define PIPE_READ 0 @@ -61,7 +61,7 @@ void test_setup(void); void test_tear_down(void); char *read_stdout_buf(void); -char fd_buf[10]; +extern char fd_buf[10]; # define TEST_TIMEOUT(x) do { \ if ((pid2 = fork()) == -1) \ diff --git a/main.c b/main.c index 9781707..0777617 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/06 18:13:45 by cacharle #+# #+# */ -/* Updated: 2020/09/29 16:05:37 by cacharle ### ########.fr */ +/* Updated: 2021/01/31 03:21:14 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,23 @@ #include "header.h" #include "tests/tests.h" +int pid; +int pid2; +bool signaled; +bool origin_signaled = false; +bool user_signaled = false; +int origin_ret; +int user_ret; +char *origin_buf; +char *user_buf; + +struct timeval timeout; +fd_set input_set; +int timeout_pipe[2]; +int fd_read_num; + +char fd_buf[10]; + int main(int argc, char **argv) { timeout.tv_sec = 1; diff --git a/prettier.py b/prettier.py index aaf19b3..a2bd4b5 100644 --- a/prettier.py +++ b/prettier.py @@ -6,7 +6,7 @@ # By: cacharle +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/02/06 18:13:52 by cacharle #+# #+# # -# Updated: 2020/04/02 19:55:29 by charles ### ########.fr # +# Updated: 2021/01/31 03:08:45 by charles ### ########.fr # # # # **************************************************************************** # @@ -25,7 +25,7 @@ def red(*strings): def parse_args(): - parser = argparse.ArgumentParser( prog="ft_printf test", description="A ~quicker tester for ft_printf") + parser = argparse.ArgumentParser(prog="ft_printf test", description="A ~quicker tester for ft_printf") parser.add_argument("-v", "--verbose", help="increase verbosity", action="store_true") parser.add_argument("-q", "--quiet", -- cgit