joi 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c6c04eeb7bc068e1f782ab77368df567c7978ba971a9da566b488c838d8a22a
4
- data.tar.gz: 73791ad41fd9e8db850a98f286407b97a23fc6f99bc6ae7f3991e4b27e198e2a
3
+ metadata.gz: 328ef14f30303e44cae5529081331cef7e478fbfc732d8e5214d448ea7d6f940
4
+ data.tar.gz: 30164290023480375dea64e69237efad2681fb6d40c8f8e9f37a0ead6f6dabb6
5
5
  SHA512:
6
- metadata.gz: 17635fc54038b47297d1b51e403d14f39bb956095149c407964c17b76d6eed95fe71a83e4c7c6dd04365ab9b40ddd610b43a7cb5e162312014fc34705eaa4589
7
- data.tar.gz: 7523240dcb28b9b7b51d42e4bfcfb6f12e2888c0b05ff68afc3b2d0d49bc9ceb23038de9441b3791d6158001df5fa1b1ae8bb349f57e83da4a817fe3377ba50b
6
+ metadata.gz: a323d5232ba8cc662af4c9d0ce1dbea7d6e02849a4f9ca18f111650284598ac29ef28283e2d1f93a7228e29641ef1e8a36d90cf8d35853f61107a17b93eb3274
7
+ data.tar.gz: 541b1b87129f2de4c084952b5f2341acd571406d82b56acb98971bf67aca10c76ba83bb9755c1b69a7e739dc6e1db3b08abcaac19cec460d0ea6b140fa70f807
@@ -24,7 +24,7 @@ jobs:
24
24
  - Gemfile
25
25
 
26
26
  steps:
27
- - uses: actions/checkout@v2.4.0
27
+ - uses: actions/checkout@v3
28
28
 
29
29
  - uses: actions/cache@v2
30
30
  with:
data/CHANGELOG.md CHANGED
@@ -11,6 +11,12 @@ Prefix your message with one of the following:
11
11
  - [Security] in case of vulnerabilities.
12
12
  -->
13
13
 
14
+ ## v0.0.3
15
+
16
+ - [Fixed] Only listen to `.rb` files.
17
+ - [Added] `--debug` will output additional info to help you understand why or
18
+ why not tests are being executed.
19
+
14
20
  ## v0.0.2
15
21
 
16
22
  - [Changed] SIGINT (ctrl-c) will run all tests.
data/README.md CHANGED
@@ -26,7 +26,8 @@ $ joi -h
26
26
  Usage: joi [OPTIONS]
27
27
  -b, --[no-]bundler Use bundler to run commands.
28
28
  --rails Use this in Rails projects.
