about summary refs log tree commit homepage
path: root/test/unit/test_command.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/test_command.rb')
-rw-r--r--test/unit/test_command.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/test/unit/test_command.rb b/test/unit/test_command.rb
new file mode 100644
index 0000000..2e49ff2
--- /dev/null
+++ b/test/unit/test_command.rb
@@ -0,0 +1,86 @@
+# Copyright (c) 2005 Zed A. Shaw
+# You can redistribute it and/or modify it under the same terms as Ruby.
+#
+# Additional work donated by contributors.  See http://mongrel.rubyforge.org/attributions.html
+# for more information.
+
+require 'test/test_helper'
+
+class TestCommand < GemPlugin::Plugin "/commands"
+  include Mongrel::Command::Base
+
+  def configure
+    options [
+      ["-e", "--environment ENV", "Rails environment to run as", :@environment, ENV['RAILS_ENV'] || "development"],
+      ['', '--user USER', "User to run as", :@user, nil],
+      ["-d", "--daemonize", "Whether to run in the background or not", :@daemon, false],
+      ["-x", "--test", "Used to let the test run failures", :@test, false],
+    ]
+  end
+
+  def validate
+    valid_dir? ".", "Can't validate current directory."
+    valid_exists? "Rakefile", "Rakefile not there, test is invalid."
+    if @test
+      valid_exist? "BADFILE", "Yeah, badfile"
+      valid_file? "BADFILE", "Not even a file"
+      valid_dir? "BADDIR", "No dir here"
+      valid? false, "Total failure"
+    end
+
+    return @valid
+  end
+
+
+  def run
+    $test_command_ran = true
+  end
+end
+
+class CommandTest < Test::Unit::TestCase
+
+  def setup
+    $test_command_ran = false
+  end
+
+  def teardown
+  end
+
+  def run_cmd(args)
+    Mongrel::Command::Registry.instance.run args
+  end
+
+  def test_run_command
+    redirect_test_io do
+      run_cmd ["testcommand"]
+      assert $test_command_ran, "command didn't run"
+    end
+  end
+
+  def test_command_error
+    redirect_test_io do
+      run_cmd ["crapcommand"]
+    end
+  end
+
+  def test_command_listing
+    redirect_test_io do
+      run_cmd ["help"]
+    end
+  end
+
+  def test_options
+    redirect_test_io do
+      run_cmd ["testcommand","-h"]
+      run_cmd ["testcommand","--help"]
+      run_cmd ["testcommand","-e","test","-d","--user"]
+    end
+  end
+
+  def test_version
+    redirect_test_io do
+      run_cmd ["testcommand", "--version"]
+    end
+  end
+
+end