gusto 1.0.0.beta5 → 1.0.0.beta6
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 +4 -4
- data/lib/gusto/configuration.rb +45 -0
- data/lib/gusto/runner.rb +2 -2
- data/lib/gusto/server.rb +30 -5
- data/lib/gusto/sprockets.rb +25 -0
- data/lib/gusto/version.rb +1 -1
- data/lib/gusto.rb +10 -70
- data/views/index.slim +5 -6
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0d60b26b8242dc202dc9449165409a42d237b9f
|
4
|
+
data.tar.gz: b02b6c3e680e45d7ddcc7694e7d28b3b1b98f7f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 696d0053da6fcabc6aae8fd7705bdf20435db33bd3b1fb743f59187772213f67f469b4b42a381837b5011c6953a045641f5f43f86c5b789b1d1c305ba2420a2d
|
7
|
+
data.tar.gz: 1af4df4ed92749ac953d4ee16782c6750f148759d2a5f83280c31d2d4e47f234d06460722ea5230b021a4c562319514c02e68fe51c46722bfdc9773aa69a1dd0
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Gusto
|
2
|
+
module Configuration
|
3
|
+
class << self
|
4
|
+
def paths
|
5
|
+
[
|
6
|
+
File.join(Gusto.project_root, 'gusto.json'),
|
7
|
+
File.join(Gusto.project_root, 'config', 'gusto.json')
|
8
|
+
]
|
9
|
+
end
|
10
|
+
|
11
|
+
def load
|
12
|
+
# Set configuration defaults
|
13
|
+
@data = {
|
14
|
+
'port' => 4567,
|
15
|
+
'lib_paths' => %w(lib),
|
16
|
+
'spec_paths' => %w(spec)
|
17
|
+
}
|
18
|
+
|
19
|
+
# Load custom configuration file
|
20
|
+
paths.each do |path|
|
21
|
+
if File.exists? path
|
22
|
+
@data.merge! JSON.parse(File.read(path))
|
23
|
+
puts "Loaded configuration from “#{path}”"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def port
|
29
|
+
@data['port']
|
30
|
+
end
|
31
|
+
|
32
|
+
def port= value
|
33
|
+
@data['port'] = value
|
34
|
+
end
|
35
|
+
|
36
|
+
def lib_paths
|
37
|
+
@data['lib_paths']
|
38
|
+
end
|
39
|
+
|
40
|
+
def spec_paths
|
41
|
+
@data['spec_paths']
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/gusto/runner.rb
CHANGED
data/lib/gusto/server.rb
CHANGED
@@ -4,13 +4,27 @@ require 'sinatra'
|
|
4
4
|
require 'sass'
|
5
5
|
require 'slim'
|
6
6
|
require 'coffee-script'
|
7
|
+
require 'sprockets'
|
8
|
+
require 'sprockets-helpers'
|
7
9
|
require File.expand_path(File.dirname(__FILE__) + '/../gusto')
|
8
10
|
|
9
11
|
module Gusto
|
10
12
|
class Server < Sinatra::Application
|
13
|
+
def self.start
|
14
|
+
Rack::Handler.default.run rack_app, :Port => Configuration.port
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.rack_app
|
18
|
+
Rack::Builder.app do
|
19
|
+
map('/assets') { run Sprockets.environment }
|
20
|
+
map('/') { run Server }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
11
24
|
# Configure paths
|
12
|
-
set :public_folder,
|
13
|
-
set :views,
|
25
|
+
set :public_folder, File.join(Gusto.root, 'public')
|
26
|
+
set :views, File.join(Gusto.root, 'views')
|
27
|
+
set :assets_prefix, '/assets'
|
14
28
|
|
15
29
|
# Configure slim for prettier code formatting
|
16
30
|
Slim::Engine.set_default_options :pretty => true
|
@@ -18,13 +32,24 @@ module Gusto
|
|
18
32
|
# Hide redundant log messages
|
19
33
|
disable :logging
|
20
34
|
|
35
|
+
::Sprockets::Helpers.configure do |config|
|
36
|
+
config.environment = Sprockets.environment
|
37
|
+
config.public_path = public_folder
|
38
|
+
config.prefix = assets_prefix
|
39
|
+
config.debug = true
|
40
|
+
end
|
41
|
+
|
42
|
+
helpers do
|
43
|
+
include ::Sprockets::Helpers
|
44
|
+
end
|
45
|
+
|
21
46
|
# Processes request for page index
|
22
47
|
get "/" do
|
23
48
|
# Fetch list of all specification files in specs path
|
24
49
|
@scripts = []
|
25
|
-
Gusto.
|
26
|
-
Dir["#{Gusto
|
27
|
-
@scripts << $1 if file.match Regexp.new("^#{Regexp.escape Gusto
|
50
|
+
Gusto::Configuration.spec_paths.each do |path|
|
51
|
+
Dir["#{Gusto.project_root}/#{path}/**/*spec.coffee"].each do |file|
|
52
|
+
@scripts << $1 if file.match Regexp.new("^#{Regexp.escape Gusto.project_root}\\/#{Regexp.escape path}\\/(.*).coffee$")
|
28
53
|
end
|
29
54
|
end
|
30
55
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Gusto
|
2
|
+
module Sprockets
|
3
|
+
class << self
|
4
|
+
# Prepares a Sprockets::Environment object to serve coffeescript assets
|
5
|
+
def environment
|
6
|
+
@environment ||= ::Sprockets::Environment.new.tap do |environment|
|
7
|
+
configure_environment(environment)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def configure_environment(environment)
|
14
|
+
environment.append_path File.join(Gusto.root, 'lib')
|
15
|
+
environment.append_path File.join(Gusto.root, 'assets')
|
16
|
+
puts "Using assets in #{all_paths.inspect}"
|
17
|
+
all_paths.each{ |path| environment.append_path(path) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def all_paths
|
21
|
+
Configuration.lib_paths + Configuration.spec_paths
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/gusto/version.rb
CHANGED
data/lib/gusto.rb
CHANGED
@@ -8,55 +8,21 @@ require 'json'
|
|
8
8
|
require File.join(File.dirname(__FILE__), 'gusto', 'version')
|
9
9
|
|
10
10
|
module Gusto
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
CONFIG_PATHS = [
|
15
|
-
File.join(PROJECT_ROOT, 'gusto.json'),
|
16
|
-
File.join(PROJECT_ROOT, 'config', 'gusto.json')
|
17
|
-
]
|
18
|
-
|
19
|
-
@configuration = {}
|
11
|
+
autoload :Configuration, File.join(File.dirname(__FILE__), 'gusto', 'configuration')
|
12
|
+
autoload :Server, File.join(File.dirname(__FILE__), 'gusto', 'server')
|
13
|
+
autoload :Sprockets, File.join(File.dirname(__FILE__), 'gusto', 'sprockets')
|
20
14
|
|
21
15
|
class << self
|
22
|
-
|
23
|
-
|
24
|
-
# Set configuration defaults
|
25
|
-
@configuration['port'] = 4567
|
26
|
-
@configuration['lib_paths'] = %w(lib)
|
27
|
-
@configuration['spec_paths'] = %w(spec)
|
28
|
-
|
29
|
-
# Load custom configuration file
|
30
|
-
CONFIG_PATHS.each do |path|
|
31
|
-
if File.exists? path
|
32
|
-
@configuration.merge! JSON.parse(File.read(path))
|
33
|
-
puts "Loaded configuration from “#{path}”"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def port
|
39
|
-
@configuration['port']
|
16
|
+
def root
|
17
|
+
File.expand_path File.join(File.dirname(__FILE__), '..')
|
40
18
|
end
|
41
19
|
|
42
|
-
def
|
43
|
-
|
20
|
+
def project_root
|
21
|
+
File.expand_path "."
|
44
22
|
end
|
45
23
|
|
46
24
|
def root_url
|
47
|
-
"http://localhost:#{port}/"
|
48
|
-
end
|
49
|
-
|
50
|
-
def libs
|
51
|
-
@configuration['lib_paths']
|
52
|
-
end
|
53
|
-
|
54
|
-
def specs
|
55
|
-
@configuration['spec_paths']
|
56
|
-
end
|
57
|
-
|
58
|
-
def all_paths
|
59
|
-
libs + specs
|
25
|
+
"http://localhost:#{Configuration.port}/"
|
60
26
|
end
|
61
27
|
|
62
28
|
def server
|
@@ -80,32 +46,8 @@ module Gusto
|
|
80
46
|
Process.waitall
|
81
47
|
end
|
82
48
|
|
83
|
-
# Prepares a Sprockets::Environment object to serve coffeescript assets
|
84
|
-
def sprockets_environment
|
85
|
-
@environment ||= Sprockets::Environment.new.tap do |environment|
|
86
|
-
environment.append_path File.join(ROOT, 'lib')
|
87
|
-
environment.append_path File.join(ROOT, 'assets')
|
88
|
-
all_paths.each do |path|
|
89
|
-
environment.append_path path
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def start_server
|
95
|
-
app = Rack::Builder.app do
|
96
|
-
map '/assets' do
|
97
|
-
run Gusto::sprockets_environment
|
98
|
-
end
|
99
|
-
|
100
|
-
map '/' do
|
101
|
-
run Gusto::Server
|
102
|
-
end
|
103
|
-
end
|
104
|
-
Rack::Handler.default.run app, :Port => port
|
105
|
-
end
|
106
|
-
|
107
49
|
def spawn_server
|
108
|
-
@server = Process.fork{ $0 = 'gusto server';
|
50
|
+
@server = Process.fork{ $0 = 'gusto server'; Server.start }
|
109
51
|
wait_for_server_at(root_url)
|
110
52
|
end
|
111
53
|
|
@@ -125,7 +67,7 @@ module Gusto
|
|
125
67
|
def watch_for_changes
|
126
68
|
require 'listen'
|
127
69
|
|
128
|
-
@listener = Listen.to(
|
70
|
+
@listener = Listen.to(project_root)
|
129
71
|
|
130
72
|
# Match .coffee files in any project paths
|
131
73
|
@listener.filter Regexp.new('^(' + all_paths.map{ |s| Regexp.escape s}.join('|') + ')\/.*\.coffee$')
|
@@ -158,5 +100,3 @@ module Gusto
|
|
158
100
|
end
|
159
101
|
end
|
160
102
|
end
|
161
|
-
|
162
|
-
require File.expand_path(File.dirname(__FILE__) + '/gusto/server')
|
data/views/index.slim
CHANGED
@@ -4,14 +4,13 @@ head
|
|
4
4
|
script type="text/javascript" src="jquery-1.5.2.js"
|
5
5
|
script type="text/javascript" src="stacktrace.js"
|
6
6
|
script type="text/javascript" src="jsdiff.js"
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
== stylesheet_tag 'spec'
|
8
|
+
== javascript_tag('Spec') + "\n"
|
9
|
+
== javascript_tag('HtmlReport') + "\n"
|
10
|
+
- @scripts.each do |script|
|
11
|
+
== javascript_tag(script) + "\n"
|
10
12
|
|
11
13
|
body
|
12
|
-
javascript:
|
13
|
-
- @scripts.each do |file_name|
|
14
|
-
script type="text/javascript" src="/assets/#{{file_name.sub /\.coffee$/, '.js'}}"
|
15
14
|
javascript:
|
16
15
|
$(function() {
|
17
16
|
window.report = new HtmlReport(document.body);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gusto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Cohen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coffee-script
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sprockets-helpers
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: sinatra
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,8 +149,10 @@ files:
|
|
135
149
|
- assets/spec.css.sass
|
136
150
|
- assets/test_results.sass
|
137
151
|
- bin/gusto
|
152
|
+
- lib/gusto/configuration.rb
|
138
153
|
- lib/gusto/runner.rb
|
139
154
|
- lib/gusto/server.rb
|
155
|
+
- lib/gusto/sprockets.rb
|
140
156
|
- lib/gusto/version.rb
|
141
157
|
- lib/gusto.rb
|
142
158
|
- lib/HtmlReport.coffee
|
@@ -177,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
193
|
version: 1.3.1
|
178
194
|
requirements: []
|
179
195
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.0.
|
196
|
+
rubygems_version: 2.0.3
|
181
197
|
signing_key:
|
182
198
|
specification_version: 4
|
183
199
|
summary: Coffeescript testing framework
|