sssmoke 0.0.6 → 0.0.7

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