loris 0.1.4 → 0.1.5

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.
@@ -0,0 +1,27 @@
1
+ require.paths.push(__dirname + "/lib");
2
+ require.paths.push("./");
3
+
4
+ var sys = require('sys');
5
+ var jasmine = require('jasmine');
6
+
7
+ for(var key in jasmine) {
8
+ global[key] = jasmine[key];
9
+ }
10
+
11
+ var isVerbose = false;
12
+ var showColors = true;
13
+ var dir = __dirname;
14
+ process.argv.forEach(function(arg){
15
+ switch(arg) {
16
+ case '--color': showColors = true; break;
17
+ case '--noColor': showColors = false; break;
18
+ case '--verbose': isVerbose = true; break;
19
+ default: dir = arg; break;
20
+ }
21
+ });
22
+
23
+
24
+ jasmine.executeSpecsInFolder(dir + '/spec', function(runner, log) {
25
+ // Cannot call process.exit, standard out and standard error do not get flushed
26
+ // process.exit(runner.results().failedCount);
27
+ }, isVerbose, showColors);
data/lib/loris.rb CHANGED
@@ -18,10 +18,13 @@ require 'file_actioner'
18
18
  require 'task_manager'
19
19
  require 'pinger'
20
20
 
21
+ require 'directory_finder'
22
+
21
23
  require 'filters/extension_filter'
22
24
  require 'filters/modified_filter'
23
25
  require 'filters/file_filter'
24
26
  require 'filters/ends_with_filter'
27
+ require 'filters/starts_with_filter'
25
28
 
26
29
  require 'outputs/output_collection'
27
30
  require 'outputs/shell_output'
@@ -33,8 +36,12 @@ require 'tasks/list_task'
33
36
  require 'tasks/command_line_task'
34
37
  require 'tasks/jspec/jspec_runner'
35
38
  require 'tasks/jspec/jspec_parser'
39
+ require 'tasks/coffeescript/coffeescript_runner'
40
+ require 'tasks/coffeescript/coffeescript_parser'
36
41
  require 'tasks/javascript_lint/javascript_lint_runner'
37
42
  require 'tasks/javascript_lint/javascript_lint_parser'
43
+ require 'tasks/jasmine_node/jasmine_node_runner'
44
+ require 'tasks/jasmine_node/jasmine_node_parser'
38
45
  require 'tasks/rspec/rspec_runner'
39
46
  require 'tasks/rspec/rspec_parser'
40
47
 
@@ -98,7 +105,9 @@ module Loris
98
105
 
99
106
  tm = TaskManager.new(oc)
100
107
  tm.add(ListTask.new) if debug
108
+ tm.add(coffeescript_task(dir))
101
109
  tm.add(javascript_lint_task(dir))
110
+ tm.add(jasmine_node_task(dir))
102
111
  tm.add(CommandLineTask.new(JSpecRunner.new(dir, ExtensionFilter.new(File, 'js')), JSpecParser.new)) unless is_windows
103
112
  tm.add(jsTestDriverTask(dir))
104
113
  tm.add(CommandLineTask.new(RSpecRunner.new(dir, ExtensionFilter.new(File, 'rb'), EndsWithFilter.new('_spec.rb')), RSpecParser.new))
@@ -114,10 +123,37 @@ module Loris
114
123
 
115
124
  end
116
125
 
126
+ def coffeescript_task(dir)
127
+ return CommandLineTask.new(
128
+ CoffeeScriptRunner.new(
129
+ 'coffee',
130
+ dir,
131
+ ExtensionFilter.new(File, 'coffee'),
132
+ DirectoryFinder.new(File, StartsWithFilter.new('coffee-'))
133
+ ),
134
+ CoffeeScriptParser.new(dir)
135
+ )
136
+ end
137
+
138
+ def jasmine_node_task(dir)
139
+ node = '/usr/local/bin/node'
140
+ spec_dir = File.join(LIBDIR, 'jasmine-node')
141
+
142
+ return CommandLineTask.new(
143
+ JasmineNodeRunner.new(
144
+ node,
145
+ spec_dir,
146
+ dir,
147
+ ExtensionFilter.new(File, 'js')
148
+ ),
149
+ JasmineNodeParser.new(dir)
150
+ )
151
+ end
152
+
117
153
  # Refactor into factory
