spec/spork/diagnoser_spec.rb in milhouse-spork-0.7.5.1 vs spec/spork/diagnoser_spec.rb in milhouse-spork-0.7.5.2

- old
+ new

@@ -1,105 +1,105 @@ -require File.dirname(__FILE__) + '/../spec_helper' - - -describe Spork::Diagnoser do - after(:each) do - Spork::Diagnoser.remove_hook! - Spork::Diagnoser.loaded_files.clear - end - - def run_simulation(directory, filename = nil, contents = nil, &block) - FileUtils.mkdir_p(directory) - Dir.chdir(directory) do - if filename - File.open(filename, 'wb') { |f| f << contents } - Spork::Diagnoser.install_hook! - require filename - end - yield if block_given? - end - end - - it "installs it's hook and tells you when files have been loaded" do - run_simulation(SPEC_TMP_DIR, 'my_awesome_library_include.rb', '1 + 5') - Spork::Diagnoser.loaded_files.keys.should include_a_string_like('my_awesome_library_include') - end - - it 'excludes files outside of Dir.pwd' do - run_simulation(SPEC_TMP_DIR + '/project_root', '../external_dependency.rb', '1 + 5') - Spork::Diagnoser.loaded_files.keys.should_not include_a_string_like('external_dependency') - end - - it "excludes files outside of Dir.pwd but in ruby's include path" do - directory = SPEC_TMP_DIR + '/project_root' - external_dependency_dir = SPEC_TMP_DIR + '/external_dependency' - $: << external_dependency_dir - FileUtils.mkdir_p(directory) - FileUtils.mkdir_p(external_dependency_dir) - Dir.chdir(directory) do - File.open(external_dependency_dir + '/the_most_awesome_external_dependency_ever.rb', 'wb') { |f| f << 'funtimes = true' } - Spork::Diagnoser.install_hook! - require 'the_most_awesome_external_dependency_ever' - end - - Spork::Diagnoser.loaded_files.keys.should_not include_a_string_like('the_most_awesome_external_dependency_ever') - $:.pop - end - - it "expands files to their fully their fully qualified path" do - directory = SPEC_TMP_DIR + '/project_root' - lib_directory = directory + '/lib' - $: << lib_directory - FileUtils.mkdir_p(lib_directory) - Dir.chdir(directory) do - File.open(lib_directory + "/the_most_awesome_lib_file_ever.rb", "wb") { |f| f << "funtimes = true" } - Spork::Diagnoser.install_hook! - require 'the_most_awesome_lib_file_ever' - end - - Spork::Diagnoser.loaded_files.keys.should include_a_string_like('lib/the_most_awesome_lib_file_ever') - $:.pop - end - - it "can tell the difference between a folder in the project path and a file in an external path" do - directory = SPEC_TMP_DIR + '/project_root' - external_dependency_dir = SPEC_TMP_DIR + '/external_dependency' - $: << external_dependency_dir - FileUtils.mkdir_p(directory) - FileUtils.mkdir_p(external_dependency_dir) - Dir.chdir(directory) do - FileUtils.mkdir_p(directory + '/a_popular_folder_name') - File.open(external_dependency_dir + '/a_popular_folder_name.rb', 'wb') { |f| f << 'funtimes = true' } - Spork::Diagnoser.install_hook! - require 'a_popular_folder_name' - end - - Spork::Diagnoser.loaded_files.keys.should_not include_a_string_like('a_popular_folder_name') - $:.pop - end - - it "filters backtrace beyond the last line matching the entry point" do - Spork::Diagnoser.install_hook!("test_filter/environment.rb") - create_file("test_filter/environment.rb", "require 'test_filter/app.rb'") - create_file("test_filter/app.rb", "require 'test_filter/my_model.rb'") - create_file("test_filter/my_model.rb", "'my model here'") - in_current_dir do - require 'test_filter/environment.rb' - end - f = Spork::Diagnoser.loaded_files - f[f.keys.grep(/app.rb/).first].last.should include('test_filter/environment.rb') - f[f.keys.grep(/my_model.rb/).first].last.should include('test_filter/environment.rb') - f[f.keys.grep(/environment.rb/).first].should == [] - end - - describe ".output_results" do - it "outputs the results relative to the current directory" do - Spork::Diagnoser.loaded_files["/project_path/lib/file.rb"] = "/project_path/lib/parent_file.rb:35" - Dir.stub!(:pwd).and_return("/project_path") - out = StringIO.new - Spork::Diagnoser.output_results(out) - out.string.should =~ %r([^/]lib/file.rb) - out.string.should =~ %r([^/]lib/parent_file.rb) - out.string.should_not include("/project_path/") - end - end -end +require File.dirname(__FILE__) + '/../spec_helper' + + +describe Spork::Diagnoser do + after(:each) do + Spork::Diagnoser.remove_hook! + Spork::Diagnoser.loaded_files.clear + end + + def run_simulation(directory, filename = nil, contents = nil, &block) + FileUtils.mkdir_p(directory) + Dir.chdir(directory) do + if filename + File.open(filename, 'wb') { |f| f << contents } + Spork::Diagnoser.install_hook! + require filename + end + yield if block_given? + end + end + + it "installs it's hook and tells you when files have been loaded" do + run_simulation(SPEC_TMP_DIR, 'my_awesome_library_include.rb', '1 + 5') + Spork::Diagnoser.loaded_files.keys.should include_a_string_like('my_awesome_library_include') + end + + it 'excludes files outside of Dir.pwd' do + run_simulation(SPEC_TMP_DIR + '/project_root', '../external_dependency.rb', '1 + 5') + Spork::Diagnoser.loaded_files.keys.should_not include_a_string_like('external_dependency') + end + + it "excludes files outside of Dir.pwd but in ruby's include path" do + directory = SPEC_TMP_DIR + '/project_root' + external_dependency_dir = SPEC_TMP_DIR + '/external_dependency' + $: << external_dependency_dir + FileUtils.mkdir_p(directory) + FileUtils.mkdir_p(external_dependency_dir) + Dir.chdir(directory) do + File.open(external_dependency_dir + '/the_most_awesome_external_dependency_ever.rb', 'wb') { |f| f << 'funtimes = true' } + Spork::Diagnoser.install_hook! + require 'the_most_awesome_external_dependency_ever' + end + + Spork::Diagnoser.loaded_files.keys.should_not include_a_string_like('the_most_awesome_external_dependency_ever') + $:.pop + end + + it "expands files to their fully their fully qualified path" do + directory = SPEC_TMP_DIR + '/project_root' + lib_directory = directory + '/lib' + $: << lib_directory + FileUtils.mkdir_p(lib_directory) + Dir.chdir(directory) do + File.open(lib_directory + "/the_most_awesome_lib_file_ever.rb", "wb") { |f| f << "funtimes = true" } + Spork::Diagnoser.install_hook! + require 'the_most_awesome_lib_file_ever' + end + + Spork::Diagnoser.loaded_files.keys.should include_a_string_like('lib/the_most_awesome_lib_file_ever') + $:.pop + end + + it "can tell the difference between a folder in the project path and a file in an external path" do + directory = SPEC_TMP_DIR + '/project_root' + external_dependency_dir = SPEC_TMP_DIR + '/external_dependency' + $: << external_dependency_dir + FileUtils.mkdir_p(directory) + FileUtils.mkdir_p(external_dependency_dir) + Dir.chdir(directory) do + FileUtils.mkdir_p(directory + '/a_popular_folder_name') + File.open(external_dependency_dir + '/a_popular_folder_name.rb', 'wb') { |f| f << 'funtimes = true' } + Spork::Diagnoser.install_hook! + require 'a_popular_folder_name' + end + + Spork::Diagnoser.loaded_files.keys.should_not include_a_string_like('a_popular_folder_name') + $:.pop + end + + it "filters backtrace beyond the last line matching the entry point" do + Spork::Diagnoser.install_hook!("test_filter/environment.rb") + create_file("test_filter/environment.rb", "require 'test_filter/app.rb'") + create_file("test_filter/app.rb", "require 'test_filter/my_model.rb'") + create_file("test_filter/my_model.rb", "'my model here'") + in_current_dir do + require 'test_filter/environment.rb' + end + f = Spork::Diagnoser.loaded_files + f[f.keys.grep(/app.rb/).first].last.should include('test_filter/environment.rb') + f[f.keys.grep(/my_model.rb/).first].last.should include('test_filter/environment.rb') + f[f.keys.grep(/environment.rb/).first].should == [] + end + + describe ".output_results" do + it "outputs the results relative to the current directory" do + Spork::Diagnoser.loaded_files["/project_path/lib/file.rb"] = "/project_path/lib/parent_file.rb:35" + Dir.stub!(:pwd).and_return("/project_path") + out = StringIO.new + Spork::Diagnoser.output_results(out) + out.string.should =~ %r([^/]lib/file.rb) + out.string.should =~ %r([^/]lib/parent_file.rb) + out.string.should_not include("/project_path/") + end + end +end