guard-jest_runner 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +27 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +75 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/guard-jest_runner.gemspec +35 -0
- data/lib/guard/jest_runner/runner.rb +125 -0
- data/lib/guard/jest_runner/version.rb +16 -0
- data/lib/guard/jest_runner.rb +136 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c1847de557f71cf8d145bdf4f0b19054c01481070f0e8c1ecca65d0cdb8191fc
|
4
|
+
data.tar.gz: a580e164831f24e9a8c865aa9e5aa2bcc8902d78cab70ae2e56e39f3761b8dc0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1829c01972e0bda7e10bfb1813b85dd0b355942723a026cf146d9755f79c7c5df7423a198c782f9bf0ec02b505fe5610c01688755a3b3002cb4f851fe32e677e
|
7
|
+
data.tar.gz: 8d5dd3199ec048465e64c5d837d139f223ff05726f383f52f72d42c681d9d86fdc771c83bfe3330c533d1567157f6ea223d1c273b79893507d3f18845c99ca45
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require: rubocop-rspec
|
2
|
+
AllCops:
|
3
|
+
DisplayCopNames: true
|
4
|
+
DisplayStyleGuide: true
|
5
|
+
Exclude:
|
6
|
+
- bin/**/*
|
7
|
+
- db/**/*
|
8
|
+
- vendor/**/*
|
9
|
+
- Guardfile
|
10
|
+
Rails:
|
11
|
+
Enabled: true
|
12
|
+
Metrics/LineLength:
|
13
|
+
Max: 100
|
14
|
+
Style/Documentation:
|
15
|
+
Enabled: false
|
16
|
+
Style/NumericLiterals:
|
17
|
+
Enabled: false
|
18
|
+
Style/ClassAndModuleChildren:
|
19
|
+
Enabled: false
|
20
|
+
MethodLength:
|
21
|
+
Max: 15
|
22
|
+
Enabled: false
|
23
|
+
Enabled: false
|
24
|
+
RegexpLiteral:
|
25
|
+
Exclude:
|
26
|
+
- '**/*.gemspec'
|
27
|
+
- '**/Guardfile'
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# Guard::JestRunner
|
2
|
+
|
3
|
+
Guard::JestRunner allows you to automatically run jest when you change a Javascript/ES6 file.
|
4
|
+
|
5
|
+
Unlike [guard-jest](https://rubygems.org/gems/guard-jest), this guard runs just as directed by your Guardfile, which allows you to use it in a group and use a Red-Green-Refactor process.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'guard-jest_runner'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install guard-jest_runner
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
Please read [Guard usage doc](https://github.com/guard/guard#readme).
|
26
|
+
|
27
|
+
## Guardfile
|
28
|
+
|
29
|
+
For a typical Rails app with webpack:
|
30
|
+
|
31
|
+
``` ruby
|
32
|
+
guard :jest do
|
33
|
+
watch(%r{app/javascript/(.+)\.js$}) { |m| "spec/javascript/#{m[1]}.test.js" }
|
34
|
+
watch(%r{spec/javascript/.+\.js$})
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
(**Recommended**) pair up with guard-eslint to get a Red-Green-Refactor process:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
group :red_green_refactor_js, halt_on_fail: true do
|
42
|
+
guard :jest_runner do
|
43
|
+
watch(%r{app/javascript/(.+)\.js$}) { |m| "spec/javascript/#{m[1]}.test.js" }
|
44
|
+
watch(%r{spec/javascript/.+\.js$})
|
45
|
+
end
|
46
|
+
|
47
|
+
guard :eslint, formatter: 'codeframe' do
|
48
|
+
watch(%r{app/javascript/(.+)\.js$}) { |m| ""}
|
49
|
+
watch(%r{spec/javascript/(.+)\.js$})
|
50
|
+
end
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
### List of available options:
|
55
|
+
|
56
|
+
``` ruby
|
57
|
+
all_on_start: false # Run all specs after changed specs pass.
|
58
|
+
keep_failed: true # Keep failed files until they pass (add them to new ones)
|
59
|
+
notification: true # Display notification always when jest completes.
|
60
|
+
# If you want to notify only on failure, set to :failure.
|
61
|
+
cli: nil # Additional command-line options to pass to jest.
|
62
|
+
# Don't use the '-f' or '--format' option here.
|
63
|
+
command: 'jest' # Specify a custom path to the jest command.
|
64
|
+
default_paths: ['**/*.js', '**/*.es6'] # The default paths that will be used for "all_on_start".
|
65
|
+
```
|
66
|
+
|
67
|
+
## Contributing
|
68
|
+
|
69
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/RobinDaugherty/guard-jest_runner.
|
70
|
+
|
71
|
+
* Please create a topic branch for every separate change you make.
|
72
|
+
* Make sure your patches are well-tested.
|
73
|
+
* Update the README to reflect your changes.
|
74
|
+
* Please **do not change** the version number.
|
75
|
+
* Open a pull request.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "guard/jest"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'guard/jest_runner/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "guard-jest_runner"
|
8
|
+
s.version = Guard::JestRunnerVersion.to_s
|
9
|
+
s.authors = %w[RobinDaugherty]
|
10
|
+
s.email = %w[robin@robindaugherty.net]
|
11
|
+
|
12
|
+
s.description = %q{Allows you to add jest to your Guard toolchain, so that jest is run.}
|
13
|
+
s.summary = %q{Guard to run jest.}
|
14
|
+
s.homepage = "https://github.com/RobinDaugherty/guard-jest_runner"
|
15
|
+
s.license = "MIT"
|
16
|
+
|
17
|
+
if s.respond_to?(:metadata)
|
18
|
+
s.metadata['changelog_uri'] = 'https://github.com/RobinDaugherty/guard-jest_runner/releases'
|
19
|
+
s.metadata['source_code_uri'] = 'https://github.com/RobinDaugherty/guard-jest_runner'
|
20
|
+
s.metadata['bug_tracker_uri'] = 'https://github.com/RobinDaugherty/guard-jest_runner/issues'
|
21
|
+
else
|
22
|
+
puts "Your RubyGems does not support metadata. Update if you'd like to make a release."
|
23
|
+
end
|
24
|
+
|
25
|
+
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
+
s.require_paths = ["lib"]
|
27
|
+
|
28
|
+
s.required_ruby_version = ">= 2.0.0"
|
29
|
+
|
30
|
+
s.add_dependency 'guard', "~> 2.1"
|
31
|
+
s.add_dependency 'guard-compat', "~> 1.1"
|
32
|
+
|
33
|
+
s.add_development_dependency "rake", "~> 10.0"
|
34
|
+
s.add_development_dependency "rspec", "~> 3.0"
|
35
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Guard
|
6
|
+
class JestRunner
|
7
|
+
# This class runs `jest` command, retrieves result and notifies.
|
8
|
+
# An instance of this class is intended to invoke `jest` only once in its lifetime.
|
9
|
+
class Runner
|
10
|
+
def initialize(options)
|
11
|
+
@options = options
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_reader :options
|
15
|
+
|
16
|
+
def run(paths)
|
17
|
+
paths = options[:default_paths] unless paths
|
18
|
+
|
19
|
+
command = command_for_check(paths)
|
20
|
+
passed = system(*command)
|
21
|
+
case options[:notification]
|
22
|
+
when :failed
|
23
|
+
notify(passed) unless passed
|
24
|
+
when true
|
25
|
+
notify(passed)
|
26
|
+
end
|
27
|
+
|
28
|
+
passed
|
29
|
+
end
|
30
|
+
|
31
|
+
def command_for_check(paths)
|
32
|
+
command = [options[:command]]
|
33
|
+
|
34
|
+
command.concat(args_specified_by_user)
|
35
|
+
command.concat(['--json', "--outputFile=#{json_file_path}"])
|
36
|
+
command.concat(paths)
|
37
|
+
end
|
38
|
+
|
39
|
+
def args_specified_by_user
|
40
|
+
@args_specified_by_user ||= begin
|
41
|
+
args = options[:cli]
|
42
|
+
case args
|
43
|
+
when Array then args
|
44
|
+
when String then args.shellsplit
|
45
|
+
when NilClass then []
|
46
|
+
else fail ':cli option must be either an array or string'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def json_file_path
|
52
|
+
@json_file_path ||= begin
|
53
|
+
json_file.close
|
54
|
+
json_file.path
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# Keep the Tempfile instance around so it isn't garbage-collected and therefore deleted.
|
60
|
+
def json_file
|
61
|
+
@json_file ||= begin
|
62
|
+
# Just generate random tempfile path.
|
63
|
+
basename = self.class.name.downcase.gsub('::', '_')
|
64
|
+
Tempfile.new(basename)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def result
|
69
|
+
@result ||= begin
|
70
|
+
File.open(json_file_path) do |file|
|
71
|
+
# Rubinius 2.0.0.rc1 does not support `JSON.load` with 3 args.
|
72
|
+
JSON.parse(file.read, symbolize_names: true)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def notify(passed)
|
78
|
+
image = passed ? :success : :failed
|
79
|
+
Notifier.notify(summary_text, title: 'Jest results', image: image)
|
80
|
+
end
|
81
|
+
|
82
|
+
def summary_text
|
83
|
+
summary = {
|
84
|
+
tests_run: result[:numTotalTests],
|
85
|
+
passed: result[:numPassedTests],
|
86
|
+
pending: result[:numPendingTests],
|
87
|
+
failed: result[:numFailedTests],
|
88
|
+
}
|
89
|
+
|
90
|
+
String.new.tap do |text|
|
91
|
+
if summary[:failed] > 0
|
92
|
+
text << pluralize(summary[:failed], 'example')
|
93
|
+
text << " failed"
|
94
|
+
text << " (#{summary[:passed]} passed"
|
95
|
+
text << ", #{summary[:pending]} pending" if summary[:pending] > 0
|
96
|
+
text << ")."
|
97
|
+
else
|
98
|
+
text << "#{summary[:passed]} passed"
|
99
|
+
text << " (#{summary[:pending]} pending)" if summary[:pending] > 0
|
100
|
+
text << "."
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def failed_paths
|
106
|
+
result[:testResults].select { |f| f[:status] == "failed" }.map { |f| f[:name] }.uniq
|
107
|
+
end
|
108
|
+
|
109
|
+
def pluralize(number, thing, options = {})
|
110
|
+
text = String.new
|
111
|
+
|
112
|
+
if number == 0 && options[:no_for_zero]
|
113
|
+
text = 'no'
|
114
|
+
else
|
115
|
+
text << number.to_s
|
116
|
+
end
|
117
|
+
|
118
|
+
text << " #{thing}"
|
119
|
+
text << 's' unless number == 1
|
120
|
+
|
121
|
+
text
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Guard
|
4
|
+
# A workaround for some superclass BS
|
5
|
+
# where Jest < Guard has to exist?
|
6
|
+
module JestRunnerVersion
|
7
|
+
# http://semver.org/
|
8
|
+
MAJOR = 1
|
9
|
+
MINOR = 0
|
10
|
+
PATCH = 0
|
11
|
+
|
12
|
+
def self.to_s
|
13
|
+
[MAJOR, MINOR, PATCH].join('.')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'guard/compat/plugin'
|
4
|
+
|
5
|
+
module Guard
|
6
|
+
class JestRunner < Plugin
|
7
|
+
autoload :Runner, 'guard/jest_runner/runner'
|
8
|
+
|
9
|
+
# Initializes a Guard plugin.
|
10
|
+
# Don't do any work here, especially as Guard plugins get initialized
|
11
|
+
# even if they are not in an active group!
|
12
|
+
#
|
13
|
+
# @param [Hash] options the custom Guard plugin options
|
14
|
+
# @option options [Array<Guard::Watcher>] watchers the Guard plugin file watchers
|
15
|
+
# @option options [Symbol] group the group this Guard plugin belongs to
|
16
|
+
# @option options [Boolean] any_return allow any object to be returned from a watcher
|
17
|
+
#
|
18
|
+
def initialize(options = {})
|
19
|
+
super
|
20
|
+
|
21
|
+
@options = {
|
22
|
+
all_on_start: false,
|
23
|
+
keep_failed: true,
|
24
|
+
notification: true,
|
25
|
+
cli: nil,
|
26
|
+
command: 'jest',
|
27
|
+
default_paths: ['**/*.js', '**/*.es6'],
|
28
|
+
}.merge(options)
|
29
|
+
|
30
|
+
@failed_paths = []
|
31
|
+
end
|
32
|
+
|
33
|
+
# Called once when Guard starts. Please override initialize method to init stuff.
|
34
|
+
#
|
35
|
+
# @raise [:task_has_failed] when start has failed
|
36
|
+
# @return [Object] the task result
|
37
|
+
#
|
38
|
+
def start
|
39
|
+
Compat::UI.info 'Guard::JestRunner is running'
|
40
|
+
run_all if options[:all_on_start]
|
41
|
+
end
|
42
|
+
|
43
|
+
# Called when `reload|r|z + enter` is pressed.
|
44
|
+
# This method should be mainly used for "reload" (really!) actions like reloading
|
45
|
+
# passenger/spork/bundler/...
|
46
|
+
#
|
47
|
+
# @raise [:task_has_failed] when reload has failed
|
48
|
+
# @return [Object] the task result
|
49
|
+
#
|
50
|
+
def reload
|
51
|
+
runner.reload
|
52
|
+
end
|
53
|
+
|
54
|
+
# Called when just `enter` is pressed
|
55
|
+
# This method should be principally used for long action like running all specs/tests/...
|
56
|
+
#
|
57
|
+
# @raise [:task_has_failed] when run_all has failed
|
58
|
+
# @return [Object] the task result
|
59
|
+
#
|
60
|
+
def run_all
|
61
|
+
Compat::UI.info 'Running jest for all Javascript files'
|
62
|
+
inspect_with_jest
|
63
|
+
end
|
64
|
+
|
65
|
+
# Called on file(s) additions that the Guard plugin watches.
|
66
|
+
#
|
67
|
+
# @param [Array<String>] paths the changes files or paths
|
68
|
+
# @raise [:task_has_failed] when run_on_additions has failed
|
69
|
+
# @return [Object] the task result
|
70
|
+
#
|
71
|
+
def run_on_additions(paths)
|
72
|
+
run_partially(paths)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Called on file(s) modifications that the Guard plugin watches.
|
76
|
+
#
|
77
|
+
# @param [Array<String>] paths the changes files or paths
|
78
|
+
# @raise [:task_has_failed] when run_on_modifications has failed
|
79
|
+
# @return [Object] the task result
|
80
|
+
#
|
81
|
+
def run_on_modifications(paths)
|
82
|
+
run_partially(paths)
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def inspect_with_jest(paths = [])
|
88
|
+
runner = Runner.new(@options)
|
89
|
+
passed = runner.run(paths)
|
90
|
+
@failed_paths = runner.failed_paths
|
91
|
+
throw :task_has_failed unless passed
|
92
|
+
rescue => error
|
93
|
+
Compat::UI.error 'The following exception occurred while running guard-jest_runner: ' \
|
94
|
+
"#{error.backtrace.first} #{error.message} (#{error.class.name})"
|
95
|
+
end
|
96
|
+
|
97
|
+
def run_partially(paths)
|
98
|
+
paths += @failed_paths if @options[:keep_failed]
|
99
|
+
paths = clean_paths(paths)
|
100
|
+
|
101
|
+
return if paths.empty?
|
102
|
+
|
103
|
+
displayed_paths = paths.map { |path| smart_path(path) }
|
104
|
+
Compat::UI.info "Running jest: #{displayed_paths.join(' ')}"
|
105
|
+
|
106
|
+
inspect_with_jest(paths)
|
107
|
+
end
|
108
|
+
|
109
|
+
def clean_paths(paths)
|
110
|
+
paths = paths.dup
|
111
|
+
paths.map! { |path| File.expand_path(path) }
|
112
|
+
paths.uniq!
|
113
|
+
paths.reject! do |path|
|
114
|
+
next true unless File.exist?(path)
|
115
|
+
included_in_other_path?(path, paths)
|
116
|
+
end
|
117
|
+
paths
|
118
|
+
end
|
119
|
+
|
120
|
+
def included_in_other_path?(target_path, other_paths)
|
121
|
+
dir_paths = other_paths.select { |path| File.directory?(path) }
|
122
|
+
dir_paths.delete(target_path)
|
123
|
+
dir_paths.any? do |dir_path|
|
124
|
+
target_path.start_with?(dir_path)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def smart_path(path)
|
129
|
+
if path.start_with?(Dir.pwd)
|
130
|
+
Pathname.new(path).relative_path_from(Pathname.getwd).to_s
|
131
|
+
else
|
132
|
+
path
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: guard-jest_runner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- RobinDaugherty
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: guard
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: guard-compat
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
description: Allows you to add jest to your Guard toolchain, so that jest is run.
|
70
|
+
email:
|
71
|
+
- robin@robindaugherty.net
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
78
|
+
- ".rubocop.yml"
|
79
|
+
- ".travis.yml"
|
80
|
+
- Gemfile
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- bin/console
|
84
|
+
- bin/setup
|
85
|
+
- guard-jest_runner.gemspec
|
86
|
+
- lib/guard/jest_runner.rb
|
87
|
+
- lib/guard/jest_runner/runner.rb
|
88
|
+
- lib/guard/jest_runner/version.rb
|
89
|
+
homepage: https://github.com/RobinDaugherty/guard-jest_runner
|
90
|
+
licenses:
|
91
|
+
- MIT
|
92
|
+
metadata:
|
93
|
+
changelog_uri: https://github.com/RobinDaugherty/guard-jest_runner/releases
|
94
|
+
source_code_uri: https://github.com/RobinDaugherty/guard-jest_runner
|
95
|
+
bug_tracker_uri: https://github.com/RobinDaugherty/guard-jest_runner/issues
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 2.0.0
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.7.6
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Guard to run jest.
|
116
|
+
test_files: []
|