sssmoke 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -12,7 +12,7 @@ Go to a folder containing erb templates, and:
12
12
 
13
13
  sssmoke
14
14
 
15
- For example, a template named _foo.erb_ will be available at _http://localhost:4567/foo_. (The port number could be different if you use a web server other than WEBrick).
15
+ For example, a template named _foo.erb_ will be available at _http://localhost:8888/foo_.
16
16
 
17
17
  ## Pro Usage for Powah Usahs
18
18
 
@@ -20,6 +20,6 @@ If you want to sssmoke a directory other than the current directory:
20
20
 
21
21
  sssmoke <directory name>
22
22
 
23
- To smoke a single erb template at _http://localhost:4567_:
23
+ To smoke a single erb template at _http://localhost:8888_:
24
24
 
25
25
  sssmoke <file name>
data/Rakefile CHANGED
@@ -1 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new {|t| t.test_files = FileList['test/test*.rb'] }
@@ -1,3 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "sssmoke"
3
+ require 'sssmoke'
4
+ Sssmoke::Base.run!
@@ -1,35 +1,25 @@
1
- require "sssmoke/version"
1
+ require 'sssmoke/version'
2
+ require 'sinatra/base'
3
+ require 'erb'
4
+ require 'tilt'
2
5
 
3
6
  module Sssmoke
4
- FOUR_O_FOUR = [404, "404 - Page not found"]
5
- require 'sinatra/base'
6
-
7
7
  class Base < Sinatra::Base
8
- require 'erb'
9
- require 'tilt'
10
-
11
- def show(template)
12
- template = "#{template}.erb" unless template.end_with? '.erb'
13
- File.exist?(template) ? Tilt::ERBTemplate.new(template).render : FOUR_O_FOUR
14
- end
15
- end
16
-
17
- def self.app
18
- filename = ARGV.shift || "."
8
+ get '/*' do
9
+ url_path = params[:splat].first
10
+ filename = ENV['filename'] || '.'
19
11
 
20
- if File.directory? filename
21
- Class.new(Sssmoke::Base) do
22
- set :views, filename
23
- get('/') { show 'index' }
24
- get('/:template') {|template| show template }
25
- end
26
- else
27
- Class.new(Sssmoke::Base) do
28
- get('/') { show filename }
29
- error(404) { FOUR_O_FOUR }
12
+ if File.directory? filename
13
+ dir = filename
14
+ template = "#{dir}/#{url_path.empty? ? "index" : url_path}.erb"
15
+ return 404 unless File.exist?(template)
16
+ Tilt.new(template).render
17
+ else
18
+ url_path.empty? ? Tilt.new(filename).render : 404
30
19
  end
31
20
  end
21
+
22
+ configure { set :port, 8888 }
23
+ error(404) { [404, "404 - Page not found"] }
32
24
  end
33
-
34
- app.run!
35
25
  end
@@ -1,3 +1,3 @@
1
1
  module Sssmoke
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -16,5 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
18
  gem.add_development_dependency 'rake'
19
+ gem.add_development_dependency 'rack-test'
19
20
  gem.add_dependency 'sinatra'
20
21
  end
@@ -0,0 +1 @@
1
+ <% 1/ 0 %>
@@ -0,0 +1 @@
1
+ <%= "Index page" %>
@@ -0,0 +1 @@
1
+ <%= "Simple page" %>
@@ -0,0 +1 @@
1
+ <%= "File in folder" %>
@@ -0,0 +1,75 @@
1
+ require 'sssmoke'
2
+ require 'test/unit'
3
+ require 'rack/test'
4
+
5
+ class SssmokeTest < Test::Unit::TestCase
6
+ include Rack::Test::Methods
7
+
8
+ def app
9
+ Sssmoke::Base
10
+ end
11
+
12
+ def teardown
13
+ ENV['filename'] = nil
14
+ end
15
+ end
16
+
17
+ class RenderFileTest < SssmokeTest
18
+ def setup
19
+ ENV['filename'] = "test/data/simple.erb"
20
+ end
21
+
22
+ def test_render_root
23
+ get '/'
24
+ assert_equal 'Simple page', last_response.body
25
+ end
26
+
27
+ def test_disable_routes
28
+ get '/time'
29
+ assert_equal 404, last_response.status
30
+ assert_equal '404 - Page not found', last_response.body
31
+ end
32
+ end
33
+
34
+ class RenderFolderTest < SssmokeTest
35
+ def setup
36
+ ENV['filename'] = 'test/data/'
37
+ end
38
+
39
+ def test_render_file
40
+ get '/simple'
41
+ assert_equal 'Simple page', last_response.body
42
+ end
43
+
44
+ def test_render_file_in_folder
45
+ get '/subdir/file'
46
+ assert_equal 'File in folder', last_response.body
47
+ end
48
+
49
+ def test_render_index
50
+ get '/'
51
+ assert_equal 'Index page', last_response.body
52
+ end
53
+
54
+ def test_404
55
+ get '/unknown'
56
+ assert_equal 404, last_response.status
57
+ assert_equal '404 - Page not found', last_response.body
58
+ end
59
+ end
60
+
61
+ class RenderDefaultFolderTest < SssmokeTest
62
+ def test_default_folder
63
+ ENV['filename'] = nil
64
+ get '/test/data/simple'
65
+ assert_equal 'Simple page', last_response.body
66
+ end
67
+ end
68
+
69
+ class SecurityTest < SssmokeTest
70
+ def test_hide_external_folders
71
+ ENV['filename'] = 'test/data/subdir'
72
+ get '/../simple'
73
+ assert_equal 404, last_response.status
74
+ end
75
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sssmoke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rack-test
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: sinatra
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -57,11 +73,14 @@ files:
57
73
  - README.md
58
74
  - Rakefile
59
75
  - bin/sssmoke
60
- - index.erb
61
76
  - lib/sssmoke.rb
62
77
  - lib/sssmoke/version.rb
63
78
  - sssmoke.gemspec
64
- - test.erb
79
+ - test/data/error.erb
80
+ - test/data/index.erb
81
+ - test/data/simple.erb
82
+ - test/data/subdir/file.erb
83
+ - test/test_sssmoke.rb
65
84
  homepage: https://github.com/nusco/sssmoke
66
85
  licenses: []
67
86
  post_install_message:
@@ -87,4 +106,9 @@ signing_key:
87
106
  specification_version: 3
88
107
  summary: Put erb templates in a folder and run them in a server with the 'sssmoke'
89
108
  command.
90
- test_files: []
109
+ test_files:
110
+ - test/data/error.erb
111
+ - test/data/index.erb
112
+ - test/data/simple.erb
113
+ - test/data/subdir/file.erb
114
+ - test/test_sssmoke.rb
data/index.erb DELETED
@@ -1 +0,0 @@
1
- The index works.
data/test.erb DELETED
@@ -1 +0,0 @@
1
- <%= Time.now%>