summary refs log tree commit
diff options
context:
space:
mode:
authorGabriel Horner <gabriel.horner@gmail.com>2011-03-21 02:11:00 +0800
committerMichael Fellinger <m.fellinger@gmail.com>2011-03-21 11:38:46 +0800
commite381985306ea85bdc5f9823dd5b48d30d417935e (patch)
tree48457bc23b7643f8661833de1734619acc06b943
parent1a5a44ab518c1cc97e429d717979f09c1369c88f (diff)
downloadrack-e381985306ea85bdc5f9823dd5b48d30d417935e.tar.gz
Add tests for Rack::Builder.parse_file
-rw-r--r--test/builder/anything.rb5
-rw-r--r--test/builder/end.ru3
-rw-r--r--test/builder/options.ru2
-rw-r--r--test/spec_builder.rb23
4 files changed, 33 insertions, 0 deletions
diff --git a/test/builder/anything.rb b/test/builder/anything.rb
new file mode 100644
index 00000000..c07f82cd
--- /dev/null
+++ b/test/builder/anything.rb
@@ -0,0 +1,5 @@
+class Anything
+  def self.call(env)
+    [200, {'Content-Type' => 'text/plain'}, ['OK']]
+  end
+end
diff --git a/test/builder/end.ru b/test/builder/end.ru
new file mode 100644
index 00000000..8eea56ee
--- /dev/null
+++ b/test/builder/end.ru
@@ -0,0 +1,3 @@
+run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] }
+__END__
+Should not be evaluated
diff --git a/test/builder/options.ru b/test/builder/options.ru
new file mode 100644
index 00000000..8562da65
--- /dev/null
+++ b/test/builder/options.ru
@@ -0,0 +1,2 @@
+#\ -d
+run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] }
diff --git a/test/spec_builder.rb b/test/spec_builder.rb
index 9839eaa5..1e5715c4 100644
--- a/test/spec_builder.rb
+++ b/test/spec_builder.rb
@@ -120,4 +120,27 @@ describe Rack::Builder do
     Rack::MockRequest.new(app).get("/").should.be.server_error
   end
 
+  describe "parse_file" do
+    def config_file(name)
+      File.join(File.dirname(__FILE__), 'builder', name)
+    end
+
+    it "parses commented options" do
+      app, options = Rack::Builder.parse_file config_file('options.ru')
+      options[:debug].should.be.true
+      Rack::MockRequest.new(app).get("/").body.to_s.should.equal 'OK'
+    end
+
+    it "removes __END__ before evaluating app" do
+      app, options = Rack::Builder.parse_file config_file('end.ru')
+      Rack::MockRequest.new(app).get("/").body.to_s.should.equal 'OK'
+    end
+
+    it "requires anything not ending in .ru" do
+      $: << File.dirname(__FILE__)
+      app, options = Rack::Builder.parse_file 'builder/anything'
+      Rack::MockRequest.new(app).get("/").body.to_s.should.equal 'OK'
+      $:.pop
+    end
+  end
 end