spec/spec_helper.rb in vault-rails-0.6.0 vs spec/spec_helper.rb in vault-rails-0.7.0
- old
+ new
@@ -1,24 +1,51 @@
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
require "vault/rails"
require "rspec"
+def vault_version_string
+ @vault_version_string ||= `vault --version`
+end
+
+TEST_VAULT_VERSION = Gem::Version.new(vault_version_string.match(/(\d+\.\d+\.\d+)/)[1])
+
RSpec.configure do |config|
# Prohibit using the should syntax
config.expect_with :rspec do |spec|
spec.syntax = :expect
end
# Allow tests to isolate a specific test using +focus: true+. If nothing
# is focused, then all tests are executed.
+ config.filter_run_when_matching :focus
+ config.filter_run_excluding vault: lambda { |v|
+ !vault_meets_requirements?(v)
+ }
+ config.filter_run_excluding ent_vault: lambda { |v|
+ !vault_is_enterprise? || !vault_meets_requirements?(v)
+ }
+ config.filter_run_excluding non_ent_vault: lambda { |v|
+ vault_is_enterprise? || !vault_meets_requirements?(v)
+ }
+
+ # Allow tests to isolate a specific test using +focus: true+. If nothing
+ # is focused, then all tests are executed.
config.filter_run(focus: true)
config.run_all_when_everything_filtered = true
# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = 'random'
+end
+
+def vault_is_enterprise?
+ !!vault_version_string.match(/\+(?:ent|prem)/)
+end
+
+def vault_meets_requirements?(v)
+ Gem::Requirement.new(v).satisfied_by?(TEST_VAULT_VERSION)
end
require File.expand_path("../dummy/config/environment.rb", __FILE__)