{"id":13460029,"url":"https://github.com/xicodomingues/francinette","last_synced_at":"2025-03-24T18:32:58.397Z","repository":{"id":44847556,"uuid":"437001017","full_name":"xicodomingues/francinette","owner":"xicodomingues","description":"An easy to use testing framework for the 42 projects","archived":false,"fork":false,"pushed_at":"2024-06-05T20:27:57.000Z","size":1126,"stargazers_count":439,"open_issues_count":45,"forks_count":44,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-01T10:20:03.687Z","etag":null,"topics":["42","42projects","ftprintf","getnextline","libft","minitalk","pipex","tester"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xicodomingues.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-10T14:08:45.000Z","updated_at":"2024-07-30T14:59:37.000Z","dependencies_parsed_at":"2023-02-06T00:46:08.446Z","dependency_job_id":null,"html_url":"https://github.com/xicodomingues/francinette","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xicodomingues%2Ffrancinette","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xicodomingues%2Ffrancinette/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xicodomingues%2Ffrancinette/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xicodomingues%2Ffrancinette/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xicodomingues","download_url":"https://codeload.github.com/xicodomingues/francinette/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222004120,"owners_count":16914872,"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","42projects","ftprintf","getnextline","libft","minitalk","pipex","tester"],"created_at":"2024-07-31T10:00:34.282Z","updated_at":"2025-03-24T18:32:58.391Z","avatar_url":"https://github.com/xicodomingues.png","language":"C","funding_links":[],"categories":["WELCOME"],"sub_categories":["**Pipex**"],"readme":"# Francinette\n\n## :exclamation: This repo is long abandoned. It's probably way out of date, and does not work on newer systems. Please seek other alternatives. :exclamation:\n\n# Also: write your own tests!!\n#\n\nAn easy to use testing framework for the 42 projects.\n\nUse `francinette` or `paco` inside a project folder to run it.\n\nCurrently has tests for: `libft`, `ft_printf`, `get_next_line`, `minitalk` and `pipex`.\n\n`Francinette` is only tested and confirmed to work on MacOS on non ARM chips. Some testers may work on\nLinux and ARM, but I give no guaranties of any test working or even compiling.\n\n## :exclamation: Important note:\n\nIf you have little to no experience programming, I highly highly highly recommend that you write\nyour own tests first. For example, for `ft_split` try to write a main that tests that your code\nworks in most cases. It is also useful to think about corner cases, like what should it return\nif the string is `\"\"` or `\"   \"` or `\"word\"`. Don't rely just on `francinette` or other tests.\n\n### :warning: Write your own tests, It's a very essential part of programming. :warning:\n\n## Table of Contents\n1. [Purpose](#purpose)\n2. [Install](#install)\n3. [Update](#update)\n4. [Running](#Running)\n5. [Uninstall](#uninstall)\n6. [FAQ](#faq)\n7. [Acknowledgments](#acknowledgments)\n\n\n## Purpose:\n\nThis is designed to function as a kind of `moulinette` that you can execute in local.\n\nThat means that by executing `francinette` it will check `norminette`, compile the\ncode and execute the tests.\n\nYou can use it as a local test battery, to test your code.\n\n#### Example execution:\n\n![Example Image](doc/example.png)\n\n\n## Install:\nFrancinette has an automatic installer.\n\nCopy the line bellow to your console and execute it. It will automatically download the repo,\ncreate the necessary folders and alias, and install a python virtual environment dedicated to\nrunning this tool.\n\nIn linux it will also download and install the necessary packages for it to run. It needs\nadmin permission to do that.\n\n```\nbash -c \"$(curl -fsSL https://raw.github.com/xicodomingues/francinette/master/bin/install.sh)\"\n```\n\nThe francinette folder will be under your `$HOME` directory (`/Users/\u003cyour_username\u003e/`)\n\n\n## Update:\nNormally francinette will prompt you when there is a new version, and you can then update it.\n\nYou can also force it from francinette itself:\n\n```\n~ $\u003e francinette -u              # Forces francinette to update\n```\n\nIf the above does not work you can also execute the command bellow:\n\n```\nbash -c \"$(curl -fsSL https://raw.github.com/xicodomingues/francinette/master/bin/update.sh)\"\n```\n\n\n## Running:\n\nIf you are on a root of a project, `francinette` should be able to tell which project\nit is and execute the corresponding tests.\n\nYou can also use the shorter version of the command: `paco`\n\nTo see all the available options execute `paco -h`\n\n```\n/C00 $\u003e francinette                  # Execute the tests for C00\n\n/C00/ex00 $\u003e francinette             # Execute only the tests for ex00 in C00\n\n/libft $\u003e francinette                # Execute the tests for libft\n\n~ $\u003e francinette -h                  # Shows the help message\n\nlibft $\u003e paco memset isalpha memcpy  # Executes only the specified tests\n```\n\nThe name of the folder is not important. What is important is that you have a `Makefile`\nthat contains the name of the project (for example `libft`), or the expected delivery files. \nIf there is no `Makefile` or delivery files are not present `francinette` will not know \nwhat project to execute.\n\n```\n~ $\u003e francinette git@repo42.com/intra-uuid-234\n```\n\nThis command clones the git repository present in `git@repo42.com/intra-uuid-234` into the\ncurrent folder and executes the corresponding tests\n\nAll the files are copied to the folder `~/francinette/temp/\u003cproject\u003e`. In here is where the\nnorminette is checked, the code compiled and the tests executed. Normally you do not need to\naccess this directory for anything. But if you run into unexpected problems, this is where\nthe magic happens.\n\nLog files can be found in: `~/francinette/logs`\n\n\n## Uninstall\n\nTo uninstall `francinette` delete the `francinette` folder. It should be located under your\n`$HOME` directory (`/Users/\u003cyour_username\u003e/` or `/home/\u003cyour_username\u003e/`)\n\nYou also need to remove the automatically created aliases. For that open your `~/.zshrc` \nfile and delete the lines:\n\n```\nalias francinette=\"$HOME\"/francinette/tester.sh\nalias paco=\"$HOME\"/francinette/tester.sh\n```\n\n## FAQ\n\nIf you have any questions you can create an issue or reach me on slack under `fsoares-`\n\n#### I'm more advanced than the tests you have available. When are you adding more tests?\n\nWhen I reach that exercise or project. You can also add them. For that you need to create a\n`ProjectTester.py` file. and change the function `guess_project` in `main.py` to recognize\nthe project.\n\n#### This test that you put up is incorrect!\n\nPlease create a new github issue, indicating for what exercise which test fails, and a\ndescription of what you think is wrong. You can also try to fix it and create a pull request\nfor that change!\n\n#### What is NULL_CHECK in strict?\n\nThis is a way to test if you are protecting your `malloc` calls. This means that it will make\nevery call to `malloc` fail and return `NULL` instead of a newly allocated pointer. You need\nto take this into account when programming so that you don't get segmentation faults.\n\n#### The tester for get_next_line is giving me Timeout errors\n\nThis is something that is very common. My tester will get slower for every malloc that you do, so if\nyou do a lot of mallocs it will probably timeout.\n\nIf it timeouts while in the strict mode, don't worry, this one is very very inefficient. I have\nplans to change some things to not make it so horrible, but for the time being, don't worry if\nit gives a Timeout.\n\n## Troubleshooting\n\n#### I've installed francinette, but when I try to execute it I get the message: `command not found: francinette`\n\nIn the install script I try to set two alias to for `francinette`: `francinette` and `paco`. \nIf you are in MacOS I do that by adding two lines to the `.zshrc` file, and to `.bashrc` in \nlinux. If by some chance you are using other shell, or for some other reason it does not work, \nYou can try to set the aliases yourself, by adding:\n\n```\nalias francinette=\"$HOME\"/francinette/tester.sh\nalias paco=\"$HOME\"/francinette/tester.sh\n```\n\nNow it should work. If it does not, don't be afraid to contact me.\n\n## Acknowledgments\n\n* To 42 for providing me this opportunity\n* To [Tripouille](https://github.com/Tripouille) for [libftTester](https://github.com/Tripouille/libftTester), [gnlTester](https://github.com/Tripouille/gnlTester) and [printfTester](https://github.com/Tripouille/printfTester)\n* To [jtoty](https://github.com/jtoty) and [y3ll0w42](https://github.com/y3ll0w42) for [libft-war-machine](https://github.com/y3ll0w42/libft-war-machine)\n* To [alelievr](https://github.com/alelievr) for [libft-unit-test](https://github.com/alelievr/libft-unit-test) and [printf-unit-test](https://github.com/alelievr/printf-unit-test)\n* To [cacharle](https://github.com/cacharle) for [ft_printf_test](https://github.com/cacharle/ft_printf_test)\n* To [ombhd](https://github.com/ombhd) for [Cleaner_42](https://github.com/ombhd/Cleaner_42)\n* To [arsalas](https://github.com/arsalas) for the help in the minitalk tester\n* To [vfurmane](https://github.com/vfurmane) for [pipex-tester](https://github.com/vfurmane/pipex-tester)\n* To [gmarcha](https://github.com/gmarcha) for [pipexMedic](https://github.com/gmarcha/pipexMedic)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxicodomingues%2Ffrancinette","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxicodomingues%2Ffrancinette","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxicodomingues%2Ffrancinette/lists"}