Corgibytes::Freshli::Commons

Common testing and build tools code used by Freshli projects.

Installation

Install the gem and add to the application's Gemfile by executing:

$ bundle add freshli-commons

If bundler is not being used to manage dependencies, install the gem by executing:

$ gem install freshli-commons

Usage

Step Definitions

The following step definitions, and supporting classes, are defined in this repository:

Working with command output:

  • Then(/^it should (pass|fail) with exact output containing file paths:$/)

Working with CycloneDX files:

  • Then('the CycloneDX file {string} should be valid')
  • Then('the CycloneDX file {string} should contain {string}')

Working with Git repositories:

  • Given('I clone the git repository {string} with the sha {string}')
  • Then('running git status should not report any modifications for {string}')

Working with Freshli Language Agent gRPC services:

  • Given('a test service is started on port {int}')
  • Then('GetValidatingRepositories response should contain:')
  • Then('RetrieveReleaseHistory response should be empty')
  • Then('RetrieveReleaseHistory response should contain the following versions and release dates:')
  • Then('the DetectManifests response contains the following file paths expanded beneath {string}:')
  • Then('the freshli_agent.proto gRPC service is running on port {int}')
  • Then('the GetValidatingPackages response should contain:')
  • Then('the ProcessManifest response contains the following file paths expanded beneath {string}:')
  • Then('there are no services running on port {int}')
  • When('I call DetectManifests with the full path to {string} on port {int}')
  • When('I call GetValidatingPackages on port {int}')
  • When('I call GetValidatingRepositories on port {int}')
  • When('I call ProcessManifest with the expanded path {string} and the moment {string} on port {int}')
  • When('I call RetrieveReleaseHistory with {string} on port {int}')
  • When('I wait for the freshli_agent.proto gRPC service to be running on port {int}')
  • When('the gRPC service on port {int} is sent the shutdown command')
  • When('the test service running on port {int} is stopped')

Execute

The Corgibytes::Freshli::Commons::Execute module contains methods for helping with executing shell commands in a shell/like Ruby script, such as build.rb, test.rb, lint.rb.

Files that use it should pull it in using:

require 'corgibytes/freshli/commons/execute'
# rubocop:disable Style/MixinUsage
include Corgibytes::Freshli::Commons::Execute
# rubocop:enable Style/MixinUsage

The rubocop disable/enable lines avoid a warning from Rubocop about including the modules contents into the global namespace.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in .semver, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/corgibytes/freshli-commons.