summaryrefslogtreecommitdiff
path: root/spec/unit/deprecation_spec.rb
diff options
context:
space:
mode:
authorsersut <serdar@opscode.com>2013-05-16 08:55:42 -0700
committersersut <serdar@opscode.com>2013-05-16 08:55:42 -0700
commitad2a8d7ab69213d7f2a6b367be12fa506adcb9b3 (patch)
tree3d16690b43580dc625c35ee7138d719fb5f1825e /spec/unit/deprecation_spec.rb
parent75edb5fe7ea4e51b269bb6e11a0c6b4cd491ff9b (diff)
downloadchef-ad2a8d7ab69213d7f2a6b367be12fa506adcb9b3.tar.gz
Spec for deprecation.
Diffstat (limited to 'spec/unit/deprecation_spec.rb')
-rw-r--r--spec/unit/deprecation_spec.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/spec/unit/deprecation_spec.rb b/spec/unit/deprecation_spec.rb
new file mode 100644
index 0000000000..fcd47b8084
--- /dev/null
+++ b/spec/unit/deprecation_spec.rb
@@ -0,0 +1,86 @@
+#
+# Author:: Adam Jacob (<adam@opscode.com>)
+# Copyright:: Copyright (c) 2008 Opscode, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require 'spec_helper'
+require 'chef/deprecation/warnings'
+
+describe Chef::Deprecation do
+
+ it "method snapshot before file-refactor should match current methods" do
+ method_snapshot_file = File.join(CHEF_SPEC_DATA, "file-providers-method-snapshot-chef-11-4.json")
+ method_snapshot = JSON.parse(File.open(method_snapshot_file).read())
+
+ method_snapshot.each do |class_name, old_methods|
+ class_object = class_from_string(class_name)
+ current_methods = class_object.public_instance_methods
+
+ old_methods.each do |old_method|
+ if !current_methods.include?(old_method.to_sym)
+ fail "Can not find method '#{old_method.to_sym}' for class '#{class_name}'"
+ end
+ end
+ end
+ end
+
+ context 'deprecation warning messages' do
+ before(:each) do
+ @warning_output = [ ]
+ Chef::Log.stub!(:warn) { |msg| @warning_output << msg }
+ end
+
+ it 'should be enabled for deprecated methods' do
+ TestClass.new.deprecated_method(10)
+ @warning_output.should_not be_empty
+ end
+
+ it 'should contain stack trace' do
+ TestClass.new.deprecated_method(10)
+ @warning_output.join("").include?(".rb").should be_true
+ end
+ end
+
+ it 'deprecated methods should still be called' do
+ test_instance = TestClass.new
+ test_instance.deprecated_method(10)
+ test_instance.get_value.should == 10
+ end
+
+ def class_from_string(str)
+ str.split('::').inject(Object) do |mod, class_name|
+ mod.const_get(class_name)
+ end
+ end
+
+ module DeprecatedMethods
+ def deprecated_method(value)
+ @value = value
+ end
+
+ def get_value
+ @value
+ end
+ end
+
+ class TestClass
+ extend Chef::Deprecation::Warnings
+ include DeprecatedMethods
+ add_deprecation_warnings_for(DeprecatedMethods.instance_methods)
+ end
+
+end
+