{"id":17480885,"url":"https://github.com/famished-tiger/cukedep","last_synced_at":"2026-05-04T02:33:07.493Z","repository":{"id":62556539,"uuid":"13815359","full_name":"famished-tiger/cukedep","owner":"famished-tiger","description":"Manage dependencies between Cucumber feature files","archived":false,"fork":false,"pushed_at":"2019-01-13T18:15:37.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-21T02:08:15.989Z","etag":null,"topics":["cucumber","gherkin","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/famished-tiger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-23T21:27:22.000Z","updated_at":"2019-01-13T18:15:39.000Z","dependencies_parsed_at":"2022-11-03T06:00:38.484Z","dependency_job_id":null,"html_url":"https://github.com/famished-tiger/cukedep","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/famished-tiger%2Fcukedep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/famished-tiger%2Fcukedep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/famished-tiger%2Fcukedep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/famished-tiger%2Fcukedep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/famished-tiger","download_url":"https://codeload.github.com/famished-tiger/cukedep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246034279,"owners_count":20712851,"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":["cucumber","gherkin","ruby"],"created_at":"2024-10-18T22:06:17.379Z","updated_at":"2026-05-04T02:33:02.463Z","avatar_url":"https://github.com/famished-tiger.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Cukedep\n===========\n[![Build Status](https://travis-ci.org/famished-tiger/cukedep.png?branch=master)](https://travis-ci.org/famished-tiger/cukedep)\n[![Gem Version](https://badge.fury.io/rb/cukedep.png)](http://badge.fury.io/rb/cukedep)\n\n_Handle dependencies between feature files._  \n[Homepage](https://github.com/famished-tiger/cukedep)\n\n### What is Cukedep? ###\n__Cukedep__ is a command-line utility that helps to execute Cucumber feature files\nin a sequence that meets their dependencies.  \nWith __Cukedep__ you can:  \n* Specify that a given feature file has one or other feature files as its pre-requisite.  \n* Manage the dependencies, thanks to dependency reports and diagram.  \n* Overcome Cucumber's constraint: file name sort order == execution order\n\n###  Should dependencies between feature files not be banned?  ###\nThe short answer is a \"Yes but...\" \n\nIn an ideal world, tests and feature files could be run one independently of each other.\nHowever, when the feature file set grows in size and complexity it becomes more and more\ndifficult to guarantee watertight isolation between feature files. For instance, steps in a feature file may have side effects \nthat influence the results of scenarios from another feature.  \nWhile side effects are often undesirable, that does not means that they should ALWAYS be\navoided:  \n* Because the removal/reversal of a side effect can be too complicated or tedious,  \n* Because the results of a feature can be re-used with profit in another feature.\n\nTo illustrate the second point consider the following case:  \n* You want to test the calculation of invoices but the business of your company \ninvolves many kinds of billable transactions with their own complicated lifecycle\n(e.g. a purchase order). It might be more expedient to test the invoicing by\nre-using paying transactions generated by other -specialized- features. As a consequence,\nmost invoice-related features should run after the execution of the paying transaction.\nFeature file isolation has been traded off for efficiency.\n\n  \n### Highlights ###\n* Simple syntax to specify dependencies in your feature files\n* Generates dependency reports (in CSV format)\n* Generates dependency diagram (in GraphViz's DOT format),\n* Generates a Rake file.\n\n\n### Installation ###\nThe installation of the __cukedep__ gem is fairly standard:  \n```bash  \n$[sudo] gem install cukedep\n```\n\nTo check the installation, open a shell/command window\nand type the command-line:\n```bash  \ncukedep --version\n```\n\nYou should see the version of __cukedep__ gem.\n\n\n### Synopsis ###\nTo get a first taste of how cukedep works, install it first.\nThen go to the root dir of the cukedep gem, then open a shell/command window\nand type the command-line:\n```bash  \nrake\n```\n\nYou will see tests running and Cucumber executing a number of feature files.\n\nTo learn more what's happening, go to the ```rspec/sample_features``` dir.  \nYou will notice a number of feature files for a sample application.  \nStay in that folder and type the following command-line:  \n```bash  \ncukedep --project ../../../sample --dry-run\n```\n\nYou told cukedep to do the following:  \n* Read (parse) all the feature files in the current dir.  \n* Resolve the dependencies between the feature files (based on Gherkin @tags with a special format).  \n* Generate a number of dependency reports and drawing.  \n* Generate a rake file that will execute the feature files in the proper sequence for\nthe project located at the relative path ```../../../sample```\n\nTo generate all the above files and run the feature files with Cucumber,\nthen retry the command line without the --dry-run option:\n```bash  \ncukedep --project ../../../sample\n```\n\nNow you see cukedep redoing the same actions as previously but in addition\nit:\n* Copies a feature file from the current directive to the Cucumber-based project\n* Lets Cucumber execute the feature file\n* Repeats the two above steps in a sequence that meet the dependencies specified in the feature files.\n\n\n### How can I define dependencies? ###\nTo define dependencies between feature files, use Gherkin specific tags.\nSuppose that feature `foo` depends on feature `bar`.\nThen the feature file `foo` may begin as follows:\n\n```cucumber \n  # The next line names this feature 'foo' and make dependent on 'bar'\n  @feature:foo @depends_on:bar\n  Feature: Check-in\n    As a video rental employee\n    I want to register return of rented videos\n    So that other members can them too  \n```\n\nWhile feature `bar` may start like this:\n```cucumber \n  # The next line names this feature 'bar'\n  @feature:bar\n  Feature: Renting videos\n    As a video rental employee\n    I want to register rentals made by a member \n    So I can run my business\n```\n\n#### Recap: ####\n- To identify/name a feature use a tag of the form: `@feature:foo`\n- To express a dependency on a feature with identifier `foo`, use the tag syntax: `@depends_on:foo` \n\n\nCopyright\n---------\nCopyright (c) 2013-2018, Dimitri Geshef. \n__Cukedep__ is released under the MIT License see [LICENSE.txt](https://github.com/famished-tiger/Cukedep/blob/master/LICENSE.txt) for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffamished-tiger%2Fcukedep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffamished-tiger%2Fcukedep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffamished-tiger%2Fcukedep/lists"}