{"id":23521177,"url":"https://github.com/szermatt/turtles","last_synced_at":"2025-05-14T03:17:49.148Z","repository":{"id":268432037,"uuid":"903856088","full_name":"szermatt/turtles","owner":"szermatt","description":"Library for writing ERT-based tests that check how Emacs renders buffers and windows","archived":false,"fork":false,"pushed_at":"2025-01-13T12:49:37.000Z","size":404,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-13T13:37:52.704Z","etag":null,"topics":["elisp","emacs","testing"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/szermatt.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-15T18:20:06.000Z","updated_at":"2025-01-13T12:49:41.000Z","dependencies_parsed_at":"2024-12-16T18:41:56.968Z","dependency_job_id":"50eea6b7-4e54-4a2d-b0b4-51b2561ec98f","html_url":"https://github.com/szermatt/turtles","commit_stats":null,"previous_names":["szermatt/turtles"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szermatt%2Fturtles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szermatt%2Fturtles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szermatt%2Fturtles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szermatt%2Fturtles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/szermatt","download_url":"https://codeload.github.com/szermatt/turtles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239212561,"owners_count":19600830,"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":["elisp","emacs","testing"],"created_at":"2024-12-25T17:10:59.161Z","updated_at":"2025-05-14T03:17:49.140Z","avatar_url":"https://github.com/szermatt.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Turtles\n\n[![test](https://github.com/szermatt/turtles/workflows/test/badge.svg)](https://github.com/szermatt/turtles/actions)\n[![Documentation Status](https://readthedocs.org/projects/turtles/badge/?version=latest)](https://turtles.readthedocs.io/en/latest/?badge=latest)\n[![MELPA stable](https://stable.melpa.org/packages/turtles-badge.svg)](https://stable.melpa.org/#/turtles)\n[![MELPA](https://melpa.org/packages/turtles-badge.svg)](https://melpa.org/#/turtles)\n\nThis package help write ERT-based tests to that check how Emacs\nrenders buffers and windows. The ERT tests can be run interactively or\nin batch mode.\n\nIt's especially suited to test:\n\n- the effect of display, before-string, after-string text properties\n- the effect of overlays\n- text visibility\n- status line\n- colors changes\n- complex minibuffer interactions\n\nRead the full documentation on\n[turtles-readthedocs.io](https://turtles.readthedocs.io/en/latest/index.html)\nor in the info manual that comes with the package.\n\n## Status\n\nVersion 2.0.1 is the latest version. Please depend on that tag or the\nbranch 2.0.\n\nSince this is a library, versioning matters: This project follows\n[Semantic Versioning 2.0.0](https://semver.org/), that is, versions\nfollow the format MAJOR.MINOR.PATCH with:\n\n- MAJOR incremented for incompatible API changes\n- MINOR when functionality is added that is backward-compatible\n- PATCH for bugfixes\n\nTo avoid surprises, you should aim to depend on a specific, tagged\nversion and only increase that version when you need to.\n\n## Installation\n\nInstall Turtles:\n\n- on a recent version of Emacs (29 or later), from the\n  github repository by doing `M-x package-vc-install https://github.com/szermatt/turtles`\n\n- using [eldev](https://github.com/emacs-eldev/eldev) to run tests in\n  batch mode:\n\n  ```elisp\n\n    (eldev-add-extra-dependencies 'test 'turtles)\n    (eldev-use-vc-repository 'turtles :github \"szermatt/turtles\" :commit \"2.0.1\")\n  ```\n\n- from [MELPA](https://melpa.org/#/getting-started), by typing `M-x\n  package-install turtles`. Note that there's no practical difference\n  between the stable and unstable melpa package, as development\n  happens on a branch. You'll always get the latest release.\n\nTurtles requires Emacs 26.1 or later. Emacs 29.1 or later is recommended.\n\n## How it works\n\nTurtles starts another Emacs process inside of a term buffer, runs ERT\ntest in that instance and grab snapshot of the display whenever\ninstructed.\n\nThe result is that the frame, minibuffer, window content and status\nline are available to tests as text with font-lock-face properties\nspecifying things like color.\n\nHere's a quick example of a test that checks a text with an invisible\nsection.\n\nFor more details, see the\n[Tutorial](https://turtles.readthedocs.io/en/latest/tutorial.html)\n\n```elisp\n(require 'turtles)\n\n(turtles-ert-deftest turtles-test-hello-world ()\n  ;; The body of turtles-ert-deftest runs inside a\n  ;; secondary Emacs instance.\n\n  (ert-with-test-buffer ()\n    (insert \"hello, \")           ;; Fill in the buffer\n    (insert (propertize \"the \" 'invisible t))\n    (insert \"world!\\n\")\n\n    (turtles-with-grab-buffer () ;; Grab the current buffer content\n      ;; Check the buffer content that was displayed\n      (should (equal \"hello, world!\"\n                     (buffer-string))))))\n\n```\n\n## Something is wrong!\n\nPlease check the [doc](https://turtles.readthedocs.io/en/latest/)\nand, if that doesn't help, take the time to [file a bug report](https://turtles.readthedocs.io/en/latest/contrib.html#reporting-issues).\n\n## Contributing\n\nSee the [Contributing](https://turtles.readthedocs.io/en/latest/contrib.html)\nsection of the documentation.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszermatt%2Fturtles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fszermatt%2Fturtles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszermatt%2Fturtles/lists"}