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.
- 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/>
|