screw-unit-server 0.3.0

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.
Files changed (96) hide show
  1. data/CHANGES +5 -0
  2. data/README.markdown +347 -0
  3. data/Rakefile +70 -0
  4. data/bin/screw_unit +6 -0
  5. data/bin/screw_unit_server +10 -0
  6. data/core/EXAMPLE.html +68 -0
  7. data/core/LICENSE +22 -0
  8. data/core/README.markdown +307 -0
  9. data/core/TODO +2 -0
  10. data/core/example/models/cat.js +5 -0
  11. data/core/example/models/man.js +17 -0
  12. data/core/example/spec/matchers/have.js +8 -0
  13. data/core/example/spec/models/cat_spec.js +31 -0
  14. data/core/example/spec/models/man_spec.js +34 -0
  15. data/core/example/spec/spec_helper.js +5 -0
  16. data/core/example/spec/suite.html +25 -0
  17. data/core/lib/jquery-1.2.3.js +3408 -0
  18. data/core/lib/jquery.fn.js +29 -0
  19. data/core/lib/jquery.print.js +108 -0
  20. data/core/lib/screw.assets.js +36 -0
  21. data/core/lib/screw.behaviors.js +91 -0
  22. data/core/lib/screw.builder.js +80 -0
  23. data/core/lib/screw.css +90 -0
  24. data/core/lib/screw.events.js +38 -0
  25. data/core/lib/screw.matchers.js +65 -0
  26. data/core/lib/screw.server.js +21 -0
  27. data/core/spec/behaviors_spec.js +178 -0
  28. data/core/spec/matchers_spec.js +93 -0
  29. data/core/spec/print_spec.js +119 -0
  30. data/core/spec/spec_helper.js +0 -0
  31. data/core/spec/suite.html +18 -0
  32. data/init.rb +0 -0
  33. data/lib/screw_unit.rb +26 -0
  34. data/lib/screw_unit/resources.rb +2 -0
  35. data/lib/screw_unit/resources/spec.rb +37 -0
  36. data/spec/functional/functional_spec.rb +14 -0
  37. data/spec/functional/functional_spec_helper.rb +55 -0
  38. data/spec/functional_suite.rb +10 -0
  39. data/spec/spec_suite.rb +3 -0
  40. data/spec/unit/js_test_core/specs/spec_dir_spec.rb +43 -0
  41. data/spec/unit/js_test_core/specs/spec_file_spec.rb +43 -0
  42. data/spec/unit/unit_spec_helper.rb +120 -0
  43. data/spec/unit_suite.rb +10 -0
  44. data/vendor/js-test-core/CHANGES +9 -0
  45. data/vendor/js-test-core/README +12 -0
  46. data/vendor/js-test-core/Rakefile +72 -0
  47. data/vendor/js-test-core/lib/js_test_core.rb +30 -0
  48. data/vendor/js-test-core/lib/js_test_core/client.rb +50 -0
  49. data/vendor/js-test-core/lib/js_test_core/rack.rb +2 -0
  50. data/vendor/js-test-core/lib/js_test_core/rack/commonlogger.rb +5 -0
  51. data/vendor/js-test-core/lib/js_test_core/rails_server.rb +22 -0
  52. data/vendor/js-test-core/lib/js_test_core/resources.rb +11 -0
  53. data/vendor/js-test-core/lib/js_test_core/resources/dir.rb +52 -0
  54. data/vendor/js-test-core/lib/js_test_core/resources/file.rb +32 -0
  55. data/vendor/js-test-core/lib/js_test_core/resources/file_not_found.rb +15 -0
  56. data/vendor/js-test-core/lib/js_test_core/resources/runners.rb +15 -0
  57. data/vendor/js-test-core/lib/js_test_core/resources/runners/firefox_runner.rb +75 -0
  58. data/vendor/js-test-core/lib/js_test_core/resources/specs/spec_dir.rb +50 -0
  59. data/vendor/js-test-core/lib/js_test_core/resources/specs/spec_file.rb +17 -0
  60. data/vendor/js-test-core/lib/js_test_core/resources/suite.rb +24 -0
  61. data/vendor/js-test-core/lib/js_test_core/resources/suite_finish.rb +19 -0
  62. data/vendor/js-test-core/lib/js_test_core/resources/web_root.rb +62 -0
  63. data/vendor/js-test-core/lib/js_test_core/selenium.rb +2 -0
  64. data/vendor/js-test-core/lib/js_test_core/selenium/selenium_driver.rb +5 -0
  65. data/vendor/js-test-core/lib/js_test_core/server.rb +111 -0
  66. data/vendor/js-test-core/lib/js_test_core/thin.rb +3 -0
  67. data/vendor/js-test-core/lib/js_test_core/thin/backends/js_test_core_server.rb +9 -0
  68. data/vendor/js-test-core/lib/js_test_core/thin/js_test_core_connection.rb +42 -0
  69. data/vendor/js-test-core/spec/example_core/JsTestCore.css +0 -0
  70. data/vendor/js-test-core/spec/example_core/JsTestCore.js +0 -0
  71. data/vendor/js-test-core/spec/example_public/favicon.ico +0 -0
  72. data/vendor/js-test-core/spec/example_public/javascripts/foo.js +3 -0
  73. data/vendor/js-test-core/spec/example_public/robots.txt +0 -0
  74. data/vendor/js-test-core/spec/example_public/stylesheets/example.css +3 -0
  75. data/vendor/js-test-core/spec/example_specs/failing_spec.js +5 -0
  76. data/vendor/js-test-core/spec/example_specs/foo/failing_spec.js +6 -0
  77. data/vendor/js-test-core/spec/example_specs/foo/passing_spec.js +6 -0
  78. data/vendor/js-test-core/spec/spec_suite.rb +2 -0
  79. data/vendor/js-test-core/spec/specs/failing_spec.js +0 -0
  80. data/vendor/js-test-core/spec/unit/js_test_core/client_spec.rb +137 -0
  81. data/vendor/js-test-core/spec/unit/js_test_core/rails_server_spec.rb +45 -0
  82. data/vendor/js-test-core/spec/unit/js_test_core/resources/dir_spec.rb +42 -0
  83. data/vendor/js-test-core/spec/unit/js_test_core/resources/file_not_found_spec.rb +26 -0
  84. data/vendor/js-test-core/spec/unit/js_test_core/resources/file_spec.rb +88 -0
  85. data/vendor/js-test-core/spec/unit/js_test_core/resources/runner_spec.rb +24 -0
  86. data/vendor/js-test-core/spec/unit/js_test_core/resources/runners/firefox_runner_spec.rb +197 -0
  87. data/vendor/js-test-core/spec/unit/js_test_core/resources/specs/spec_dir_spec.rb +79 -0
  88. data/vendor/js-test-core/spec/unit/js_test_core/resources/specs/spec_file_spec.rb +42 -0
  89. data/vendor/js-test-core/spec/unit/js_test_core/resources/suite_finish_spec.rb +94 -0
  90. data/vendor/js-test-core/spec/unit/js_test_core/resources/suite_spec.rb +44 -0
  91. data/vendor/js-test-core/spec/unit/js_test_core/resources/web_root_spec.rb +103 -0
  92. data/vendor/js-test-core/spec/unit/js_test_core/server_spec.rb +131 -0
  93. data/vendor/js-test-core/spec/unit/thin/js_test_core_connection_spec.rb +92 -0
  94. data/vendor/js-test-core/spec/unit/unit_spec_helper.rb +125 -0
  95. data/vendor/js-test-core/spec/unit_suite.rb +10 -0
  96. metadata +186 -0
File without changes
@@ -0,0 +1,18 @@
1
+ <html>
2
+ <head>
3
+ <script src="../lib/jquery-1.2.3.js"></script>
4
+ <script src="../lib/jquery.fn.js"></script>
5
+ <script src="../lib/jquery.print.js"></script>
6
+ <script src="../lib/screw.builder.js"></script>
7
+ <script src="../lib/screw.matchers.js"></script>
8
+ <script src="../lib/screw.events.js"></script>
9
+ <script src="../lib/screw.behaviors.js"></script>
10
+ <script src="spec_helper.js"></script>
11
+ <script src="behaviors_spec.js"></script>
12
+ <script src="matchers_spec.js"></script>
13
+ <script src="print_spec.js"></script>
14
+
15
+ <link rel="stylesheet" href="../lib/screw.css">
16
+ </head>
17
+ <body></body>
18
+ </html>
data/init.rb ADDED
File without changes
@@ -0,0 +1,26 @@
1
+ require "rubygems"
2
+
3
+ dir = File.dirname(__FILE__)
4
+ $:.unshift(File.expand_path("#{dir}/../vendor/js-test-core/lib"))
5
+ require "js_test_core"
6
+ JsTestCore::Resources::WebRoot.dispatch_specs
7
+
8
+ require "#{dir}/screw_unit/resources"
9
+
10
+ module ScrewUnit
11
+ DEFAULT_HOST = JsTestCore::DEFAULT_HOST
12
+ DEFAULT_PORT = JsTestCore::DEFAULT_PORT
13
+
14
+ Server = JsTestCore::Server
15
+ RailsServer = JsTestCore::RailsServer
16
+ Client = JsTestCore::Client
17
+ end
18
+ JsTestCore.core_path = File.expand_path("#{dir}/../core/lib")
19
+
20
+ class JsTestCore::Resources::Specs::SpecFile
21
+ include ScrewUnit::Resources::Spec
22
+ end
23
+
24
+ class JsTestCore::Resources::Specs::SpecDir
25
+ include ScrewUnit::Resources::Spec
26
+ end
@@ -0,0 +1,2 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/resources/spec"
@@ -0,0 +1,37 @@
1
+ module ScrewUnit
2
+ module Resources
3
+ module Spec
4
+ def get(request, response)
5
+ html = <<-HTML
6
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
7
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
8
+ <head>
9
+ <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
10
+ <title>ScrewUnit results</title>
11
+ <script src="/core/jquery-1.2.3.js"></script>
12
+ <script src="/core/jquery.fn.js"></script>
13
+ <script src="/core/jquery.print.js"></script>
14
+ <script src="/core/screw.builder.js"></script>
15
+ <script src="/core/screw.matchers.js"></script>
16
+ <script src="/core/screw.events.js"></script>
17
+ <script src="/core/screw.behaviors.js"></script>
18
+ <script src="/core/screw.assets.js"></script>
19
+ <script src="/core/screw.server.js"></script>
20
+ <link rel="stylesheet" href="/core/screw.css">
21
+ HTML
22
+ spec_files.each do |file|
23
+ html << %{<script type="text/javascript" src="#{file.relative_path}"></script>\n}
24
+ end
25
+
26
+ html << <<-HTML
27
+ </head>
28
+ <body>
29
+ <div id="screw_unit_content"></div>
30
+ </body>
31
+ </html>
32
+ HTML
33
+ response.body = html.gsub(/^ /, "")
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,14 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/functional_spec_helper")
2
+
3
+ describe "ScrewUnit" do
4
+ it "runs a full passing Suite" do
5
+ mock(ScrewUnit::Client).puts("SUCCESS")
6
+ ScrewUnit::Client.run(:spec_url => "#{root_url}/specs/foo/passing_spec")
7
+ end
8
+
9
+ it "runs a full failing Suite" do
10
+ mock(ScrewUnit::Client).puts("FAILURE")
11
+ mock(ScrewUnit::Client).puts('expected true to equal false')
12
+ ScrewUnit::Client.run(:spec_url => "#{root_url}/specs/foo/failing_spec")
13
+ end
14
+ end
@@ -0,0 +1,55 @@
1
+ require "rubygems"
2
+ require "spec"
3
+
4
+ dir = File.dirname(__FILE__)
5
+ $LOAD_PATH.unshift "#{dir}/../../lib"
6
+ require "screw_unit"
7
+ require "hpricot"
8
+ require "lsof"
9
+
10
+ Spec::Runner.configure do |config|
11
+ config.mock_with :rr
12
+ end
13
+
14
+ Thin::Logging.silent = false
15
+ Thin::Logging.debug = true
16
+
17
+ module WaitFor
18
+ extend self
19
+ def wait_for(time=5)
20
+ Timeout.timeout(time) do
21
+ loop do
22
+ value = yield
23
+ return value if value
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ module Spec::Example::ExampleMethods
30
+ include WaitFor
31
+ attr_reader :spec_root_path, :implementation_root_path, :public_path
32
+ before(:all) do
33
+ Lsof.kill(8080)
34
+ wait_for do
35
+ !Lsof.running?(8080)
36
+ end
37
+ dir = File.dirname(__FILE__)
38
+ @spec_root_path = "#{dir}/../example_specs"
39
+ @public_path = "#{dir}/../example_public"
40
+ @implementation_root_path = "#{public_path}/javascripts"
41
+ unless $screw_unit_server_started
42
+ Thread.start do
43
+ ScrewUnit::Server.run(spec_root_path, implementation_root_path, public_path)
44
+ end
45
+ $screw_unit_server_started = true
46
+ end
47
+ wait_for do
48
+ Lsof.running?(8080)
49
+ end
50
+ end
51
+
52
+ def root_url
53
+ "http://#{ScrewUnit::DEFAULT_HOST}:#{ScrewUnit::DEFAULT_PORT}"
54
+ end
55
+ end
@@ -0,0 +1,10 @@
1
+ class FunctionalSuite
2
+ def run
3
+ dir = File.dirname(__FILE__)
4
+ Dir["#{dir}/functional/**/*_spec.rb"].each do |file|
5
+ require file
6
+ end
7
+ end
8
+ end
9
+
10
+ FunctionalSuite.new.run
@@ -0,0 +1,3 @@
1
+ dir = File.dirname(__FILE__)
2
+ raise "Failure" unless system(%Q|ruby #{dir}/unit_suite.rb|)
3
+ raise "Failure" unless system(%Q|ruby #{dir}/functional_suite.rb|)
@@ -0,0 +1,43 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../../unit_spec_helper")
2
+
3
+ module JsTestCore
4
+ module Resources
5
+ module Specs
6
+ describe SpecDir do
7
+ attr_reader :dir
8
+
9
+ before do
10
+ stub(EventMachine).send_data
11
+ stub(EventMachine).close_connection
12
+ @dir = SpecDir.new(spec_root_path, '/specs')
13
+ end
14
+
15
+ describe "#get" do
16
+ attr_reader :html, :doc
17
+ before do
18
+ request = request('get', '/specs')
19
+ response = Rack::Response.new
20
+ dir.get(request, response)
21
+ @html = response.body
22
+ @doc = Hpricot(html)
23
+ end
24
+
25
+ it "returns script tags for each test javascript file" do
26
+ doc.at("script[@src='/specs/failing_spec.js']").should exist
27
+ doc.at("script[@src='/specs/foo/failing_spec.js']").should exist
28
+ doc.at("script[@src='/specs/foo/passing_spec.js']").should exist
29
+ end
30
+
31
+ it "returns the screw unit template" do
32
+ doc.at("link[@href='/core/screw.css']").should exist
33
+ doc.at("script[@src='/core/screw.builder.js']").should exist
34
+ doc.at("script[@src='/core/screw.events.js']").should exist
35
+ doc.at("script[@src='/core/screw.behaviors.js']").should exist
36
+ doc.at("script[@src='/core/screw.assets.js']").should exist
37
+ doc.at("body/#screw_unit_content").should_not be_nil
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../../unit_spec_helper")
2
+
3
+ module JsTestCore
4
+ module Resources
5
+ module Specs
6
+ describe SpecFile do
7
+ describe "#spec_files" do
8
+ attr_reader :absolute_path, :relative_path, :file
9
+
10
+ before do
11
+ @absolute_path = "#{spec_root_path}/failing_spec.js"
12
+ @relative_path = "/specs/failing_spec.js"
13
+ @file = SpecFile.new(absolute_path, relative_path)
14
+ end
15
+
16
+ describe "#get" do
17
+ attr_reader :html, :doc
18
+ before do
19
+ request = request('get', '/specs')
20
+ response = Rack::Response.new
21
+ file.get(request, response)
22
+ @html = response.body
23
+ @doc = Hpricot(html)
24
+ end
25
+
26
+ it "returns script tags for the test javascript file" do
27
+ doc.at("script[@src='/specs/failing_spec.js']").should exist
28
+ end
29
+
30
+ it "returns the screw unit template" do
31
+ doc.at("link[@href='/core/screw.css']").should exist
32
+ doc.at("script[@src='/core/screw.builder.js']").should exist
33
+ doc.at("script[@src='/core/screw.events.js']").should exist
34
+ doc.at("script[@src='/core/screw.behaviors.js']").should exist
35
+ doc.at("script[@src='/core/screw.assets.js']").should exist
36
+ doc.at("body/#screw_unit_content").should_not be_nil
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,120 @@
1
+ require "rubygems"
2
+ require "spec"
3
+ dir = File.dirname(__FILE__)
4
+
5
+ $LOAD_PATH.unshift "#{dir}/../../lib"
6
+ require "screw_unit"
7
+ require "hpricot"
8
+ require "guid"
9
+
10
+ Spec::Runner.configure do |config|
11
+ config.mock_with :rr
12
+ end
13
+
14
+ module Spec
15
+ module Matchers
16
+ class Exist
17
+ def matches?(actual)
18
+ @actual = actual
19
+ !@actual.nil?
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ class Spec::Example::ExampleGroup
26
+ class << self
27
+ def thin_logging
28
+ @thin_logging = true if @thin_logging.nil?
29
+ @thin_logging
30
+ end
31
+
32
+ attr_writer :thin_logging
33
+ end
34
+ end
35
+
36
+ module Spec::Example::ExampleMethods
37
+ attr_reader :spec_root_path, :implementation_root_path, :public_path, :server, :connection
38
+ before(:all) do
39
+ dir = File.dirname(__FILE__)
40
+ @spec_root_path = File.expand_path("#{dir}/../example_specs")
41
+ @implementation_root_path = File.expand_path("#{dir}/../example_public/javascripts")
42
+ @public_path = File.expand_path("#{dir}/../example_public")
43
+ end
44
+
45
+ before(:each) do
46
+ JsTestCore::Server.instance = JsTestCore::Server.new(spec_root_path, implementation_root_path, public_path)
47
+ stub(EventMachine).run do
48
+ raise "You need to mock calls to EventMachine.run or the process will hang"
49
+ end
50
+ stub(EventMachine).start_server do
51
+ raise "You need to mock calls to EventMachine.start_server or the process will hang"
52
+ end
53
+ stub(EventMachine).send_data do
54
+ raise "Calls to EventMachine.send_data must be mocked or stubbed"
55
+ end
56
+ @connection = Thin::JsTestCoreConnection.new(Guid.new)
57
+ stub(EventMachine).send_data {raise "EventMachine.send_data must be handled"}
58
+ stub(EventMachine).close_connection {raise "EventMachine.close_connection must be handled"}
59
+ @server = JsTestCore::Server.instance
60
+ Thin::Logging.silent = !self.class.thin_logging
61
+ Thin::Logging.debug = self.class.thin_logging
62
+ end
63
+
64
+ after(:each) do
65
+ Thin::Logging.silent = true
66
+ Thin::Logging.debug = false
67
+ end
68
+
69
+ def get(url, params={})
70
+ request(:get, url, params)
71
+ end
72
+
73
+ def post(url, params={})
74
+ request(:post, url, params)
75
+ end
76
+
77
+ def put(url, params={})
78
+ request(:put, url, params)
79
+ end
80
+
81
+ def delete(url, params={})
82
+ request(:delete, url, params)
83
+ end
84
+
85
+ def env_for(method, url, params)
86
+ Rack::MockRequest.env_for(url, params.merge({:method => method.to_s.upcase, 'js_test_core.connection' => connection}))
87
+ end
88
+
89
+ def create_request(method, url, params={})
90
+ env = env_for(method, url, params)
91
+ server.call(env)[2]
92
+ end
93
+ alias_method :request, :create_request
94
+
95
+ def core_path
96
+ JsTestCore::Server.core_path
97
+ end
98
+
99
+ def spec_file(relative_path)
100
+ absolute_path = spec_root_path + relative_path
101
+ JsTestCore::Resources::File.new(absolute_path, "/specs#{relative_path}")
102
+ end
103
+
104
+ def spec_dir(relative_path="")
105
+ absolute_path = spec_root_path + relative_path
106
+ JsTestCore::Resources::SpecDir.new(absolute_path, "/specs#{relative_path}")
107
+ end
108
+
109
+ def contain_spec_file_with_correct_paths(path_relative_to_spec_root)
110
+ expected_absolute_path = spec_root_path + path_relative_to_spec_root
111
+ expected_relative_path = "/specs" + path_relative_to_spec_root
112
+
113
+ ::Spec::Matchers::SimpleMatcher.new(expected_relative_path) do |globbed_files|
114
+ file = globbed_files.find do |file|
115
+ file.absolute_path == expected_absolute_path
116
+ end
117
+ file && file.relative_path == expected_relative_path
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,10 @@
1
+ class UnitSuite
2
+ def run
3
+ dir = File.dirname(__FILE__)
4
+ Dir["#{dir}/unit/**/*_spec.rb"].each do |file|
5
+ require file
6
+ end
7
+ end
8
+ end
9
+
10
+ UnitSuite.new.run
@@ -0,0 +1,9 @@
1
+ 0.1.1
2
+ - SuiteFinish#post immediately closes the connection
3
+
4
+ 0.1.0
5
+ - Initial Release extracted from JsTestCore.
6
+ - Added JsTestCore::WebRoot.dispatch_specs and .dispatch_strategy
7
+ - Extracted JsTestCore::Resources::Specs::SpecDir
8
+ - Extracted JsTestCore::Resources::Specs::SpecFile
9
+ - No longer depending on Guid. The child libraries are responsible for obtaining the Selenium session_id from the client by using top.runOptions.getSessionId().
@@ -0,0 +1,12 @@
1
+ = JsTestCore
2
+ The JsTestCore library is the core javascript test server library used by several JS Test server libraries.
3
+
4
+ To hook up your own JS Test framework:
5
+ * You will need to call either JsTestCore::Resources::WebRoot.dispatch_specs or JsTestCore::Resources::WebRoot.dispatch_tests
6
+ depending if you are serving specs or tests.
7
+ * Set JsTestCore.core_path to the directory of the client side test framework (javascript files)
8
+ * Override JsTestCore::Resources::Specs::SpecFile#get or JsTestCore::Resources::Specs::TestFile#get
9
+ * Override JsTestCore::Resources::Specs::SpecDir#get or JsTestCore::Resources::Specs::TestDir#get
10
+
11
+ NOTE: The current version of JsTestCore does not yet support tests. Support will be added soon.
12
+ I just wanted the test stuff to be in the docs to establish the current architectural direction.
@@ -0,0 +1,72 @@
1
+ require "rake"
2
+ require 'rake/gempackagetask'
3
+ require 'rake/contrib/rubyforgepublisher'
4
+ require 'rake/clean'
5
+ require 'rake/testtask'
6
+ require 'rake/rdoctask'
7
+
8
+ desc "Runs the Rspec suite"
9
+ task(:default) do
10
+ run_suite
11
+ end
12
+
13
+ desc "Runs the Rspec suite"
14
+ task(:spec) do
15
+ run_suite
16
+ end
17
+
18
+ desc "Copies the trunk to a tag with the name of the current release"
19
+ task(:tag_release) do
20
+ tag_release
21
+ end
22
+
23
+ def run_suite
24
+ dir = File.dirname(__FILE__)
25
+ system("ruby #{dir}/spec/spec_suite.rb") || raise("Example Suite failed")
26
+ end
27
+
28
+ PKG_NAME = "js_test_core"
29
+ PKG_VERSION = "0.1.1"
30
+ PKG_FILES = FileList[
31
+ '[A-Z]*',
32
+ '*.rb',
33
+ 'lib/**/*.rb',
34
+ 'core/**',
35
+ 'bin/**',
36
+ 'spec/**/*.rb'
37
+ ]
38
+
39
+ spec = Gem::Specification.new do |s|
40
+ s.name = PKG_NAME
41
+ s.version = PKG_VERSION
42
+ s.summary = "The JsTestCore library is the core javascript test server library used by several JS Test server libraries."
43
+ s.test_files = "spec/spec_suite.rb"
44
+ s.description = s.summary
45
+
46
+ s.files = PKG_FILES.to_a
47
+ s.require_path = 'lib'
48
+
49
+ s.has_rdoc = true
50
+ s.extra_rdoc_files = [ "README", "CHANGES" ]
51
+ s.rdoc_options = ["--main", "README", "--inline-source", "--line-numbers"]
52
+
53
+ s.test_files = Dir.glob('spec/*_spec.rb')
54
+ s.require_path = 'lib'
55
+ s.author = "Brian Takita"
56
+ s.email = "brian@pivotallabs.com"
57
+ s.homepage = "http://pivotallabs.com"
58
+ s.rubyforge_project = "pivotalrb"
59
+ s.add_dependency('Selenium')
60
+ s.add_dependency('thin', '=0.8.1')
61
+ end
62
+
63
+ Rake::GemPackageTask.new(spec) do |pkg|
64
+ pkg.need_zip = true
65
+ pkg.need_tar = true
66
+ end
67
+
68
+ def tag_release
69
+ dashed_version = PKG_VERSION.gsub('.', '-')
70
+ svn_user = "#{ENV["SVN_USER"]}@" || ""
71
+ `svn cp svn+ssh://#{svn_user}rubyforge.org/var/svn/pivotalrb/js_test_core/trunk svn+ssh://#{svn_user}rubyforge.org/var/svn/pivotalrb/js_test_core/tags/REL-#{dashed_version} -m 'Version #{PKG_VERSION}'`
72
+ end