118
154
  def javascript_lint_task(dir)
119
155
  is_windows = RUBY_PLATFORM =~ /mswin32/
120
- binary = File.join(LIBDIR, 'javascript-lint' , is_windows ? 'jsl.exe' : 'jsl');
156
+ binary = File.join(LIBDIR, 'javascript-lint' , is_windows ? 'jsl.exe' : 'jsl')
121
157
 
122
158
  return CommandLineTask.new(
123
159
  JavascriptLintRunner.new(
data/lib/task_manager.rb CHANGED
@@ -3,6 +3,7 @@ class TaskManager
3
3
  def initialize(output)
4
4
  @output = output
5
5
  @tasks = []
6
+ @fail_index = -1
6
7
  end
7
8
 
8
9
  def add(task)
@@ -12,25 +13,51 @@ class TaskManager
12
13
  def run(files)
13
14
  @num_tasks_run = 0
14
15
 
15
- @tasks.each do |task|
16
+ @tasks.each_index do |index|
17
+ task = @tasks[index]
18
+
19
+ # Don't run if this task is after the last failed task
20
+ if @fail_index >= 0 && @fail_index < index
21
+ @output.add_result(@fail_result)
22
+ break
23
+ end
16
24
 
25
+ result = nil
17
26
  begin
18
- break if !run_task(files, task)
27
+ result = run_task(files, task)
19
28
  rescue Exception => ex
20
- output_exception(ex)
29
+ result = build_exception_result ex
30
+ @output.add_result result
31
+ end
32
+
33
+ next if result.nil?
34
+
35
+ if [:error, :failure].include? result[:state]
36
+ # Remember this task as the one that failed
37
+ # And end this current run of tasks
38
+ @fail_index = index
39
+ @fail_result = result
40
+
41
+ @fail_result[:state] = :error
42
+ @fail_result[:title] = 'Fix ' + @fail_result[:title] + ' to run other tasks'
43
+ break
44
+ elsif result[:state] == :success
45
+ # reset fail index
46
+ @fail_index = -1 if index == @fail_index
21
47
  end
22
48
 
23
49
  end
50
+
24
51
  end
25
52
 
26
53
  def run_task(files, task)
27
54
  result = task.run(files)
28
- return true if result.nil?
55
+ return result if result.nil?
29
56
 
30
57
  task_run
31
-
58
+
32
59
  @output.add_result(result)
33
- return !([:error, :failure].include? result[:state])
60
+ return result
34
61
  end
35
62
 
36
63
  def task_run
@@ -40,14 +67,18 @@ class TaskManager
40
67
  end
41
68
  end
42
69
 
43
- def output_exception(ex)
44
- @output.add_result({
70
+ def build_exception_result(ex)
71
+ return {
45
72
  :state => :error,
46
73
  :title => 'Task',
47
74
  :summary => 'Exception',
48
75
  :first => ex.message,
49
76
  :detail => ex.backtrace
50
- })
77
+ }
78
+ end
79
+
80
+ def output_exception(ex)
81
+ @output.add_result build_exception_result ex
51
82
  end
52
83
 
53
84
  end
@@ -0,0 +1,37 @@
1
+ class CoffeeScriptParser
2
+
3
+ def initialize(dir)
4
+ @dir = dir
5
+
6
+ # TODO: Tidy!
7
+ if (RUBY_PLATFORM =~ /mswin32/)
8
+ @dir = @dir.gsub('/', '\\')
9
+ end
10
+ end
11
+
12
+ def parse_result(detail)
13
+ if (detail.strip == '')
14
+ return :success, 'All files compiled', ''
15
+ end
16
+
17
+ summary_line = detail.grep( /^In .*/ )[0]
18
+
19
+ if summary_line.nil?
20
+ # error
21
+ error_info = (detail + "\nUnknown Error!").to_a[0].strip
22
+ return :error, 'Error', error_info
23
+ end
24
+
25
+ return :failure, 'Failed to compile', strip_dir(summary_line[3..-1].strip)
26
+ end
27
+
28
+ def strip_dir(text)
29
+
30
+ # Move to function/class w/ win32 related code
31
+ if (text[0, @dir.length] == @dir)
32
+ text = text[(@dir.length + 1)..-1]
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,37 @@
1
+ class CoffeeScriptRunner
2
+
3
+ def initialize(binary, dir, filter, dir_finder)
4
+ @binary = binary
5
+ @dir = dir
6
+ @filter = filter
7
+ @coffeescript_dir_finder = dir_finder
8
+
9
+ @js_dir = dir + '/src'
10
+ end
11
+
12
+ def name
13
+ return 'CoffeeScript'
14
+ end
15
+
16
+ def execute
17
+ output = []
18
+
19
+ @coffee_dirs.each do |coffee_dir|
20
+ js_dir = coffee_dir.sub '/coffee-', '/'
21
+ output.push `#{@binary} --compile #{coffee_dir} --output #{js_dir} 2>&1`
22
+ end
23
+
24
+ return output.join "\n"
25
+ end
26
+
27
+ # TODO: Only return true if we can find the node binary
28
+ def is_configured?(all_files)
29
+ @coffee_dirs = (@coffeescript_dir_finder.find all_files).uniq
30
+ return @coffee_dirs.length > 0
31
+ end
32
+
33
+ def should_run?(modified_files)
34
+ return !(modified_files.detect { |file| @filter.filter(file) }).nil? || modified_files.include?(@config)
35
+ end
36
+
37
+ end
@@ -0,0 +1,25 @@
1
+ class JasmineNodeParser
2
+
3
+ def initialize(dir)
4
+ @dir = dir
5
+ end
6
+
7
+ def parse_result(detail)
8
+ summary_line = detail.grep( /\d+\s+tests?.*,\s+\d+\s+assertions?.*,\s+\d+\s+failures?.*/ )[0]
9
+
10
+ if summary_line.nil?
11
+ # error
12
+ error_info = detail.grep(/Error: /)[0] || ["Unknown Error!"]
13
+ return :error, 'Error', error_info.strip
14
+ end
15
+
16
+ if summary_line =~ /([1-9]+)\d*\s+failures?/
17
+ num_failures = $1
18
+ error_info = detail.grep(/Error: /)[0] || "Unknown Error!"
19
+ return :failure, num_failures + ' Errors', error_info.strip
20
+ end
21
+
22
+ return :success, 'All tests passed', ''
23
+ end
24
+
25
+ end
@@ -0,0 +1,27 @@
1
+ class JasmineNodeRunner
2
+
3
+ def initialize(node, spec_dir, dir, filter)
4
+ @node = node
5
+ @spec_dir = spec_dir
6
+ @dir = dir
7
+ @filter = filter
8
+ end
9
+
10
+ def name
11
+ return 'Jasmine'
12
+ end
13
+
14
+ def execute
15
+ return `#{@node} #{@spec_dir}/specs.js --noColor #{@dir} 2>&1`
16
+ end
17
+
18
+ # TODO: Only return true if we can find the node binary
19
+ def is_configured?(all_files)
20
+ return true
21
+ end
22
+
23
+ def should_run?(modified_files)
24
+ return !(modified_files.detect { |file| @filter.filter(file) }).nil?
25
+ end
26
+
27
+ end
@@ -8,7 +8,6 @@ end
8
8
  class WindowsProcess
9
9
 
10
10
  def create(command)
11
- puts command
12
11
  Process.create({
13
12
  :app_name => command
14
13
  })
data/loris.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{loris}
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Karl O'Keeffe"]
12
- s.date = %q{2010-07-07}
12
+ s.date = %q{2010-07-11}
13
13
  s.default_executable = %q{loris}
14
14
  s.description = %q{Automatically run javascript unit tests}
15
15
  s.email = %q{loris@monket.net}
@@ -34,17 +34,23 @@ Gem::Specification.new do |s|
34
34
  "features/support/env.rb",
35
35
  "lib/always_continuer.rb",
36
36
  "lib/browser_finder.rb",
37
+ "lib/directory_finder.rb",
37
38
  "lib/file_actioner.rb",
38
39
  "lib/file_finder.rb",
39
40
  "lib/filters/ends_with_filter.rb",
40
41
  "lib/filters/extension_filter.rb",
41
42
  "lib/filters/file_filter.rb",
42
43
  "lib/filters/modified_filter.rb",
44
+ "lib/filters/starts_with_filter.rb",
43
45
  "lib/icons/error.png",
44
46
  "lib/icons/failure.png",
45
47
  "lib/icons/info.png",
46
48
  "lib/icons/success.png",
47
49
  "lib/icons/warning.png",
50
+ "lib/jasmine-node/LICENSE",
51
+ "lib/jasmine-node/lib/jasmine/index.js",
52
+ "lib/jasmine-node/lib/jasmine/jasmine-0.10.2.js",
53
+ "lib/jasmine-node/specs.js",
48
54
  "lib/javascript-lint/jsl",
49
55
  "lib/javascript-lint/jsl.exe",
50
56
  "lib/js-test-driver/JsTestDriver-1.2.jar",
@@ -59,7 +65,11 @@ Gem::Specification.new do |s|
59
65
  "lib/poller.rb",
60
66
  "lib/sleep_waiter.rb",
61
67
  "lib/task_manager.rb",
68
+ "lib/tasks/coffeescript/coffeescript_parser.rb",
69
+ "lib/tasks/coffeescript/coffeescript_runner.rb",
62
70
  "lib/tasks/command_line_task.rb",
71
+ "lib/tasks/jasmine_node/jasmine_node_parser.rb",
72
+ "lib/tasks/jasmine_node/jasmine_node_runner.rb",
63
73
  "lib/tasks/javascript_lint/javascript_lint_parser.rb",
64
74
  "lib/tasks/javascript_lint/javascript_lint_runner.rb",
65
75
  "lib/tasks/js_test_driver/js_test_driver_config.rb",
@@ -93,7 +103,7 @@ Gem::Specification.new do |s|
93
103
  s.homepage = %q{http://github.com/karl/loris}
94
104
  s.rdoc_options = ["--charset=UTF-8"]
95
105
  s.require_paths = ["lib"]
96
- s.rubygems_version = %q{1.3.5}
106
+ s.rubygems_version = %q{1.3.7}
97
107
  s.summary = %q{Automatically run javascript unit tests}
98
108
  s.test_files = [
99
109
  "spec/file_actioner_spec.rb",
@@ -116,7 +126,7 @@ Gem::Specification.new do |s|
116
126
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
117
127
  s.specification_version = 3
118
128
 
119
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
129
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
120
130
  s.add_runtime_dependency(%q<bind>, [">= 0.2.6"])
121
131
  s.add_runtime_dependency(%q<karl-growl>, [">= 1.0.6"])
122
132
  s.add_runtime_dependency(%q<extensions>, [">= 0.6.0"])
data/loris.tmproj CHANGED
@@ -3,7 +3,7 @@
3
3
  <plist version="1.0">
4
4
  <dict>
5
5
  <key>currentDocument</key>
6
- <string>lib/file_actioner.rb</string>
6
+ <string>lib/directory_finder.rb</string>
7
7
  <key>documents</key>
8
8
  <array>
9
9
  <dict>
@@ -13,8 +13,6 @@
13
13
  <string>loris</string>
14
14
  <key>regexFolderFilter</key>
15
15
  <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
16
- <key>selected</key>
17
- <true/>
18
16
  <key>sourceDirectory</key>
19
17
  <string></string>
20
18
  </dict>
@@ -23,26 +21,12 @@
23
21
  <integer>200</integer>
24
22
  <key>metaData</key>
25
23
  <dict>
26
- <key>Rakefile</key>
27
- <dict>
28
- <key>caret</key>
29
- <dict>
30
- <key>column</key>
31
- <integer>47</integer>
32
- <key>line</key>
33
- <integer>17</integer>
34
- </dict>
35
- <key>firstVisibleColumn</key>
36
- <integer>0</integer>
37
- <key>firstVisibleLine</key>
38
- <integer>0</integer>
39
- </dict>
40
24
  <key>TODO</key>
41
25
  <dict>
42
26
  <key>caret</key>
43
27
  <dict>
44
28
  <key>column</key>
45
- <integer>0</integer>
29
+ <integer>4</integer>
46
30
  <key>line</key>
47
31
  <integer>0</integer>
48
32
  </dict>
@@ -51,14 +35,14 @@
51
35
  <key>firstVisibleLine</key>
52
36
  <integer>0</integer>
53
37
  </dict>
54
- <key>lib/file_actioner.rb</key>
38
+ <key>lib/directory_finder.rb</key>
55
39
  <dict>
56
40
  <key>caret</key>
57
41
  <dict>
58
42
  <key>column</key>
59
- <integer>44</integer>
43
+ <integer>16</integer>
60
44
  <key>line</key>
61
- <integer>12</integer>
45
+ <integer>3</integer>
62
46
  </dict>
63
47
  <key>firstVisibleColumn</key>
64
48
  <integer>0</integer>
@@ -70,9 +54,9 @@
70
54
  <key>caret</key>
71
55
  <dict>
72
56
  <key>column</key>
73
- <integer>39</integer>
57
+ <integer>3</integer>
74
58
  <key>line</key>
75
- <integer>16</integer>
59
+ <integer>35</integer>
76
60
  </dict>
77
61
  <key>firstVisibleColumn</key>
78
62
  <integer>0</integer>
@@ -84,137 +68,109 @@
84
68
  <key>caret</key>
85
69
  <dict>
86
70
  <key>column</key>
87
- <integer>47</integer>
71
+ <integer>2</integer>
88
72
  <key>line</key>
89
- <integer>10</integer>
73
+ <integer>8</integer>
90
74
  </dict>
75
+ <key>columnSelection</key>
76
+ <false/>
91
77
  <key>firstVisibleColumn</key>
92
78
  <integer>0</integer>
93
79
  <key>firstVisibleLine</key>
94
80
  <integer>0</integer>
95
- </dict>
96
- <key>lib/outputs/growl_output.rb</key>
97
- <dict>
98
- <key>caret</key>
81
+ <key>selectFrom</key>
99
82
  <dict>
100
83
  <key>column</key>
101
- <integer>15</integer>
84
+ <integer>0</integer>
102
85
  <key>line</key>
103
- <integer>6</integer>
86
+ <integer>0</integer>
104
87
  </dict>
105
- <key>firstVisibleColumn</key>
106
- <integer>0</integer>
107
- <key>firstVisibleLine</key>
108
- <integer>0</integer>
109
- </dict>
110
- <key>lib/outputs/output_collection.rb</key>
111
- <dict>
112
- <key>caret</key>
88
+ <key>selectTo</key>
113
89
  <dict>
114
90
  <key>column</key>
115
- <integer>22</integer>
91
+ <integer>3</integer>
116
92
  <key>line</key>
117
- <integer>8</integer>
93
+ <integer>16</integer>
118
94
  </dict>
119
- <key>firstVisibleColumn</key>
120
- <integer>0</integer>
121
- <key>firstVisibleLine</key>
122
- <integer>0</integer>
123
95
  </dict>
124
- <key>lib/task_manager.rb</key>
96
+ <key>lib/jasmine-node/specs.js</key>
125
97
  <dict>
126
98
  <key>caret</key>
127
99
  <dict>
128
100
  <key>column</key>
129
101
  <integer>0</integer>
130
102
  <key>line</key>
131
- <integer>23</integer>
103
+ <integer>3</integer>
132
104
  </dict>
133
105
  <key>firstVisibleColumn</key>
134
106
  <integer>0</integer>
135
107
  <key>firstVisibleLine</key>
136
108
  <integer>0</integer>
137
109
  </dict>
138
- <key>lib/tasks/command_line_task.rb</key>
110
+ <key>lib/loris.rb</key>
139
111
  <dict>
140
112
  <key>caret</key>
141
113
  <dict>
142
114
  <key>column</key>
143
- <integer>28</integer>
115
+ <integer>26</integer>
144
116
  <key>line</key>
145
- <integer>14</integer>
117
+ <integer>20</integer>
146
118
  </dict>
147
119
  <key>firstVisibleColumn</key>
148
120
  <integer>0</integer>
149
121
  <key>firstVisibleLine</key>
150
122
  <integer>0</integer>
151
123
  </dict>
152
- <key>lib/tasks/javascript_lint/javascript_lint_parser.rb</key>
124
+ <key>lib/outputs/growl_output.rb</key>
153
125
  <dict>
154
126
  <key>caret</key>
155
127
  <dict>
156
128
  <key>column</key>
157
- <integer>24</integer>
129
+ <integer>15</integer>
158
130
  <key>line</key>
159
- <integer>32</integer>
131
+ <integer>6</integer>
160
132
  </dict>
161
133
  <key>firstVisibleColumn</key>
162
134
  <integer>0</integer>
163
135
  <key>firstVisibleLine</key>
164
136
  <integer>0</integer>
165
137
  </dict>
166
- <key>lib/tasks/javascript_lint/javascript_lint_runner.rb</key>
138
+ <key>lib/outputs/output_collection.rb</key>
167
139
  <dict>
168
140
  <key>caret</key>
169
141
  <dict>
170
142
  <key>column</key>
171
- <integer>57</integer>
143
+ <integer>22</integer>
172
144
  <key>line</key>
173
- <integer>13</integer>
145
+ <integer>8</integer>
174
146
  </dict>
175
- <key>columnSelection</key>
176
- <false/>
177
147
  <key>firstVisibleColumn</key>
178
148
  <integer>0</integer>
179
149
  <key>firstVisibleLine</key>
180
150
  <integer>0</integer>
181
- <key>selectFrom</key>
182
- <dict>
183
- <key>column</key>
184
- <integer>43</integer>
185
- <key>line</key>
186
- <integer>13</integer>
187
- </dict>
188
- <key>selectTo</key>
189
- <dict>
190
- <key>column</key>
191
- <integer>57</integer>
192
- <key>line</key>
193
- <integer>13</integer>
194
- </dict>
195
151
  </dict>
196
- <key>lib/tasks/js_test_driver/js_test_driver_parser.rb</key>
152
+ <key>lib/tasks/coffeescript/coffeescript_runner.rb</key>
197
153
  <dict>
198
154
  <key>caret</key>
199
155
  <dict>
200
156
  <key>column</key>
201
- <integer>2</integer>
157
+ <integer>36</integer>
202
158
  <key>line</key>
203
- <integer>30</integer>
159
+ <integer>18</integer>
204
160
  </dict>
205
161
  <key>firstVisibleColumn</key>
206
162
  <integer>0</integer>
207
163
  <key>firstVisibleLine</key>
208
164
  <integer>0</integer>
209
165
  </dict>
210
- <key>lib/tasks/js_test_driver/js_test_driver_runner.rb</key>
166
+ <key>lib/tasks/jasmine_node/jasmine_node_runner.rb</key>
211
167
  <dict>
212
168
  <key>caret</key>
213
169
  <dict>
214
170
  <key>column</key>
215
- <integer>61</integer>
171
+ <integer>0</integer>
216
172
  <key>line</key>
217
- <integer>16</integer>
173
+ <integer>14</integer>
218
174
  </dict>
219
175
  <key>firstVisibleColumn</key>
220
176
  <integer>0</integer>
@@ -253,19 +209,13 @@
253
209
  <key>openDocuments</key>
254
210
  <array>
255
211
  <string>TODO</string>
256
- <string>lib/tasks/javascript_lint/javascript_lint_parser.rb</string>
257
- <string>lib/tasks/js_test_driver/js_test_driver_parser.rb</string>
258
- <string>lib/tasks/js_test_driver/js_test_driver_runner.rb</string>
259
- <string>lib/outputs/growl_output.rb</string>
260
- <string>lib/outputs/output_collection.rb</string>
212
+ <string>lib/loris.rb</string>
261
213
  <string>lib/filters/ends_with_filter.rb</string>
262
- <string>lib/tasks/javascript_lint/javascript_lint_runner.rb</string>
263
- <string>Rakefile</string>
264
- <string>lib/task_manager.rb</string>
214
+ <string>lib/directory_finder.rb</string>
265
215
  <string>lib/file_finder.rb</string>
266
- <string>lib/file_actioner.rb</string>
267
- <string>lib/tasks/list_task.rb</string>
268
- <string>lib/tasks/command_line_task.rb</string>
216
+ <string>lib/tasks/coffeescript/coffeescript_runner.rb</string>
217
+ <string>lib/tasks/jasmine_node/jasmine_node_runner.rb</string>
218
+ <string>lib/jasmine-node/specs.js</string>
269
219
  </array>
270
220
  <key>showFileHierarchyDrawer</key>
271
221
  <false/>