{"id":13791078,"url":"https://github.com/jgigault/42FileChecker","last_synced_at":"2025-05-12T09:33:55.069Z","repository":{"id":23707246,"uuid":"27079610","full_name":"jgigault/42FileChecker","owner":"jgigault","description":"42FileChecker is a tiny bash script developed at 42 school for testing and checking files according to the rules of the subjects","archived":false,"fork":false,"pushed_at":"2019-10-12T14:11:35.000Z","size":521,"stargazers_count":305,"open_issues_count":20,"forks_count":56,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-11-18T05:38:39.033Z","etag":null,"topics":["42","42born2code","42school","shell"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jgigault.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-24T14:41:10.000Z","updated_at":"2024-11-07T18:21:53.000Z","dependencies_parsed_at":"2022-08-07T11:00:43.692Z","dependency_job_id":null,"html_url":"https://github.com/jgigault/42FileChecker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgigault%2F42FileChecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgigault%2F42FileChecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgigault%2F42FileChecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgigault%2F42FileChecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jgigault","download_url":"https://codeload.github.com/jgigault/42FileChecker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253709505,"owners_count":21951166,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42","42born2code","42school","shell"],"created_at":"2024-08-03T22:00:55.293Z","updated_at":"2025-05-12T09:33:54.685Z","avatar_url":"https://github.com/jgigault.png","language":"Shell","funding_links":[],"categories":["Ressources","Shell","Cursus"],"sub_categories":["Automated tests","Testers"],"readme":"# 42FileChecker\n\n\u003cimg align=\"right\"  src=\"./assets/42FileChecker_cropped.png\" width=\"45%\" /\u003e42FileChecker is a tiny bash script developed at 42 school for testing and checking the files according to the rules of the subjects.\n\nThe script is designed as a reminder:\n* author file terminated by a Line Feed\n* count and files name\n* code's standard\n* required and forbidden functions\n* macro definitions\n* static variables \u0026 functions declarations\n* makefile rules\n\nExtra tests may also be performed:\n* memory leaks detection\n* speed test comparison\n* Unit Tests\n\nComplete unit tests are handled through external frameworks whose sources are automatically downloaded, configured and updated in background when you run the script:\n* [**moulitest**](https://github.com/yyang42/moulitest), developed by [@yyang42](https://github.com/yyang42) and other contributors\n* [**libft-unit-test**](https://github.com/alelievr/libft-unit-test), developed by [@alelievr](https://github.com/alelievr)\n* [**fillit_checker**](https://github.com/anisg/fillit_checker), developed by [@anisg](https://github.com/anisg)\n* [**Maintest**](https://github.com/QuentinPerez/Maintest), developed by [@QuentinPerez](https://github.com/QuentinPerez) and other contributors\n* [**42ShellTester**](https://github.com/we-sh/42ShellTester), developed by [@gabkk](https://github.com/gabkk) and [@jgigault](https://github.com/jgigault)\n\n## install \u0026 launch\n```bash\ngit clone https://github.com/jgigault/42FileChecker ~/42FileChecker\ncd ~/42FileChecker \u0026\u0026 bash ./42FileChecker.sh\n```\nYou may also want to set an alias to run it from everywhere, even in your project path. Add this line of code at the end of your shell initialization file (e.g.: `~/.zshrc`):\n```bash\nalias 42FileChecker='bash ~/42FileChecker/42FileChecker.sh'\n```\nAt launch, 42FileChecker invites you to get the latest version of the sources when available. You may just simply accept or skip the message.\n\n## non-interactive mode\n\nThe non-interactive mode enables you to launch a test suite without any prompt.  \nYou must specify the two options `--project` and `--path`.  \nHere is an example of use with the project `libft`:\n```bash\nbash ~/42FileChecker/42FileChecker.sh --project \"libft\" --path \"/Users/admin/Projects/libft/\"\n```\n\n## options\n\n#### `--project` + *`$PROJECT`*\n\nRequired for non-interactive mode.  \nSpecify the name of the project you want to test.  \ne.g.: `bash ./42FileChecker.sh --project \"libft\"`.  \nMust be one of the following values: `fillit`, `libft`, `libftasm`, `gnl`, `get_next_line`, `ft_ls`, `ft_printf`, `minishell`.\n\n#### `--path` + *`$PATH`*\n\nRequired for non-interactive mode.  \nThis option has no effect when used without the option `--project`.  \nSpecify the absolute path of directory of your project.  \ne.g.: `bash ./42FileChecker.sh --project \"libft\" --path \"/Users/admin/Projects/libft/\"`.\n\n#### `--no-update`\n\nDo not check for updates at launch.\n\n#### `--no-color`\n\nDo not display color tags.\n\n#### `--no-timeout`\n\nDisable timeout.\n\n##### `--no-disclaimer`, `--no-auteur`, `--no-author`, `--no-norminette`, `--no-leaks`, `--no-speedtest`, `--no-basictests`, `--no-makefile`, `--no-forbidden`, `--no-staticdeclarations`, `--no-libftfilesexists`, `--no-gnlmultiplefd`, `--no-gnlonestatic`, `--no-gnlmacro`, `--no-gnltofreeornottofree`, `--no-moulitest`, `--no-libftunittest`, `--no-fillitchecker`, `--no-maintest`, `--no-42shelltester`\n\nDisable a specific test.\n\n## supported projects\n\n\u003ctable width=\"100%\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003ctd width=\"20%\" height=\"60px\"\u003e\u003c/td\u003e\n\u003ctd width=\"12%\" align=\"center\" cellpadding=\"0\"\u003e\n\u003cstrong\u003efillit\u003c/strong\u003e\n\u003c/td\u003e\n\u003ctd width=\"12%\" align=\"center\" cellpadding=\"0\"\u003e\n\u003cstrong\u003elibft\u003c/strong\u003e\n\u003c/td\u003e\n\u003ctd width=\"12%\" align=\"center\" cellpadding=\"0\"\u003e\n\u003cstrong\u003elibftasm\u003c/strong\u003e\n\u003c/td\u003e\n\u003ctd width=\"12%\" align=\"center\" cellpadding=\"0\"\u003e\n\u003cstrong\u003egnl\u003c/strong\u003e\n\u003c/td\u003e\n\u003ctd width=\"12%\" align=\"center\" cellpadding=\"0\"\u003e\n\u003cstrong size=\"5\"\u003eft_ls\u003c/strong\u003e\u003c/ins\u003e\n\u003c/td\u003e\n\u003ctd width=\"12%\" align=\"center\" cellpadding=\"0\"\u003e\n\u003cstrong\u003eft_printf\u003c/strong\u003e\n\u003c/td\u003e\n\u003ctd width=\"12%\" align=\"center\" cellpadding=\"0\"\u003e\n\u003cstrong\u003eminishell\u003c/strong\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003eauthor file\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003enorminette\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003emakefile\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003eforbidden functions\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003eextra functions\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003eleaks\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003espeed test\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003eunit tests\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" height=\"60px\"\u003eintegration tests\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"center\"\u003e\u003ckbd\u003eYes\u003c/kbd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n## official team and credits\n\n42FileChecker is an open source project distributed under licence [Apache 2.0](https://github.com/jgigault/42FileChecker/blob/master/LICENCE).\n\nOriginally developed by Jean Michel Gigault [@jgigault](https://github.com/jgigault), the team also is composed of:\n- [@Seluj78](https://github.com/Seluj78)\n- [@adibk](https://github.com/adibk)\n- [@kalak-io](https://github.com/kalak-io)\n\n## logo credits\n\nEdouard Audeguy  \nIllustrateur / Infographiste  \nhttps://edouardaudeguy.wix.com/portfolio\n\n## contribute\n\nIf you want to be part of the project, to fix and to improve the 42FileChecker, please follow the guide lines [**Contributing to 42FileChecker**](https://github.com/jgigault/42FileChecker/wiki/Contributing-to-42FileChecker), or if you want your own unit testing framework to be integrated in the 42FileChecker, just let me know at **jgigault@student.42.fr**.\n\n42FileChecker has an [**online wiki**](https://github.com/jgigault/42FileChecker/wiki) that gives you tips and lessons in Bash programming.\n\n## Known Issues\n\n* At 42 school, when running the `leaks` test for the first time, a box can appear and prompt you for administrator username and password. Run the `leaks` command outside of 42FileChecker and enter `exam` and `exam` as username and password, then everything should go along.\n\n# other scripts\n\n\u003ctable width=\"100%\"\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/jgigault/42FileChecker\"\u003e\n\u003cimg align=\"center\" src=\"./assets/42FileChecker_250x250.png\" /\u003e\n\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/jgigault/42MapGenerator\"\u003e\n\u003cimg align=\"center\" src=\"https://github.com/jgigault/42MapGenerator/blob/master/assets/42MapGenerator_250x250.png\" /\u003e\n\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003ca href=\"https://github.com/we-sh/42ShellTester\"\u003e\n\u003cimg align=\"center\" src=\"https://github.com/we-sh/42ShellTester/blob/master/lib/assets/42ShellTester_250x250.png\" /\u003e\n\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003cstrong\u003e\n\u003ca href=\"https://github.com/jgigault/42FileChecker\"\u003e42FileChecker\u003c/a\u003e\n\u003c/strong\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003cstrong\u003e\n\u003ca href=\"https://github.com/jgigault/42MapGenerator\"\u003e42MapGenerator\u003c/a\u003e\n\u003c/strong\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003cstrong\u003e\n\u003ca href=\"https://github.com/we-sh/42ShellTester\"\u003e42ShellTester\u003c/a\u003e\n\u003c/strong\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgigault%2F42FileChecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjgigault%2F42FileChecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgigault%2F42FileChecker/lists"}