1 require File.join(File.dirname(__FILE__), '..', 'spec_helper')
3 def glob_files(*path_elements)
4 Dir.glob(File.join(*path_elements))
7 def load_erb_yaml(path, context)
8 ryaml = ERB.new(File.read(path), 0)
9 YAML.load(ryaml.result(context))
13 # Needed to make the YAML load work...
15 glob_files(@root_dir, 'lib', '**/*.rb')
18 # Needed to make the YAML load work...
20 glob_files(@root_dir, 'spec', '**/*.rb')
24 describe "Twitter::Meta cache policy" do
27 @root_dir = project_root_dir
28 @meta = Twitter::Meta.new(@root_dir)
29 @expected_pkg_info = load_erb_yaml(File.join(@root_dir, 'pkg-info.yml'), binding)
30 @expected_project_files = project_files
31 @expected_spec_files = spec_files
34 it "should store value returned from project_files in @project_files after first glob" do
35 @meta.instance_eval("@project_files").should eql(nil)
37 @meta.instance_eval("@project_files").should eql(@expected_project_files)
39 @meta.instance_eval("@project_files").should eql(@expected_project_files)
42 it "should store value returned from spec_files in @spec_files after first glob" do
43 @meta.instance_eval("@spec_files").should eql(nil)
45 @meta.instance_eval("@spec_files").should eql(@expected_spec_files)
47 @meta.instance_eval("@spec_files").should eql(@expected_spec_files)
51 describe "Twitter::Meta" do
54 @root_dir = project_root_dir
55 @meta = Twitter::Meta.new(@root_dir)
56 @expected_yaml_hash = load_erb_yaml(File.join(@root_dir, 'pkg-info.yml'), binding)
57 @expected_project_files = project_files
58 @expected_spec_files = spec_files
61 it "should load and return YAML file into Hash object upon #pkg_info call" do
62 yaml_hash = @meta.pkg_info
63 yaml_hash.should.eql? @expected_yaml_hash
66 it "should return the embedded hash responding to key 'spec' of #pkg_info call upon #spec_info call" do
67 yaml_hash = @meta.spec_info
68 yaml_hash.should.eql? @expected_yaml_hash['spec']
71 it "should return list of files matching ROOT_DIR/lib/**/*.rb upon #project_files call" do
72 project_files = @meta.project_files
73 project_files.should.eql? @expected_project_files
76 it "should return list of files matching ROOT_DIR/spec/**/*.rb upon #spec_files call" do
77 spec_files = @meta.spec_files
78 spec_files.should.eql? @expected_spec_files
81 it "should return Gem specification based on YAML file contents and #project_files and #spec_files return values" do
83 expected_spec_hash = @expected_yaml_hash['spec']
84 expected_spec_hash.each do |key, val|
85 unless val.is_a?(Hash)
86 spec.send(key).should.eql? expected_spec_hash[key]