{"id":29322114,"url":"https://github.com/alopukhov/sybok","last_synced_at":"2026-04-17T01:02:45.803Z","repository":{"id":57732364,"uuid":"488258385","full_name":"alopukhov/sybok","owner":"alopukhov","description":"Sybok test engine","archived":false,"fork":false,"pushed_at":"2022-05-15T20:32:49.000Z","size":103,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-09-15T09:20:00.168Z","etag":null,"topics":["groovy","java","junit5","sybok","testing"],"latest_commit_sha":null,"homepage":"","language":"Java","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/alopukhov.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":"2022-05-03T15:12:27.000Z","updated_at":"2022-05-07T19:27:02.000Z","dependencies_parsed_at":"2022-09-10T19:51:57.807Z","dependency_job_id":null,"html_url":"https://github.com/alopukhov/sybok","commit_stats":null,"previous_names":[],"tags_count":4,"template":null,"template_full_name":null,"purl":"pkg:github/alopukhov/sybok","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alopukhov%2Fsybok","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alopukhov%2Fsybok/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alopukhov%2Fsybok/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alopukhov%2Fsybok/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alopukhov","download_url":"https://codeload.github.com/alopukhov/sybok/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alopukhov%2Fsybok/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264089489,"owners_count":23555750,"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":["groovy","java","junit5","sybok","testing"],"created_at":"2025-07-07T14:01:07.104Z","updated_at":"2026-04-17T01:02:40.730Z","avatar_url":"https://github.com/alopukhov.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub](https://img.shields.io/github/license/alopukhov/sybok)](LICENSE)\n[![Maven Central](https://img.shields.io/maven-central/v/io.github.alopukhov.sybok/sybok-engine)](https://mvnrepository.com/artifact/io.github.alopukhov.sybok/sybok-engine)\n\n# Sybok\n\nSybok is a test engine for well-known JUnit platform.  \nThe main goal is running groovy test scripts on junit platform without compilation using\n[JUnit Console](https://junit.org/junit5/docs/snapshot/user-guide/#running-tests-console-launcher). \n\n# Getting started\n\nJust add Sybok to your runtime classpath and you are ready to go.\nLibrary is available at maven central.\n\nGrab it With gradle:\n```groovy\nruntimeOnly \"io.github.alopukhov.sybok:sybok-engine:${sybokVersion}\"\n```\n\nOr with maven:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.alopukhov.sybok\u003c/groupId\u003e\n  \u003cartifactId\u003esybok-engine\u003c/artifactId\u003e\n  \u003cversion\u003e${sybokVersion}\u003c/version\u003e\n  \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n``` \n\n# Configuration options\n* `sybok.script-roots` comma separated list of paths to script roots folders.\nThose folders must exist. Specifying some directory and its ancestor is prohibited.\nFor example following config considered illegal: `./specs/,./specs/a/b` \n* `sybok.delegate-engine-ids` comma separated list of engines ids to use.\nEmpty list (default) will use all engines found on classpath except sybok itself.\n* `sybok.alter-classloader` (defaults to `false`) alters Thread Context Classloader.\nUse it if delegate engine fails to discover or execute test classes.\n* `sybok.delegate.\u003cdelegate-engine-id\u003e.alter-classloader` more finegrained approach to change classloader.\nFor example, TestNG will fail to run tests during execution phase.\nSetting `sybok.delegate.testng.alter-classloader` may be helpfull.    \n\nWhen using JUnit Console you may specify them via `--config` option, e.g.\n`--config sybok.script-roots=./specs/`\n\n# Scripts directory structure\nSybok does not enforce any particular folder structure.\nHowever, there are some basic restriction:\n* Package declarations must match directory structure \n* Only single non-nested class may be declared in a file \n* Declared classname must match filename\n* Declaring same class under multiple roots is prohibited \n\n# Selecting tests\nFollowing test selectors are supported:\n* `-d, --select-directory` traverses specified directories to find tests.\nDirectories not under script roots will be silently ignored.\n* `-p, --select-package` traverse files in all script roots belonging to specified package.\nEmpty (root) package will be ignored - use directory selectors instead.\n* `-f, --select-file` select specific file for test discovery.\nFiles not under script roots will be silently ignored.\n* `-c, --select-class` looks for specified class inside test roots.\n\nFirst two options also takes into account package and classname include/exclude filters.\n\nFile and class selectors ignores those filters.\n\n---\n:grey_exclamation: Default JUnit Console include classname pattern is `^(Test.*|.+[.$]Test.*|.*Tests?)$`.\nOverride it or name your test classes according to it.\n\n---\n\n# Example\nSee [sybok-example](https://github.com/alopukhov/sybok-example) repo for example project.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falopukhov%2Fsybok","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falopukhov%2Fsybok","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falopukhov%2Fsybok/lists"}