README.md
Basic stuff:
[![Gem Version](https://badge.fury.io/rb/cql.svg)](https://rubygems.org/gems/cql)
[![Project License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/mit-license.php)
[![Downloads](https://img.shields.io/gem/dt/cql.svg)](https://rubygems.org/gems/cql)
User stuff:
[![Cucumber Docs](http://img.shields.io/badge/Documentation-Features-green.svg)](https://github.com/enkessler/cql/tree/master/testing/cucumber/features)
[![Yard Docs](http://img.shields.io/badge/Documentation-API-blue.svg)](https://www.rubydoc.info/gems/cql)
Developer stuff:
[![Build Status](https://github.com/enkessler/cql/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/enkessler/cql/actions/workflows/ci.yml?query=branch%3Amaster)
[![Coverage Status](https://coveralls.io/repos/github/enkessler/cql/badge.svg?branch=master)](https://coveralls.io/github/enkessler/cql?branch=master)
[![Maintainability](https://api.codeclimate.com/v1/badges/a469e37db8e67c1c989b/maintainability)](https://codeclimate.com/github/enkessler/cql/maintainability)
[![Inline docs](http://inch-ci.org/github/enkessler/cql.svg?branch=master)](https://inch-ci.org/github/enkessler/cql)
---
# CQL (Cucumber Query Language)
CQL is a domain specific language used for querying a Cucumber (or other Gherkin based) test suite. It is written
in Ruby and powered by the [cuke_modeler](https://github.com/enkessler/cuke_modeler) gem. The goal of CQL is to increase the ease with which
useful information can be extracted from a modeled test suite and turned into summarized data or reports.
Some uses for example are:
* Build systems
* Reporting
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'cql'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install cql
## Usage
* Create a new ruby file and require the gem
require 'cql'
* Start querying things!
The first thing that needs to be done is to create a CQL Repository. This can be done with the following line:
require 'cql'
cql_repo = CQL::Repository.new "/path-to/my/feature-files"
Repositories can also be created from an existing model:
directory = CukeModeler::Directory.new("/path-to/my/feature-files")
cql_repo = CQL::Repository.new(directory)
Now that you have a repository you can write a query. A simple example is given below
cql_repo.query do
select name, source_line
from features
end
This will return a list of all of the feature names and source lines in the form of a list of hashes.
[{'name' => 'Feature 1', 'source_line' => 1},
{'name' => 'Feature 2', 'source_line' => 3},
{'name' => 'Feature 3', 'source_line' => 10}]
Alternatively, you can activate the extensions to the `cuke_modeler` gem and query models directly:
require 'cql'
require 'cql/model_dsl'
directory = CukeModeler::Directory.new("/path-to/my/feature-files")
directory.query do
select name, source_line
from features
end
For more information on the query options, see the documentation [here](https://github.com/enkessler/cql/tree/master/testing/cucumber/features).
## Development and Contributing
See [CONTRIBUTING.md](https://github.com/enkessler/cql/blob/master/CONTRIBUTING.md)
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).