automated-commands 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -20,16 +20,18 @@ Or install it yourself as:
20
20
 
21
21
  You basically need to follow two steps to get it up and running:
22
22
 
23
- $ bundle exec rake automated_commands:watch &
24
- $ RAILS_ENV=test bundle exec rails c
25
- irb(main):001:0> start_test_listener
23
+ ``` bash
24
+ $ RAILS_ENV=test bundle exec rails c
25
+ ```
26
+ ``` ruby
27
+ irb(main):001:0> start_test_listener
28
+ ```
26
29
 
27
30
  That's it! Now when you are changing any files located under `test` your tests will be automatically be run.
28
31
 
29
32
  ## TODO
30
33
 
31
34
  - tests
32
- - display test results in :watch task output
33
35
 
34
36
  ## Contributing
35
37
 
@@ -3,8 +3,4 @@ require "automated_commands/test_result"
3
3
 
4
4
  require "automated_commands/rails/console_methods"
5
5
 
6
- require "automated_commands/railtie" if defined?(Rails)
7
-
8
- if defined?(Rake)
9
- Dir[File.join(File.dirname(__FILE__), "../tasks/*.rake")].each { |ext| load ext }
10
- end
6
+ require "automated_commands/railtie" if defined?(Rails)
@@ -1,26 +1,42 @@
1
1
  # encoding: utf-8
2
2
  require 'drb'
3
+ require 'listen'
4
+ require 'pathname'
3
5
 
4
6
  module AutomatedCommands
5
7
  module Rails
6
8
  module ConsoleMethods
7
9
  def start_test_listener
10
+ %x[mkfifo ./test_pipe]
11
+
12
+ change_listener = setup_change_listener
13
+ change_listener.start false
14
+
8
15
  original_trap = Signal.trap("SIGINT", proc { raise "exit" })
16
+ handle_file_changes # blocks until user stops using STRG+C
17
+ Signal.trap("SIGINT", &original_trap)
18
+
19
+ change_listener.stop
20
+ %x[rm ./test_pipe]
21
+
22
+ nil
23
+ end
24
+
25
+ private
26
+
27
+ def handle_file_changes
28
+ distributed_test_result = TestResult.new(0, 0, 0, 0, 0)
29
+ last_test_result = nil
9
30
 
10
31
  mapping = {
11
32
  "models" => "unit",
12
33
  "controllers" => "functional"
13
34
  }
14
35
 
15
- distributed_test_result = TestResult.new(0, 0, 0, 0, 0)
16
- last_test_result = nil
17
-
18
36
  DRb.start_service 'druby://:9191', distributed_test_result
19
-
20
37
  loop do
21
38
  begin
22
39
  input = open(::Rails.root.join("test_pipe"), "r+")
23
-
24
40
  path = input.gets # e.g. test/unit/some_test.rb
25
41
 
26
42
  reload!
@@ -43,11 +59,29 @@ module AutomatedCommands
43
59
  end
44
60
  end
45
61
 
46
- Signal.trap("SIGINT", &original_trap)
47
62
  DRb.stop_service
48
-
49
63
  nil
50
64
  end
65
+
66
+ def setup_change_listener
67
+ return ::Listen::MultiListener.new('test', 'app', filter: /.*\.rb$/, latency: 0.2) do |modified, added, removed|
68
+ output = open("test_pipe", "w+")
69
+
70
+ (modified || []).each do |modified_file|
71
+ path = Pathname.new(modified_file)
72
+
73
+ output.puts path.relative_path_from(Pathname.pwd)
74
+ output.flush
75
+ end
76
+
77
+ (added || []).each do |added_file|
78
+ path = Pathname.new(added_file)
79
+
80
+ output.puts path.relative_path_from(Pathname.pwd)
81
+ output.flush
82
+ end
83
+ end
84
+ end
51
85
  end
52
86
  end
53
87
  end
@@ -1,3 +1,3 @@
1
1
  module AutomatedCommands
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: automated-commands
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Raphael Randschau
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-14 00:00:00.000000000 Z
12
+ date: 2013-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement
@@ -77,7 +77,6 @@ files:
77
77
  - lib/automated_commands/railtie.rb
78
78
  - lib/automated_commands/test_result.rb
79
79
  - lib/automated_commands/version.rb
80
- - tasks/watch.rake
81
80
  homepage: ''
82
81
  licenses: []
83
82
  post_install_message:
@@ -1,30 +0,0 @@
1
- namespace :automated_commands do
2
- desc "watch TestUnit files for changes"
3
- task :watch do
4
- require 'listen'
5
- require 'pathname'
6
-
7
- %x[mkfifo ./test_pipe]
8
- at_exit { %x[rm ./test_pipe] }
9
-
10
- p "listening for changes in your tests"
11
-
12
- Listen.to('test', 'app', filter: /.*\.rb$/, latency: 0.2) do |modified, added, removed|
13
- output = open("test_pipe", "w+")
14
-
15
- (modified || []).each do |modified_file|
16
- path = Pathname.new(modified_file)
17
-
18
- output.puts path.relative_path_from(Pathname.pwd)
19
- output.flush
20
- end
21
-
22
- (added || []).each do |added_file|
23
- path = Pathname.new(added_file)
24
-
25
- output.puts path.relative_path_from(Pathname.pwd)
26
- output.flush
27
- end
28
- end
29
- end
30
- end