joi 0.0.2 → 0.0.3

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 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: