blacklight 3.0pre1 → 3.0pre2

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 (114) hide show
  1. data/.gitmodules +0 -6
  2. data/README.rdoc +94 -87
  3. data/blacklight.gemspec +1 -1
  4. data/config/routes.rb +1 -1
  5. data/lib/blacklight.rb +2 -2
  6. data/lib/blacklight/catalog.rb +10 -12
  7. data/lib/blacklight/controller.rb +2 -2
  8. data/lib/blacklight/engine.rb +5 -2
  9. data/lib/blacklight/solr/document.rb +1 -1
  10. data/lib/blacklight/solr/document/marc.rb +1 -16
  11. data/lib/blacklight/solr_helper.rb +43 -14
  12. data/lib/blacklight/version.rb +1 -1
  13. data/lib/generators/blacklight/assets_generator.rb +25 -0
  14. data/lib/generators/blacklight/blacklight_generator.rb +16 -1
  15. data/lib/generators/blacklight/jetty_generator.rb +101 -0
  16. data/lib/generators/blacklight/solr_conf_generator.rb +25 -0
  17. data/lib/generators/blacklight/templates/catalog_controller.rb +0 -1
  18. data/lib/generators/blacklight/templates/config/solr.yml +14 -2
  19. data/lib/generators/blacklight/templates/public/images/{blacklight/bg.png → bg.png} +0 -0
  20. data/lib/generators/blacklight/templates/public/images/{blacklight/border.png → border.png} +0 -0
  21. data/lib/generators/blacklight/templates/public/images/{blacklight/bul_sq_gry.gif → bul_sq_gry.gif} +0 -0
  22. data/lib/generators/blacklight/templates/public/images/{blacklight/checkmark.gif → checkmark.gif} +0 -0
  23. data/lib/generators/blacklight/templates/public/images/{blacklight/logo.png → logo.png} +0 -0
  24. data/lib/generators/blacklight/templates/public/images/{blacklight/magnifying_glass.gif → magnifying_glass.gif} +0 -0
  25. data/lib/generators/blacklight/templates/public/images/{blacklight/remove.gif → remove.gif} +0 -0
  26. data/lib/generators/blacklight/templates/public/images/{blacklight/separator.gif → separator.gif} +0 -0
  27. data/lib/generators/blacklight/templates/public/images/{blacklight/start_over.gif → start_over.gif} +0 -0
  28. data/lib/generators/blacklight/templates/public/javascripts/blacklight.js +5 -0
  29. data/lib/generators/blacklight/templates/public/stylesheets/blacklight.css +9 -3
  30. data/lib/generators/blacklight/templates/solr_conf/schema.xml +339 -0
  31. data/lib/generators/blacklight/templates/solr_conf/solrconfig.xml +578 -0
  32. data/lib/railties/all_tests.rake +11 -0
  33. data/lib/railties/blacklight.rake +0 -52
  34. data/lib/railties/blacklight_cucumber.rake +125 -0
  35. data/lib/railties/blacklight_rspec.rake +128 -0
  36. data/lib/railties/{test_solr_server.rb → jetty_solr_server.rb} +22 -45
  37. data/lib/railties/solr_marc.rake +24 -5
  38. data/test_support/.rspec +1 -0
  39. data/test_support/data/test_data.utf8.mrc +1 -0
  40. data/test_support/features/bookmarks.feature +88 -0
  41. data/test_support/features/did_you_mean.feature +129 -0
  42. data/test_support/features/folder.feature +67 -0
  43. data/test_support/features/librarian_view.feature +17 -0
  44. data/test_support/features/record_view.feature +34 -0
  45. data/test_support/features/saved_searches.feature +49 -0
  46. data/test_support/features/search.feature +86 -0
  47. data/test_support/features/search_filters.feature +121 -0
  48. data/test_support/features/search_history.feature +95 -0
  49. data/test_support/features/search_results.feature +61 -0
  50. data/test_support/features/search_sort.feature +29 -0
  51. data/test_support/features/step_definitions/bookmarks_steps.rb +5 -0
  52. data/test_support/features/step_definitions/error_steps.rb +4 -0
  53. data/test_support/features/step_definitions/folder_steps.rb +26 -0
  54. data/test_support/features/step_definitions/general_steps.rb +49 -0
  55. data/test_support/features/step_definitions/record_view_steps.rb +11 -0
  56. data/test_support/features/step_definitions/saved_searches_steps.rb +21 -0
  57. data/test_support/features/step_definitions/search_facets_steps.rb +28 -0
  58. data/test_support/features/step_definitions/search_history_steps.rb +8 -0
  59. data/test_support/features/step_definitions/search_result_steps.rb +113 -0
  60. data/test_support/features/step_definitions/search_steps.rb +102 -0
  61. data/test_support/features/step_definitions/user_steps.rb +4 -0
  62. data/test_support/features/step_definitions/web_steps.rb +211 -0
  63. data/test_support/features/support/env.rb +49 -0
  64. data/test_support/features/support/paths.rb +55 -0
  65. data/test_support/features/support/selectors.rb +39 -0
  66. data/test_support/features/unapi.feature +30 -0
  67. data/test_support/spec/controllers/application_controller_spec.rb +22 -0
  68. data/test_support/spec/controllers/catalog_controller_spec.rb +480 -0
  69. data/test_support/spec/controllers/folder_controller_spec.rb +40 -0
  70. data/test_support/spec/controllers/search_history_controller_spec.rb +45 -0
  71. data/test_support/spec/data/sample_docs.yml +655 -0
  72. data/test_support/spec/data/test_data.utf8.mrc +1 -0
  73. data/test_support/spec/helpers/blacklight_helper_spec.rb +482 -0
  74. data/test_support/spec/helpers/hash_as_hidden_fields_spec.rb +23 -0
  75. data/test_support/spec/helpers/render_constraints_helper_spec.rb +64 -0
  76. data/test_support/spec/helpers/search_history_helper_spec.rb +11 -0
  77. data/test_support/spec/helpers/solr_helper_spec.rb +873 -0
  78. data/test_support/spec/lib/blacklight_email_spec.rb +23 -0
  79. data/test_support/spec/lib/blacklight_sms_spec.rb +23 -0
  80. data/test_support/spec/lib/blacklight_solr_document_dublin_core_spec.rb +41 -0
  81. data/test_support/spec/lib/blacklight_solr_document_marc_spec.rb +88 -0
  82. data/test_support/spec/lib/blacklight_solr_document_spec.rb +173 -0
  83. data/test_support/spec/lib/blacklight_spec.rb +39 -0
  84. data/test_support/spec/lib/configurable_spec.rb +97 -0
  85. data/test_support/spec/lib/facet_paginator_spec.rb +93 -0
  86. data/test_support/spec/lib/marc_export_spec.rb +444 -0
  87. data/test_support/spec/lib/search_fields_spec.rb +105 -0
  88. data/test_support/spec/lib/tasks/blacklight_task_spec.rb +21 -0
  89. data/test_support/spec/lib/tasks/solr_marc_task_spec.rb +59 -0
  90. data/test_support/spec/models/bookmark_spec.rb +37 -0
  91. data/test_support/spec/models/record_mailer_spec.rb +67 -0
  92. data/test_support/spec/models/search_spec.rb +55 -0
  93. data/test_support/spec/models/solr_docment_spec.rb +111 -0
  94. data/test_support/spec/rcov.opts +3 -0
  95. data/test_support/spec/spec.opts +4 -0
  96. data/test_support/spec/spec_helper.rb +38 -0
  97. data/test_support/spec/support/action_controller.rb +42 -0
  98. data/test_support/spec/support/assert_difference.rb +16 -0
  99. data/test_support/spec/support/include_text.rb +20 -0
  100. data/test_support/spec/views/catalog/_constraints_element.html.erb_spec.rb +59 -0
  101. data/test_support/spec/views/catalog/_document_list.html.erb_spec.rb +8 -0
  102. data/test_support/spec/views/catalog/_facets.html.erb_spec.rb +182 -0
  103. data/test_support/spec/views/catalog/_index_partials/_default.erb_spec.rb +70 -0
  104. data/test_support/spec/views/catalog/_show_partials/_default.html.erb_spec.rb +70 -0
  105. data/test_support/spec/views/catalog/index.atom.builder_spec.rb +141 -0
  106. data/test_support/spec/views/catalog/show.html.erb_spec.rb +100 -0
  107. data/test_support/spec/views/catalog/unapi.xml.builder_spec.rb +45 -0
  108. metadata +95 -98
  109. data/lib/blacklight/marc.rb +0 -46
  110. data/lib/blacklight/marc/citation.rb +0 -251
  111. data/lib/railties/cucumber.rake +0 -53
  112. data/lib/railties/rspec.rake +0 -188
  113. data/spec/helpers/catalog_helper_spec.rb +0 -111
  114. data/spec/views/catalog/_sms_form.html.erb_spec.rb +0 -19