29
- -h, --help Prints this help
29
+ --debug Enable debug output.
30
+ -h, --help Prints this help.
30
31
  ```
31
32
 
32
33
  Only `.rb` files are watched. Changes on `lib/**/*.rb` and `app/**/*.rb` files
@@ -35,6 +36,9 @@ will run only matching test files (e.g. `app/models/user.rb` changes will run
35
36
  tests are executed. Any `.rb` file that's either created or removed file will
36
37
  also trigger a full suite run.
37
38
 
39
+ To avoid passing `--rails`, you can create a `.rails` file at the project's root
40
+ directory.
41
+
38
42
  You can use `SIGINT` (ctrl-c) to run all tests. To stop joi, use `SIGQUIT`
39
43
  (ctrl-\\).
40
44
 
data/lib/joi/cli.rb CHANGED
@@ -8,10 +8,20 @@ module Joi
8
8
  @argv = argv
9
9
  end
10
10
 
11
+ def dot_rails_file?
12
+ File.file?(File.join(Dir.pwd, ".rails"))
13
+ end
14
+
15
+ def gemfile?
16
+ File.file?(File.join(Dir.pwd, "Gemfile")) ||
17
+ File.file?(File.join(Dir.pwd, "gems.rb"))
18
+ end
19
+
11
20
  def options
12
21
  @options ||= {
13
- rails: File.file?(File.join(Dir.pwd, ".rails")),
14
- bundler: true
22
+ rails: dot_rails_file?,
23
+ bundler: gemfile?,
24
+ debug: false
15
25
  }
16
26
  end
17
27
 
@@ -29,7 +39,11 @@ module Joi
29
39
  options[:rails] = rails
30
40
  end
31
41
 
32
- parser.on("-h", "--help", "Prints this help") do
42
+ parser.on("--debug", "Enable debug output.") do |debug|
43
+ options[:debug] = debug
44
+ end
45
+
46
+ parser.on("-h", "--help", "Prints this help.") do
33
47
  puts parser
34
48
  exit
35
49
  end
@@ -38,6 +52,9 @@ module Joi
38
52
 
39
53
  runner = Runner.new(options: options)
40
54
 
55
+ runner.debug(".rails file found?", dot_rails_file?)
56
+ runner.debug("options:", options)
57
+
41
58
  trap("INT") { runner.run_all }
42
59
  trap("QUIT") { exit! }
43
60
 
@@ -93,12 +93,10 @@ module Joi
93
93
  end
94
94
 
95
95
  def run(env, command)
96
- puts [
97
- "\e[37m$",
96
+ runner.log_command([
98
97
  *command.map {|arg| Shellwords.shellescape(arg) },
99
- env_vars(env),
100
- "\e[0m"
101
- ].compact.join(" ")
98
+ env_vars(env)
99
+ ].join(" "))
102
100
 
103
101
  system(env || {}, *command)
104
102
  end
data/lib/joi/runner.rb CHANGED
@@ -2,13 +2,14 @@
2
2
 
3
3
  module Joi
4
4
  class Runner
5
- attr_reader :root_dir, :watchers, :preset
5
+ attr_reader :root_dir, :watchers, :preset, :options
6
6
 
7
7
  def initialize(
8
8
  options:,
9
9
  root_dir: Dir.pwd,
10
10
  preset: Presets::Default.new(self, options)
11
11
  )
12
+ @options = options
12
13
  @root_dir = Pathname.new(root_dir)
13
14
  @watchers = []
14
15
  @preset = preset
@@ -25,12 +26,19 @@ module Joi
25
26
 
26
27
  listener = Listen.to(
27
28
  root_dir.to_s,
28
- ignore: [%r{(public|node_modules|assets|vendor)/}]
29
+ ignore: [%r{(public|node_modules|assets|vendor)/}],
30
+ only: [/\.(rb)$/]
29
31
  ) do |modified, added, removed|
30
32
  modified = convert_to_relative_paths(modified)
31
33
  added = convert_to_relative_paths(added)
32
34
  removed = convert_to_relative_paths(removed)
33
35
 
36
+ if options[:debug]
37
+ debug("added files:", added.map(&:to_s).inspect)
38
+ debug("modified files:", modified.map(&:to_s).inspect)
39
+ debug("removed files:", removed.map(&:to_s).inspect)
40
+ end
41
+
34
42
  watchers.each do |watcher|
35
43
  run_watcher(
36
44
  watcher,
@@ -46,6 +54,16 @@ module Joi
46
54
  sleep
47
55
  end
48
56
 
57
+ def debug(*args)
58
+ return unless options[:debug]
59
+
60
+ puts ["\e[37m[debug]\e[0m", *args].join(" ")
61
+ end
62
+
63
+ def log_command(command)
64
+ puts ["\e[37m$ ", command, "\e[0m"].join
65
+ end
66
+
49
67
  def run_watcher(watcher, modified:, added:, removed:)
50
68
  paths = []
51
69
  paths += modified if watcher[:on].include?(:modified)
@@ -55,7 +73,12 @@ module Joi
55
73
  watcher[:pattern].any? {|pattern| path.to_s.match?(pattern) }
56
74
  end
57
75
 
58
- return unless paths.any?
76
+ unless paths.any?
77
+ debug("skipping watcher:", watcher.slice(:on, :pattern))
78
+ return
79
+ end
80
+
81
+ debug("running watcher:", watcher.slice(:on, :pattern))
59
82
 
60
83
  watcher[:thread]&.kill
61
84
  watcher[:thread] = Thread.new { watcher[:command].call(paths) }
data/lib/joi/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Joi
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-28 00:00:00.000000000 Z
11
+ date: 2022-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: listen
@@ -163,10 +163,10 @@ metadata:
163
163
  rubygems_mfa_required: 'true'
164
164
  homepage_uri: https://github.com/fnando/joi
165
165
  bug_tracker_uri: https://github.com/fnando/joi/issues
166
- source_code_uri: https://github.com/fnando/joi/tree/v0.0.2
167
- changelog_uri: https://github.com/fnando/joi/tree/v0.0.2/CHANGELOG.md
168
- documentation_uri: https://github.com/fnando/joi/tree/v0.0.2/README.md
169
- license_uri: https://github.com/fnando/joi/tree/v0.0.2/LICENSE.md
166
+ source_code_uri: https://github.com/fnando/joi/tree/v0.0.3
167
+ changelog_uri: https://github.com/fnando/joi/tree/v0.0.3/CHANGELOG.md
168
+ documentation_uri: https://github.com/fnando/joi/tree/v0.0.3/README.md
169
+ license_uri: https://github.com/fnando/joi/tree/v0.0.3/LICENSE.md
170
170
  post_install_message:
171
171
  rdoc_options: []
172
172
  require_paths: