diff options
author | sersut <serdar@opscode.com> | 2013-05-16 08:55:42 -0700 |
---|---|---|
committer | sersut <serdar@opscode.com> | 2013-05-16 08:55:42 -0700 |
commit | ad2a8d7ab69213d7f2a6b367be12fa506adcb9b3 (patch) | |
tree | 3d16690b43580dc625c35ee7138d719fb5f1825e /spec/unit/deprecation_spec.rb | |
parent | 75edb5fe7ea4e51b269bb6e11a0c6b4cd491ff9b (diff) | |
download | chef-ad2a8d7ab69213d7f2a6b367be12fa506adcb9b3.tar.gz |
Spec for deprecation.
Diffstat (limited to 'spec/unit/deprecation_spec.rb')
-rw-r--r-- | spec/unit/deprecation_spec.rb | 86 |
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 + |