devloop 0.0.7 → 0.0.9

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: 329272a8c3033e7d6d4cb63d2ca284b87f8d4883e64fc613ad00e2f2eaf7ca8b
4
- data.tar.gz: 3fa337ca6600ffd440c53170ed6d1aa59cdf09207d64738c8248cf3f027e2ab6
3
+ metadata.gz: df5e69165e639a7c989ba94a3e645beb934ee3d265906dfcb327def357867a09
4
+ data.tar.gz: 2351433c44454695d6f6ea2bcdd26f574dd79c5939b2fbc2eacd2d9d908f987c
5
5
  SHA512:
6
- metadata.gz: 48664a8ba229cd1730994c47d60f1a1f0fcb7e225f038c6903ae17125f27ae3091b8ef75d75558932b21e6e82ad15e5e3de47fdfc337450b15dacf3b88644a29
7
- data.tar.gz: c75e9d90a51e8aa003e0f069490004957241dbc54543fe202058efd82ab943678b094d7ff45f2a1aad44fd31240f9d7c656b8b7e08a8fa9f2f4432f37596ae21
6
+ metadata.gz: 3c4744c85d13176a521691e28232d9db7ef14eacb00cd374fc533ac2d7641dfcf23edf228c30bf3cec02cee7e31e596f986da89e1214a25b6df27a4f48b4e376
7
+ data.tar.gz: fbbfc4813cc205ed367529ae84ca758a5915dbba407e052042ff74f9934b71c5e74d56dba3d708e02e2e590e3a5309815aff51422c029d84bc7ed8905136710b
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Devloop is an automated Rspec runner for Rails apps inspired by [TLDR](https://github.com/tendersearls/tldr). The purpose of this tool is to provide continuous and instant feedback when working on the Rails app. It runs only specs from _lines_ modified in the recent git commits. Even if you have a large `spec/user_spec.rb` file, you'll receive specs feedback in ~second on each file save.
4
4
 
5
+ Optionally, you can edit first line of any spec file (i.e. add `#`) to run all the tests from it.
6
+
5
7
  ## Installation
6
8
 
7
9
  It uses [fswatch](https://github.com/emcrisostomo/fswatch) so make sure to install it first:
@@ -22,7 +24,16 @@ Now you can run:
22
24
  bundle exec devloop
23
25
  ```
24
26
 
25
- While this command it running it will automatically execute tests related to the recently modified lines of code from `spec/` folder.
27
+ You can also use it without adding to the `Gemfile`:
28
+
29
+ ```bash
30
+ gem install devloop
31
+ devloop
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ While `devloop` command is running it will automatically execute tests related to the recently modified lines of code from `spec/` folder.
26
37
 
27
38
  Devloop will automatically detect if [Spring](https://github.com/rails/spring) is enabled for your Rails app. I've observed it reduces time needed to run specs by ~4x.
28
39
 
data/bin/devloop CHANGED
@@ -6,9 +6,11 @@ require "devloop"
6
6
 
7
7
  begin
8
8
  system("bundle exec spring > /dev/null 2>&1")
9
- system("bundle exec devloop_run")
9
+ is_bundled = `bundle list`.include?("devloop")
10
+ run_command = is_bundled ? "bundle exec devloop_run" : "devloop_run"
11
+ system(run_command)
10
12
  puts "Devloop: watching for changes in spec directory..."
11
- system("fswatch -e '.*' -i '\.rb$' #{Dir.pwd} | xargs -n1 -I{} bundle exec devloop_run")
13
+ system("fswatch -e '.*' -i '\.rb$' #{Dir.pwd} | xargs -n1 -I{} #{run_command}")
12
14
  rescue Interrupt # user pressed CTRL+C
13
15
  STDERR.puts "\nDevloop: exiting due to user request"
14
16
  exit 130
@@ -10,12 +10,18 @@ module Devloop
10
10
  [line[6..-1], results]
11
11
  elsif line.start_with?("@@ -")
12
12
  line_number = line.match(/@@ -(\d+)/)[1]
13
- [file, results << "#{relative_path(file)}:#{line_number}"]
13
+ if line_number == "1"
14
+ [file, results << "#{relative_path(file)}"]
15
+ else
16
+ [file, results << "#{relative_path(file)}:#{line_number}"]
17
+ end
14
18
  else
15
19
  [file, results]
16
20
  end
17
- end
18
- results
21
+ end.uniq
22
+
23
+ # Remove filenames with line number if filename without line number is present
24
+ results.reject { |result| results.include?(result.split(":").first) && result.include?(":") }
19
25
  end
20
26
 
21
27
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Devloop
4
- VERSION = "0.0.7"
4
+ VERSION = "0.0.9"
5
5
  end
@@ -4,7 +4,30 @@ require "spec_helper"
4
4
  require "devloop/diff_parser"
5
5
 
6
6
  describe Devloop::DiffParser do
7
- context "when the project root is the same as git root" do
7
+ context "first line of a file was edited" do
8
+ let(:diff) do
9
+ <<~DIFF
10
+ diff --git a/spec/models/team_spec.rb b/spec/models/team_spec.rb
11
+ index 19772f2a..9f614e20 100644
12
+ --- a/spec/models/team_spec.rb
13
+ +++ b/spec/models/team_spec.rb
14
+ @@ -1 +1,3 @@ describe Team do
15
+ - it "has_many emojis" do
16
+ + it "has_many eojis" do
17
+ @@ -24,2 +24,2 @@ describe Team do
18
+ - describe "normalize attributes" do
19
+ - it "does not allow empty string values" do
20
+ + describe "normalize attrbtes" do
21
+ + it "does not allw empty string values" do
22
+ DIFF
23
+ end
24
+
25
+ it "will run the whole file" do
26
+ expect(Devloop::DiffParser.call(diff)).to eq(["spec/models/team_spec.rb"])
27
+ end
28
+ end
29
+
30
+ context "the project root is the same as git root" do
8
31
  let(:diff1) do
9
32
  <<~DIFF
10
33
  diff --git a/spec/models/team_spec.rb b/spec/models/team_spec.rb
@@ -39,7 +62,7 @@ describe Devloop::DiffParser do
39
62
  - describe "normalize attributes" do
40
63
  - it "does not allow empty string values" do
41
64
  + describe "normalize attrbtes" do
42
- + it "does not allw empty sting values" do
65
+ + it "does not allw empty string values" do
43
66
  DIFF
44
67
  end
45
68
 
@@ -49,7 +72,7 @@ describe Devloop::DiffParser do
49
72
  end
50
73
  end
51
74
 
52
- context "when the project root is different from the git root" do
75
+ context "the project root is different from the git root" do
53
76
  let(:diff) do
54
77
  <<~DIFF
55
78
  diff --git a/src/spec/models/team_spec.rb b/src/spec/models/team_spec.rb
@@ -63,7 +86,7 @@ describe Devloop::DiffParser do
63
86
  - describe "normalize attributes" do
64
87
  - it "does not allow empty string values" do
65
88
  + describe "normalize attrbtes" do
66
- + it "does not allw empty sting values" do
89
+ + it "does not allw empty string values" do
67
90
  DIFF
68
91
  end
69
92
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devloop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - pawurb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-10 00:00:00.000000000 Z
11
+ date: 2024-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake