{"id":49865159,"url":"https://github.com/cuttlefisch/eor-test-env","last_synced_at":"2026-05-15T01:30:00.258Z","repository":{"id":351425705,"uuid":"1210937271","full_name":"cuttlefisch/eor-test-env","owner":"cuttlefisch","description":"test environment for endless-org-roam used for CI to validate performance across emacs versions \u0026 configurations.","archived":false,"fork":false,"pushed_at":"2026-04-14T23:58:47.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T01:36:05.014Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/cuttlefisch.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-14T23:00:20.000Z","updated_at":"2026-04-14T23:21:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cuttlefisch/eor-test-env","commit_stats":null,"previous_names":["cuttlefisch/eor-test-env"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cuttlefisch/eor-test-env","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuttlefisch%2Feor-test-env","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuttlefisch%2Feor-test-env/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuttlefisch%2Feor-test-env/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuttlefisch%2Feor-test-env/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuttlefisch","download_url":"https://codeload.github.com/cuttlefisch/eor-test-env/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuttlefisch%2Feor-test-env/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33050026,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-05-15T01:29:59.344Z","updated_at":"2026-05-15T01:30:00.246Z","avatar_url":"https://github.com/cuttlefisch.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EOR Test Environment\n\nE2E and integration testing for [Endless Org Roam](https://github.com/cuttlefisch/endless-org-roam) across multiple Emacs distributions.\n\n## Overview\n\nThis repo provides:\n\n- **Fixture KBs** -- Two sample org-roam instances with known UUIDs for deterministic testing\n- **Profile configs** -- Minimal Emacs configs for vanilla, Doom, and Spacemacs\n- **Test scripts** -- Runner scripts that set up isolated test environments\n- **E2E test suite** -- Elisp tests that exercise EOR with real org-roam databases\n- **Federation demo** -- Non-interactive demo of cross-instance queries, linking, and search\n- **CI matrix** -- GitHub Actions workflows testing across Emacs versions and distros\n\n## Demo\n\nThe demo builds real org-roam databases from the fixture KBs, registers them in a federation, then exercises cross-instance queries, link resolution, and search — finishing with an ASCII map of the federated knowledge graph:\n\n```\n┌─────────────────────────────┐     ┌─────────────────────────────┐\n│ ◈ work                      │     │ ◈ personal                  │\n│   bbbbbbbb… · 3 nodes       │     │   aaaaaaaa… · 5 nodes       │\n│─────────────────────────────│     │─────────────────────────────│\n│   ● Delta Node              │     │   ● Alpha Node              │\n│   ● Epsilon Node            │     │   ● Beta Node               │\n│                             │     │   ● Gamma Node              │\n│                             │     │   ● Subheading with content │\n└─────────────────────────────┘     └─────────────────────────────┘\n                           ╲            ╱\n                          ╚══ EOR Federation ══╝\n                         ◀── eor: links ──▶\n```\n\n### Running the demo locally\n\nThe demo runs in batch mode — it does **not** touch your Emacs config, org-roam databases, or any files outside a temporary directory. Everything is fully isolated and cleaned up on exit.\n\n**Prerequisites:** Emacs 29.4+ with org-roam available. If you use Doom Emacs with org-roam installed, the demo auto-detects your straight.el packages (no network needed). Otherwise it bootstraps straight.el into a temp directory.\n\n```bash\n# Clone both repos side by side\ngit clone https://github.com/cuttlefisch/eor-test-env.git\ngit clone https://github.com/cuttlefisch/endless-org-roam.git\n\n# Run the demo\ncd eor-test-env\n./scripts/demo.sh\n```\n\nOr point it at a specific Emacs:\n\n```bash\n./scripts/demo.sh --emacs=/usr/local/bin/emacs-30.1\n```\n\nIf the repos aren't adjacent, set `EOR_PACKAGE_DIR`:\n\n```bash\nEOR_PACKAGE_DIR=~/src/eor/endless-org-roam ./scripts/demo.sh\n```\n\n### What happens\n\n1. Copies fixture KBs into `/tmp` (your files are never touched)\n2. Runs `org-roam-db-sync` to build real SQLite databases\n3. Registers both instances in an isolated federation registry\n4. Demonstrates cross-instance node lookup (query work KB from personal context)\n5. Resolves `eor:` links — targeted, local-first, and federated fallback\n6. Collects search candidates across all instances\n7. Renders the ASCII knowledge graph map\n\nThe demo exits `0` on success, `1` on any failure — it also runs as a CI job to prevent bitrot.\n\n## Quick Start (E2E tests)\n\n```bash\n# Clone both repos\ngit clone https://github.com/cuttlefisch/eor-test-env.git\ngit clone https://github.com/cuttlefisch/endless-org-roam.git\n\n# Run vanilla profile tests\ncd eor-test-env\n./scripts/run-tests.sh --profile=vanilla\n```\n\n## CI Matrix\n\n| Job           | Emacs Versions              | Frequency     |\n|---------------|---------------------------|---------------|\n| Vanilla E2E   | 29.4, 30.1, snapshot      | Every push/PR |\n| Doom E2E      | 29.4, 30.1                | Every push/PR |\n| Spacemacs E2E | 29.4, 30.1                | Every push/PR |\n| Demo          | 30.1                      | Every push/PR |\n| org-roam HEAD | 30.1                      | Weekly / manual |\n\n## Structure\n\n```\nprofiles/\n  vanilla/init.el         -- emacs -Q + straight.el bootstrap\n  doom/                   -- Minimal Doom config (init.el, packages.el, config.el)\n  spacemacs/.spacemacs    -- Minimal Spacemacs dotfile\nfixtures/\n  instance-a/             -- 4 nodes with known UUIDs + sentinel\n  instance-b/             -- 2 nodes with known UUIDs + sentinel\n  expected-registry.el    -- Expected registry state for assertions\nscripts/\n  run-tests.sh            -- Main runner: --profile=\u003cname\u003e or --all\n  demo.sh                 -- Federation demo launcher (safe, fully isolated)\n  demo.el                 -- Demo Elisp: DB build, queries, links, graph map\n  setup-profile.sh        -- Bootstrap a profile's dependencies\n  cleanup.sh              -- Remove temp artifacts\ntests/\n  test-e2e-common.el      -- E2E framework + test suites\n```\n\n## Fixture Node IDs\n\n### Instance A (`aaaaaaaa-1111-2222-3333-444444444444`)\n\n| Node    | UUID                                     |\n|---------|------------------------------------------|\n| Alpha   | `a1000001-0000-0000-0000-000000000001`   |\n| Beta    | `a1000002-0000-0000-0000-000000000002`   |\n| Gamma   | `a1000003-0000-0000-0000-000000000003`   |\n| (sub)   | `a1000003-0000-0000-0000-000000000004`   |\n\n### Instance B (`bbbbbbbb-1111-2222-3333-444444444444`)\n\n| Node    | UUID                                     |\n|---------|------------------------------------------|\n| Delta   | `b2000001-0000-0000-0000-000000000001`   |\n| Epsilon | `b2000002-0000-0000-0000-000000000002`   |\n\n## Version Bumping\n\nVersion is automatically bumped on merged PRs to `main`. PR labels take precedence:\n\n- `release:major` → major bump (0.1.0 → 1.0.0)\n- `release:minor` → minor bump (0.1.0 → 0.2.0)\n- `release:patch` → patch bump (0.1.0 → 0.1.1)\n\nWithout a label, bump type is inferred from conventional commit prefixes (`feat!:` → major, `feat:` → minor, else → patch).\n\n## Relationship to Unit Tests\n\n| Layer | Location | Framework | Speed | Dependencies |\n|-------|----------|-----------|-------|-------------|\n| Unit  | `endless-org-roam/test/` | Buttercup | Fast (~12ms) | Mocked org-roam |\n| E2E   | `eor-test-env/tests/`    | Custom runner | Slower | Real org-roam DBs |\n\n## License\n\n[GPL-3.0-or-later](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuttlefisch%2Feor-test-env","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcuttlefisch%2Feor-test-env","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuttlefisch%2Feor-test-env/lists"}