loris 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/TODO +5 -2
- data/VERSION +1 -1
- data/lib/directory_finder.rb +22 -0
- data/lib/filters/starts_with_filter.rb +17 -0
- data/lib/jasmine-node/LICENSE +22 -0
- data/lib/jasmine-node/lib/jasmine/index.js +170 -0
- data/lib/jasmine-node/lib/jasmine/jasmine-0.10.2.js +2323 -0
- data/lib/jasmine-node/specs.js +27 -0
- data/lib/loris.rb +37 -1
- data/lib/task_manager.rb +40 -9
- data/lib/tasks/coffeescript/coffeescript_parser.rb +37 -0
- data/lib/tasks/coffeescript/coffeescript_runner.rb +37 -0
- data/lib/tasks/jasmine_node/jasmine_node_parser.rb +25 -0
- data/lib/tasks/jasmine_node/jasmine_node_runner.rb +27 -0
- data/lib/windows_process.rb +0 -1
- data/loris.gemspec +14 -4
- data/loris.tmproj +39 -89
- metadata +57 -17
@@ -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.
|
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
|
-
|
27
|
+
result = run_task(files, task)
|
19
28
|
rescue Exception => ex
|
20
|
-
|
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
|
55
|
+
return result if result.nil?
|
29
56
|
|
30
57
|
task_run
|
31
|
-
|
58
|
+
|
32
59
|
@output.add_result(result)
|
33
|
-
return
|
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
|
44
|
-
|
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
|
data/lib/windows_process.rb
CHANGED
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.
|
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-
|
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.
|
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::
|
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/
|
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>
|
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/
|
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>
|
43
|
+
<integer>16</integer>
|
60
44
|
<key>line</key>
|
61
|
-
<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>
|
57
|
+
<integer>3</integer>
|
74
58
|
<key>line</key>
|
75
|
-
<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>
|
71
|
+
<integer>2</integer>
|
88
72
|
<key>line</key>
|
89
|
-
<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
|
-
|
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>
|
84
|
+
<integer>0</integer>
|
102
85
|
<key>line</key>
|
103
|
-
<integer>
|
86
|
+
<integer>0</integer>
|
104
87
|
</dict>
|
105
|
-
<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>
|
91
|
+
<integer>3</integer>
|
116
92
|
<key>line</key>
|
117
|
-
<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/
|
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>
|
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/
|
110
|
+
<key>lib/loris.rb</key>
|
139
111
|
<dict>
|
140
112
|
<key>caret</key>
|
141
113
|
<dict>
|
142
114
|
<key>column</key>
|
143
|
-
<integer>
|
115
|
+
<integer>26</integer>
|
144
116
|
<key>line</key>
|
145
|
-
<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/
|
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>
|
129
|
+
<integer>15</integer>
|
158
130
|
<key>line</key>
|
159
|
-
<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/
|
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>
|
143
|
+
<integer>22</integer>
|
172
144
|
<key>line</key>
|
173
|
-
<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/
|
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>
|
157
|
+
<integer>36</integer>
|
202
158
|
<key>line</key>
|
203
|
-
<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/
|
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>
|
171
|
+
<integer>0</integer>
|
216
172
|
<key>line</key>
|
217
|
-
<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/
|
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/
|
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/
|
267
|
-
<string>lib/tasks/
|
268
|
-
<string>lib/
|
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/>
|