@@ -0,0 +1,11 @@
1
+ namespace :blacklight do
2
+ desc "Run Blacklight cucumber and rspec"
3
+ task :all_tests => ['blacklight:spec:with_solr', 'blacklight:cucumber:with_solr']
4
+
5
+ namespace :all_tests do
6
+ desc "Run Blacklight rspec and cucumber tests with rcov"
7
+ rm "blacklight-coverage.data" if File.exist?("blacklight-coverage.data")
8
+ task :rcov => ['blacklight:spec:rcov', 'blacklight:cucumber:rcov']
9
+ end
10
+ end
11
+
@@ -11,56 +11,4 @@ namespace :blacklight do
11
11
 
12
12
  end
13
13
 
14
- # Rake tasks for Blacklight plugin
15
-
16
- # if you would like to see solr startup messages on STDERR
17
- # when starting solr test server during functional tests use:
18
- #
19
- # rake SOLR_CONSOLE=true
20
- require File.expand_path(File.join(File.dirname(__FILE__), 'test_solr_server.rb'))
21
-
22
-
23
- SOLR_PARAMS = {
24
- :quiet => ENV['SOLR_CONSOLE'] ? false : true,
25
- :jetty_home => ENV['SOLR_JETTY_HOME'] || File.expand_path('./jetty'),
26
- :jetty_port => ENV['SOLR_JETTY_PORT'] || 8888,
27
- :solr_home => ENV['SOLR_HOME'] || File.expand_path('./jetty/solr')
28
- }
29
-
30
- NO_JETTY_MSG = "In order to use solr:spec, you much checkout Blacklight-jetty from our github repository, and place it in the root of your application under the directory /jetty. \n prompt> git clone git@github.com:projectblacklight/blacklight-jetty.git jetty \n You will also need to pupulate your test instance of solr with test data. You can do this with: \n prompt> rake solr:marc:index_test_data RAILS_ENV=test"
31
-
32
- namespace :solr do
33
-
34
- desc "Calls RSpec Examples wrapped in the test instance of Solr"
35
- task :spec do
36
- raise NO_JETTY_MSG unless File.exists? SOLR_PARAMS[:jetty_home]
37
- # wrap tests with a test-specific Solr server
38
- error = TestSolrServer.wrap(SOLR_PARAMS) do
39
- rm_f "coverage.data"
40
- Rake::Task["rake:spec"].invoke
41
- #puts `ps aux | grep start.jar`
42
- end
43
- raise "test failures: #{error}" if error
44
- end
45
-
46
- desc "Calls Cucumber Features wrapped in the test instance of Solr"
47
- task :features do
48
- # wrap tests with a test-specific Solr server
49
- error = TestSolrServer.wrap(SOLR_PARAMS) do
50
- Rake::Task["cucumber:all"].invoke
51
- #puts `ps aux | grep start.jar`
52
- end
53
- raise "test failures: #{error}" if error
54
- end
55
-
56
- desc "Runs all features and specs"
57
- task :all do
58
- error = TestSolrServer.wrap(SOLR_PARAMS) do
59
- Rake::Task["rake:spec"].invoke
60
- Rake::Task["cucumber:all"].invoke
61
- end
62
- raise "test failures: #{error}" if error
63
- end
64
-
65
- end
66
14
 
@@ -0,0 +1,125 @@
1
+ # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
2
+ # It is recommended to regenerate this file in the future when you upgrade to a
3
+ # newer version of cucumber-rails. Consider adding your own code to a new file
4
+ # instead of editing this one. Cucumber will automatically load all features/**/*.rb
5
+ # files.
6
+
7
+ # Blacklight customization, trick Cucumber into looking in our current
8
+ # location for Rails.root, even though we're going to give it features
9
+ # from elsewhere.
10
+ ENV['RAILS_ROOT'] = Rails.root
11
+
12
+ # blacklight_features, where to find features inside blacklight source?
13
+ blacklight_features = File.expand_path("./test_support/features", Blacklight.root)
14
+
15
+ unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
16
+
17
+ vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
18
+ $LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
19
+
20
+ begin
21
+ require 'cucumber/rake/task'
22
+
23
+ namespace :blacklight do
24
+ namespace :cucumber do
25
+ Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
26
+ # Blacklight customization, call features from external location, pass
27
+ # in feature location wtih cucumber_opts, yeah it's weird but that's how.
28
+ t.cucumber_opts = blacklight_features
29
+
30
+ t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
31
+ t.fork = true # You may get faster startup if you set this to false
32
+ t.profile = 'default'
33
+ end
34
+
35
+ Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
36
+ # Blacklight customization, call features from external location, pass
37
+ # in feature location wtih cucumber_opts, yeah it's weird but that's how.
38
+ t.cucumber_opts = blacklight_features
39
+
40
+
41
+ t.binary = vendored_cucumber_bin
42
+ t.fork = true # You may get faster startup if you set this to false
43
+ t.profile = 'wip'
44
+ end
45
+
46
+ Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
47
+ # Blacklight customization, call features from external location, pass
48
+ # in feature location wtih cucumber_opts, yeah it's weird but that's how.
49
+ t.cucumber_opts = blacklight_features
50
+
51
+ t.binary = vendored_cucumber_bin
52
+ t.fork = true # You may get faster startup if you set this to false
53
+ t.profile = 'rerun'
54
+ end
55
+
56
+ Cucumber::Rake::Task.new({:rcov => 'db:test:prepare'}, 'Run features with rcov') do |t|
57
+ # Blacklight customization, call features from external location, pass
58
+ # in feature location wtih cucumber_opts, yeah it's weird but that's how.
59
+ t.cucumber_opts = blacklight_features
60
+
61
+ t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
62
+ t.fork = true # You may get faster startup if you set this to false
63
+ t.profile = 'default'
64
+ t.rcov = true
65
+ t.rcov_opts = %w{--rails --exclude osx\/objc,gems\/,spec\/,features\/ --aggregate blacklight-coverage.data}
66
+ t.rcov_opts << %[-o "blacklight-coverage"]
67
+ end
68
+
69
+
70
+ desc 'Run all features'
71
+ task :all => [:ok, :wip]
72
+
73
+
74
+ # Solr wrapper. for now just for blacklight:cucumber, plan to
75
+ # provide it for all variants eventually.
76
+ # if you would like to see solr startup messages on STDERR
77
+ # when starting solr test server during functional tests use:
78
+ #
79
+ # rake SOLR_CONSOLE=true
80
+ require File.expand_path('../jetty_solr_server.rb', __FILE__)
81
+ desc "blacklight:cucumber with jetty/solr launch"
82
+ task :with_solr do
83
+ # wrap tests with a test-specific Solr server
84
+ # Need to look up where the test jetty is located
85
+ # from solr.yml, we don't hardcode it anymore.
86
+
87
+ solr_yml_path = locate_path("config", "solr.yml")
88
+ jetty_path = if ( File.exists?( solr_yml_path ))
89
+ solr_config = YAML::load(File.open(solr_yml_path))
90
+ solr_config["test"]["jetty_path"] if solr_config["test"]
91
+ end
92
+ raise Exception.new("Can't find jetty path to start test jetty. Expect a jetty_path key in config/solr.yml for test environment.") unless jetty_path
93
+
94
+ JettySolrServer.new(
95
+ :jetty_home => File.expand_path(jetty_path, Rails.root),
96
+ :sleep_after_start => 2).wrap do
97
+ Rake::Task["blacklight:cucumber"].invoke
98
+ end
99
+ end
100
+
101
+ end
102
+
103
+ desc 'Alias for blacklight:cucumber:ok'
104
+ task :cucumber => 'blacklight:cucumber:ok'
105
+
106
+ end
107
+
108
+
109
+
110
+
111
+ task :features => :cucumber do
112
+ STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
113
+ end
114
+
115
+ # In case we don't have ActiveRecord, append a no-op task that we can depend upon.
116
+ task 'db:test:prepare' do
117
+ end
118
+ rescue LoadError
119
+ desc 'cucumber rake task not available (cucumber not installed)'
120
+ task :cucumber do
121
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
122
+ end
123
+ end
124
+
125
+ end
@@ -0,0 +1,128 @@
1
+ # Blacklight customization of the Rake tasks that come with rspec-2, to run
2
+ # specs located in alternate location (inside BL plugin), and to provide
3
+ # rake tasks for jetty/solr wrapping.
4
+ #
5
+ # Same tasks as in ordinary rspec, but prefixed with blacklight:.
6
+ #
7
+ # rspec2 keeps it's rake tasks inside it's own code, it doesn't generate them.
8
+ # We had to copy them from there and modify, may have to be done again
9
+ # if rspec2 changes a lot, but this code looks relatively cleanish.
10
+ begin
11
+ require 'rspec/core'
12
+ require 'rspec/core/rake_task'
13
+ Rake.application.instance_variable_get('@tasks')['default'].prerequisites.delete('test')
14
+
15
+ spec_prereq = Rails.configuration.generators.options[:rails][:orm] == :active_record ? "db:test:prepare" : :noop
16
+ task :noop do; end
17
+ #task :default => :spec
18
+
19
+ blacklight_spec = File.expand_path("./test_support/spec", Blacklight.root)
20
+
21
+ # Set env variable to tell our spec/spec_helper.rb where we really are,
22
+ # so it doesn't have to guess with relative path, which will be wrong
23
+ # since we allow spec_dir to be in a remote location. spec_helper.rb
24
+ # needs it before Rails.root is defined there, even though we can
25
+ # oddly get it here, i dunno.
26
+ ENV['RAILS_ROOT'] = Rails.root
27
+
28
+ namespace :blacklight do
29
+
30
+ desc "Run all specs in spec directory (excluding plugin specs)"
31
+ RSpec::Core::RakeTask.new(:spec => spec_prereq) do |t|
32
+ # the user might not have run rspec generator because they don't
33
+ # actually need it, but without an ./.rspec they won't get color,
34
+ # let's insist.
35
+ t.rspec_opts = "--colour"
36
+
37
+ # pattern directory name defaults to ./**/*_spec.rb, but has a more concise command line echo
38
+ t.pattern = "#{blacklight_spec}"
39
+ end
40
+
41
+ # Don't understand what this does or how to make it use our remote stats_directory
42
+ #task :stats => "spec:statsetup"
43
+
44
+ namespace :spec do
45
+ [:requests, :models, :controllers, :views, :helpers, :mailers, :lib, :routing].each do |sub|
46
+ desc "Run the code examples in spec/#{sub}"
47
+ RSpec::Core::RakeTask.new(sub => spec_prereq) do |t|
48
+ # the user might not have run rspec generator because they don't
49
+ # actually need it, but without an ./.rspec they won't get color,
50
+ # let's insist.
51
+ t.rspec_opts = "--colour"
52
+
53
+ # pattern directory name defaults to ./**/*_spec.rb, but has a more concise command line echo
54
+ t.pattern = "#{blacklight_spec}/#{sub}"
55
+ end
56
+ end
57
+
58
+ desc "Run all specs with rcov"
59
+ RSpec::Core::RakeTask.new(:rcov => spec_prereq) do |t|
60
+ t.rcov = true
61
+ # pattern directory name defaults to ./**/*_spec.rb, but has a more concise command line echo
62
+ t.pattern = File.join(blacklight_spec, "/**/*_spec.rb")
63
+ t.rspec_opts = "--colour"
64
+ t.rcov_opts = '-o "blacklight-coverage" --exclude /gems/,/Library/,/usr/,lib/tasks,.bundle,config,/lib/rspec/,/lib/rspec-'
65
+ end
66
+
67
+ # Blacklight. Solr wrapper. for now just for blacklight:spec, plan to
68
+ # provide it for all variants eventually.
69
+ # if you would like to see solr startup messages on STDERR
70
+ # when starting solr test server during functional tests use:
71
+ #
72
+ # rake SOLR_CONSOLE=true
73
+ require File.expand_path('../jetty_solr_server.rb', __FILE__)
74
+ desc "blacklight:solr with jetty/solr launch"
75
+ task :with_solr do
76
+ # wrap tests with a test-specific Solr server
77
+ # Need to look up where the test jetty is located
78
+ # from solr.yml, we don't hardcode it anymore.
79
+
80
+ solr_yml_path = locate_path("config", "solr.yml")
81
+ jetty_path = if ( File.exists?( solr_yml_path ))
82
+ solr_config = YAML::load(File.open(solr_yml_path))
83
+ solr_config["test"]["jetty_path"] if solr_config["test"]
84
+ end
85
+ raise Exception.new("Can't find jetty path to start test jetty. Expect a jetty_path key in config/solr.yml for test environment.") unless jetty_path
86
+
87
+
88
+ # wrap tests with a test-specific Solr server
89
+ JettySolrServer.new(
90
+ :jetty_home => File.expand_path(jetty_path, Rails.root),
91
+ :sleep_after_start => 2).wrap do
92
+ Rake::Task["blacklight:spec"].invoke
93
+ end
94
+ end
95
+
96
+
97
+ # Don't understand what this does or how to make it use our remote stats_directory.
98
+ # task :statsetup do
99
+ # require 'rails/code_statistics'
100
+ # ::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models')
101
+ # ::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views')
102
+ # ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers')
103
+ # ::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers')
104
+ # ::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib')
105
+ # ::STATS_DIRECTORIES << %w(Mailer\ specs spec/mailers) if File.exist?('spec/mailers')
106
+ # ::STATS_DIRECTORIES << %w(Routing\ specs spec/routing) if File.exist?('spec/routing')
107
+ # ::STATS_DIRECTORIES << %w(Request\ specs spec/requests) if File.exist?('spec/requests')
108
+ # ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
109
+ # ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
110
+ # ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
111
+ # ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
112
+ # ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
113
+ # ::CodeStatistics::TEST_TYPES << "Mailer specs" if File.exist?('spec/mailers')
114
+ # ::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing')
115
+ # ::CodeStatistics::TEST_TYPES << "Request specs" if File.exist?('spec/requests')
116
+ # end
117
+ end
118
+ end
119
+ rescue LoadError
120
+ # This rescue pattern stolen from cucumber; rspec didn't need it before since
121
+ # tasks only lived in rspec gem itself, but for Blacklight since we're copying
122
+ # these tasks into BL, we use the rescue so you can still run BL (without
123
+ # these tasks) even if you don't have rspec installed.
124
+ desc 'rspec rake tasks not available (rspec not installed)'
125
+ task :spec do
126
+ abort 'Rspec rake tasks not available. Be sure to install rspec gems. '
127
+ end
128
+ end
@@ -14,37 +14,28 @@
14
14
  # The behavior of TestSolrServer can be modified prior to start() by changing
15
15
  # port, solr_home, and quiet properties.
16
16
 
17
- class TestSolrServer
18
- require 'singleton'
19
- include Singleton
20
- attr_accessor :port, :jetty_home, :solr_home, :quiet
17
+ class JettySolrServer
18
+ attr_accessor :port, :jetty_home, :solr_home, :quiet, :sleep_after_start, :pid
21
19
 
22
20
  # configure the singleton with some defaults
23
- def initialize
21
+ def initialize(params = {})
24
22
  @pid = nil
23
+ self.quiet = params.has_key?(:quiet) ? !!params[:quiet] : true
24
+ self.jetty_home = params[:jetty_home]
25
+ self.solr_home = params[:solr_home] || File.expand_path("./solr", self.jetty_home)
26
+ self.port = params[:jetty_port] || 8888
27
+ self.sleep_after_start = params[:sleep_after_start]
25
28
  end
26
29
 
27
- def self.wrap(params = {})
28
- error = false
29
- solr_server = self.instance
30
- solr_server.quiet = params[:quiet] || true
31
- solr_server.jetty_home = params[:jetty_home]
32
- solr_server.solr_home = params[:solr_home]
33
- solr_server.port = params[:jetty_port] || 8888
30
+ def wrap
31
+ puts "JettySolrServer: starting server on #{RUBY_PLATFORM}"
32
+ self.start
34
33
  begin
35
- puts "starting solr server on #{RUBY_PLATFORM}"
36
- solr_server.start
37
- sleep params[:startup_wait] || 5
38
34
  yield
39
- rescue
40
- error = $!
41
- puts "*** Solr/Jetty Startup Error: #{error}"
42
- ensure
43
- puts "stopping solr server"
44
- solr_server.stop
35
+ ensure
36
+ puts "JettySolrServer: stopping solr server"
37
+ self.stop
45
38
  end
46
-
47
- return error
48
39
  end
49
40
 
50
41
  def jetty_command
@@ -52,10 +43,14 @@ class TestSolrServer
52
43
  end
53
44
 
54
45
  def start
55
- puts "jetty_home: #{@jetty_home}"
56
- puts "solr_home: #{@solr_home}"
57
- puts "jetty_command: #{jetty_command}"
46
+ puts "\nexecuting: #{jetty_command}\n\n"
47
+
58
48
  platform_specific_start
49
+
50
+ if self.sleep_after_start
51
+ puts "sleeping #{self.sleep_after_start}s waiting for startup."
52
+ sleep self.sleep_after_start
53
+ end
59
54
  end
60
55
 
61
56
  def stop
@@ -86,15 +81,13 @@ class TestSolrServer
86
81
  else # Not Windows
87
82
 
88
83
  def jruby_raise_error?
89
- raise 'JRuby requires that you start solr manually, then run "rake spec" or "rake features"' if defined?(JRUBY_VERSION)
84
+ raise 'JRuby requires that you start solr manually."' if defined?(JRUBY_VERSION)
90
85
  end
91
86
 
92
87
  # start the solr server
93
88
  def platform_specific_start
94
-
95
89
  jruby_raise_error?
96
90
 
97
- puts self.inspect
98
91
  Dir.chdir(@jetty_home) do
99
92
  @pid = fork do
100
93
  STDERR.close if @quiet
@@ -112,19 +105,3 @@ class TestSolrServer
112
105
  end
113
106
 
114
107
  end
115
- #
116
- # puts "hello"
117
- # SOLR_PARAMS = {
118
- # :quiet => ENV['SOLR_CONSOLE'] ? false : true,
119
- # :jetty_home => ENV['SOLR_JETTY_HOME'] || File.expand_path('../../jetty'),
120
- # :jetty_port => ENV['SOLR_JETTY_PORT'] || 8888,
121
- # :solr_home => ENV['SOLR_HOME'] || File.expand_path('test')
122
- # }
123
- #
124
- # # wrap functional tests with a test-specific Solr server
125
- # got_error = TestSolrServer.wrap(SOLR_PARAMS) do
126
- # puts `ps aux | grep start.jar`
127
- # end
128
- #
129
- # raise "test failures" if got_error
130
- #
@@ -14,8 +14,12 @@ namespace :solr do
14
14
 
15
15
  desc "Index the supplied test data into Solr"
16
16
  task :index_test_data do
17
- ENV['MARC_FILE'] = locate_path("spec", "data", "test_data.utf8.mrc")
18
-
17
+ # for now we are assuming test data is located in BL source checkout.
18
+ ENV['MARC_FILE'] = File.expand_path("./test_support/data/test_data.utf8.mrc", Blacklight.root )
19
+
20
+ # solr_path and solr_war_path will be picked up from
21
+ # jetty_path in solr.yml by main work task.
22
+
19
23
  Rake::Task[ "solr:marc:index:work" ].invoke
20
24
  end
21
25
 
@@ -117,11 +121,23 @@ def compute_arguments
117
121
  # Solr URL, find from solr.yml, app or plugin
118
122
  # use :replicate_master_url for current env if present, otherwise :url
119
123
  # for current env.
124
+ # Also take jetty_path from there if present.
120
125
  solr_yml_path = locate_path("config", "solr.yml")
121
126
  if ( File.exists?( solr_yml_path ))
122
127
  solr_config = YAML::load(File.open(solr_yml_path))
123
- arguments[:solr_url] = solr_config[ ::Rails.env ]['url'] if solr_config[::Rails.env]
128
+ if c = solr_config[::Rails.env]
129
+ arguments[:solr_url] = c['url']
130
+ if c['jetty_path']
131
+ arguments[:solr_path] = File.expand_path(File.join(c['jetty_path'], "solr"), Rails.root)
132
+ arguments[:solr_war_path] = File.expand_path(File.join(c['jetty_path'], "webapps", "solr.war"), Rails.root)
133
+ end
134
+ end
124
135
  end
136
+
137
+ # solrmarc.solr.war.path and solr.path, for now pull out of ENV
138
+ # if present. In progress. jrochkind 25 Apr 2011.
139
+ arguments[:solr_war_path] = ENV["SOLR_WAR_PATH"] if ENV["SOLR_WAR_PATH"]
140
+ arguments[:solr_path] = ENV['SOLR_PATH'] if ENV['SOLR_PATH']
125
141
 
126
142
 
127
143
  return arguments
@@ -130,14 +146,17 @@ end
130
146
  def solrmarc_command_line(arguments)
131
147
  cmd = "java #{arguments[:solrmarc_mem_arg]} "
132
148
  cmd += " -Dsolr.hosturl=#{arguments[:solr_url]} " unless arguments[:solr_url].blank?
149
+
150
+ cmd += " -Dsolrmarc.solr.war.path=#{arguments[:solr_war_path]}" unless arguments[:solr_war_path].blank?
151
+ cmd += " -Dsolr.path=#{arguments[:solr_path]}" unless arguments[:solr_path].blank?
152
+
133
153
  cmd += " -jar #{arguments[:solrmarc_jar_path]} #{arguments[:config_properties_path]} #{arguments["MARC_FILE"]}"
134
154
  return cmd
135
155
  end
136
156
 
137
157
 
138
158
  def locate_path(*subpath_fragments)
139
- local_root = File.expand_path File.join(File.dirname(__FILE__), '..', '..')
140
- puts "The local_root is #{local_root}"
159
+ local_root = File.expand_path File.join(File.dirname(__FILE__), '..', '..')
141
160
  subpath = subpath_fragments.join('/')
142
161
  base_match = [Rails.root, local_root].find do |base|
143
162
  File.exists? File.join(base, subpath)