diff options
Diffstat (limited to 'spec/unit/chef_fs/file_pattern_spec.rb')
-rw-r--r-- | spec/unit/chef_fs/file_pattern_spec.rb | 553 |
1 files changed, 276 insertions, 277 deletions
diff --git a/spec/unit/chef_fs/file_pattern_spec.rb b/spec/unit/chef_fs/file_pattern_spec.rb index bac393a054..cdf506225a 100644 --- a/spec/unit/chef_fs/file_pattern_spec.rb +++ b/spec/unit/chef_fs/file_pattern_spec.rb @@ -28,466 +28,465 @@ describe Chef::ChefFS::FilePattern do context 'with empty pattern ""' do let(:pattern) { Chef::ChefFS::FilePattern.new('') } it 'match?' do - pattern.match?('').should be_true - pattern.match?('/').should be_false - pattern.match?('a').should be_false - pattern.match?('a/b').should be_false + expect(pattern.match?('')).to be_truthy + expect(pattern.match?('/')).to be_falsey + expect(pattern.match?('a')).to be_falsey + expect(pattern.match?('a/b')).to be_falsey end it 'exact_path' do - pattern.exact_path.should == '' + expect(pattern.exact_path).to eq('') end it 'could_match_children?' do - pattern.could_match_children?('').should be_false - pattern.could_match_children?('a/b').should be_false + expect(pattern.could_match_children?('')).to be_falsey + expect(pattern.could_match_children?('a/b')).to be_falsey end end context 'with root pattern "/"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/') } it 'match?' do - pattern.match?('/').should be_true - pattern.match?('').should be_false - pattern.match?('a').should be_false - pattern.match?('/a').should be_false + expect(pattern.match?('/')).to be_truthy + expect(pattern.match?('')).to be_falsey + expect(pattern.match?('a')).to be_falsey + expect(pattern.match?('/a')).to be_falsey end it 'exact_path' do - pattern.exact_path.should == '/' + expect(pattern.exact_path).to eq('/') end it 'could_match_children?' do - pattern.could_match_children?('').should be_false - pattern.could_match_children?('/').should be_false - pattern.could_match_children?('a').should be_false - pattern.could_match_children?('a/b').should be_false - pattern.could_match_children?('/a').should be_false + expect(pattern.could_match_children?('')).to be_falsey + expect(pattern.could_match_children?('/')).to be_falsey + expect(pattern.could_match_children?('a')).to be_falsey + expect(pattern.could_match_children?('a/b')).to be_falsey + expect(pattern.could_match_children?('/a')).to be_falsey end end context 'with simple pattern "abc"' do let(:pattern) { Chef::ChefFS::FilePattern.new('abc') } it 'match?' do - pattern.match?('abc').should be_true - pattern.match?('a').should be_false - pattern.match?('abcd').should be_false - pattern.match?('/abc').should be_false - pattern.match?('').should be_false - pattern.match?('/').should be_false + expect(pattern.match?('abc')).to be_truthy + expect(pattern.match?('a')).to be_falsey + expect(pattern.match?('abcd')).to be_falsey + expect(pattern.match?('/abc')).to be_falsey + expect(pattern.match?('')).to be_falsey + expect(pattern.match?('/')).to be_falsey end it 'exact_path' do - pattern.exact_path.should == 'abc' + expect(pattern.exact_path).to eq('abc') end it 'could_match_children?' do - pattern.could_match_children?('').should be_false - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/abc').should be_false + expect(pattern.could_match_children?('')).to be_falsey + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/abc')).to be_falsey end end context 'with simple pattern "/abc"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc') } it 'match?' do - pattern.match?('/abc').should be_true - pattern.match?('abc').should be_false - pattern.match?('a').should be_false - pattern.match?('abcd').should be_false - pattern.match?('').should be_false - pattern.match?('/').should be_false + expect(pattern.match?('/abc')).to be_truthy + expect(pattern.match?('abc')).to be_falsey + expect(pattern.match?('a')).to be_falsey + expect(pattern.match?('abcd')).to be_falsey + expect(pattern.match?('')).to be_falsey + expect(pattern.match?('/')).to be_falsey end it 'exact_path' do - pattern.exact_path.should == '/abc' + expect(pattern.exact_path).to eq('/abc') end it 'could_match_children?' do - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/abc').should be_false - pattern.could_match_children?('/').should be_true - pattern.could_match_children?('').should be_false + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/abc')).to be_falsey + expect(pattern.could_match_children?('/')).to be_truthy + expect(pattern.could_match_children?('')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' + expect(pattern.exact_child_name_under('/')).to eq('abc') end end context 'with simple pattern "abc/def/ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('abc/def/ghi') } it 'match?' do - pattern.match?('abc/def/ghi').should be_true - pattern.match?('/abc/def/ghi').should be_false - pattern.match?('abc').should be_false - pattern.match?('abc/def').should be_false + expect(pattern.match?('abc/def/ghi')).to be_truthy + expect(pattern.match?('/abc/def/ghi')).to be_falsey + expect(pattern.match?('abc')).to be_falsey + expect(pattern.match?('abc/def')).to be_falsey end it 'exact_path' do - pattern.exact_path.should == 'abc/def/ghi' + expect(pattern.exact_path).to eq('abc/def/ghi') end it 'could_match_children?' do - pattern.could_match_children?('abc').should be_true - pattern.could_match_children?('xyz').should be_false - pattern.could_match_children?('/abc').should be_false - pattern.could_match_children?('abc/def').should be_true - pattern.could_match_children?('abc/xyz').should be_false - pattern.could_match_children?('abc/def/ghi').should be_false + expect(pattern.could_match_children?('abc')).to be_truthy + expect(pattern.could_match_children?('xyz')).to be_falsey + expect(pattern.could_match_children?('/abc')).to be_falsey + expect(pattern.could_match_children?('abc/def')).to be_truthy + expect(pattern.could_match_children?('abc/xyz')).to be_falsey + expect(pattern.could_match_children?('abc/def/ghi')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('abc').should == 'def' - pattern.exact_child_name_under('abc/def').should == 'ghi' + expect(pattern.exact_child_name_under('abc')).to eq('def') + expect(pattern.exact_child_name_under('abc/def')).to eq('ghi') end end context 'with simple pattern "/abc/def/ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc/def/ghi') } it 'match?' do - pattern.match?('/abc/def/ghi').should be_true - pattern.match?('abc/def/ghi').should be_false - pattern.match?('/abc').should be_false - pattern.match?('/abc/def').should be_false + expect(pattern.match?('/abc/def/ghi')).to be_truthy + expect(pattern.match?('abc/def/ghi')).to be_falsey + expect(pattern.match?('/abc')).to be_falsey + expect(pattern.match?('/abc/def')).to be_falsey end it 'exact_path' do - pattern.exact_path.should == '/abc/def/ghi' + expect(pattern.exact_path).to eq('/abc/def/ghi') end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/xyz').should be_false - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/abc/def').should be_true - pattern.could_match_children?('/abc/xyz').should be_false - pattern.could_match_children?('/abc/def/ghi').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/xyz')).to be_falsey + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/abc/def')).to be_truthy + expect(pattern.could_match_children?('/abc/xyz')).to be_falsey + expect(pattern.could_match_children?('/abc/def/ghi')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' - pattern.exact_child_name_under('/abc').should == 'def' - pattern.exact_child_name_under('/abc/def').should == 'ghi' + expect(pattern.exact_child_name_under('/')).to eq('abc') + expect(pattern.exact_child_name_under('/abc')).to eq('def') + expect(pattern.exact_child_name_under('/abc/def')).to eq('ghi') end end context 'with simple pattern "a\*\b"', :pending => (Chef::Platform.windows?) do let(:pattern) { Chef::ChefFS::FilePattern.new('a\*\b') } it 'match?' do - pattern.match?('a*b').should be_true - pattern.match?('ab').should be_false - pattern.match?('acb').should be_false - pattern.match?('ab').should be_false + expect(pattern.match?('a*b')).to be_truthy + expect(pattern.match?('ab')).to be_falsey + expect(pattern.match?('acb')).to be_falsey + expect(pattern.match?('ab')).to be_falsey end it 'exact_path' do - pattern.exact_path.should == 'a*b' + expect(pattern.exact_path).to eq('a*b') end it 'could_match_children?' do - pattern.could_match_children?('a/*b').should be_false + expect(pattern.could_match_children?('a/*b')).to be_falsey end end context 'with star pattern "/abc/*/ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc/*/ghi') } it 'match?' do - pattern.match?('/abc/def/ghi').should be_true - pattern.match?('/abc/ghi').should be_false + expect(pattern.match?('/abc/def/ghi')).to be_truthy + expect(pattern.match?('/abc/ghi')).to be_falsey end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/xyz').should be_false - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/abc/def').should be_true - pattern.could_match_children?('/abc/xyz').should be_true - pattern.could_match_children?('/abc/def/ghi').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/xyz')).to be_falsey + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/abc/def')).to be_truthy + expect(pattern.could_match_children?('/abc/xyz')).to be_truthy + expect(pattern.could_match_children?('/abc/def/ghi')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' - pattern.exact_child_name_under('/abc').should == nil - pattern.exact_child_name_under('/abc/def').should == 'ghi' + expect(pattern.exact_child_name_under('/')).to eq('abc') + expect(pattern.exact_child_name_under('/abc')).to eq(nil) + expect(pattern.exact_child_name_under('/abc/def')).to eq('ghi') end end context 'with star pattern "/abc/d*f/ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc/d*f/ghi') } it 'match?' do - pattern.match?('/abc/def/ghi').should be_true - pattern.match?('/abc/dxf/ghi').should be_true - pattern.match?('/abc/df/ghi').should be_true - pattern.match?('/abc/dxyzf/ghi').should be_true - pattern.match?('/abc/d/ghi').should be_false - pattern.match?('/abc/f/ghi').should be_false - pattern.match?('/abc/ghi').should be_false - pattern.match?('/abc/xyz/ghi').should be_false + expect(pattern.match?('/abc/def/ghi')).to be_truthy + expect(pattern.match?('/abc/dxf/ghi')).to be_truthy + expect(pattern.match?('/abc/df/ghi')).to be_truthy + expect(pattern.match?('/abc/dxyzf/ghi')).to be_truthy + expect(pattern.match?('/abc/d/ghi')).to be_falsey + expect(pattern.match?('/abc/f/ghi')).to be_falsey + expect(pattern.match?('/abc/ghi')).to be_falsey + expect(pattern.match?('/abc/xyz/ghi')).to be_falsey end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/xyz').should be_false - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/abc/def').should be_true - pattern.could_match_children?('/abc/xyz').should be_false - pattern.could_match_children?('/abc/dxyzf').should be_true - pattern.could_match_children?('/abc/df').should be_true - pattern.could_match_children?('/abc/d').should be_false - pattern.could_match_children?('/abc/f').should be_false - pattern.could_match_children?('/abc/def/ghi').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/xyz')).to be_falsey + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/abc/def')).to be_truthy + expect(pattern.could_match_children?('/abc/xyz')).to be_falsey + expect(pattern.could_match_children?('/abc/dxyzf')).to be_truthy + expect(pattern.could_match_children?('/abc/df')).to be_truthy + expect(pattern.could_match_children?('/abc/d')).to be_falsey + expect(pattern.could_match_children?('/abc/f')).to be_falsey + expect(pattern.could_match_children?('/abc/def/ghi')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' - pattern.exact_child_name_under('/abc').should == nil - pattern.exact_child_name_under('/abc/def').should == 'ghi' + expect(pattern.exact_child_name_under('/')).to eq('abc') + expect(pattern.exact_child_name_under('/abc')).to eq(nil) + expect(pattern.exact_child_name_under('/abc/def')).to eq('ghi') end end context 'with star pattern "/abc/d??f/ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc/d??f/ghi') } it 'match?' do - pattern.match?('/abc/deef/ghi').should be_true - pattern.match?('/abc/deeef/ghi').should be_false - pattern.match?('/abc/def/ghi').should be_false - pattern.match?('/abc/df/ghi').should be_false - pattern.match?('/abc/d/ghi').should be_false - pattern.match?('/abc/f/ghi').should be_false - pattern.match?('/abc/ghi').should be_false + expect(pattern.match?('/abc/deef/ghi')).to be_truthy + expect(pattern.match?('/abc/deeef/ghi')).to be_falsey + expect(pattern.match?('/abc/def/ghi')).to be_falsey + expect(pattern.match?('/abc/df/ghi')).to be_falsey + expect(pattern.match?('/abc/d/ghi')).to be_falsey + expect(pattern.match?('/abc/f/ghi')).to be_falsey + expect(pattern.match?('/abc/ghi')).to be_falsey end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/xyz').should be_false - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/abc/deef').should be_true - pattern.could_match_children?('/abc/deeef').should be_false - pattern.could_match_children?('/abc/def').should be_false - pattern.could_match_children?('/abc/df').should be_false - pattern.could_match_children?('/abc/d').should be_false - pattern.could_match_children?('/abc/f').should be_false - pattern.could_match_children?('/abc/deef/ghi').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/xyz')).to be_falsey + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/abc/deef')).to be_truthy + expect(pattern.could_match_children?('/abc/deeef')).to be_falsey + expect(pattern.could_match_children?('/abc/def')).to be_falsey + expect(pattern.could_match_children?('/abc/df')).to be_falsey + expect(pattern.could_match_children?('/abc/d')).to be_falsey + expect(pattern.could_match_children?('/abc/f')).to be_falsey + expect(pattern.could_match_children?('/abc/deef/ghi')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' - pattern.exact_child_name_under('/abc').should == nil - pattern.exact_child_name_under('/abc/deef').should == 'ghi' + expect(pattern.exact_child_name_under('/')).to eq('abc') + expect(pattern.exact_child_name_under('/abc')).to eq(nil) + expect(pattern.exact_child_name_under('/abc/deef')).to eq('ghi') end end context 'with star pattern "/abc/d[a-z][0-9]f/ghi"', :pending => (Chef::Platform.windows?) do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc/d[a-z][0-9]f/ghi') } it 'match?' do - pattern.match?('/abc/de1f/ghi').should be_true - pattern.match?('/abc/deef/ghi').should be_false - pattern.match?('/abc/d11f/ghi').should be_false - pattern.match?('/abc/de11f/ghi').should be_false - pattern.match?('/abc/dee1f/ghi').should be_false - pattern.match?('/abc/df/ghi').should be_false - pattern.match?('/abc/d/ghi').should be_false - pattern.match?('/abc/f/ghi').should be_false - pattern.match?('/abc/ghi').should be_false + expect(pattern.match?('/abc/de1f/ghi')).to be_truthy + expect(pattern.match?('/abc/deef/ghi')).to be_falsey + expect(pattern.match?('/abc/d11f/ghi')).to be_falsey + expect(pattern.match?('/abc/de11f/ghi')).to be_falsey + expect(pattern.match?('/abc/dee1f/ghi')).to be_falsey + expect(pattern.match?('/abc/df/ghi')).to be_falsey + expect(pattern.match?('/abc/d/ghi')).to be_falsey + expect(pattern.match?('/abc/f/ghi')).to be_falsey + expect(pattern.match?('/abc/ghi')).to be_falsey end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/xyz').should be_false - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/abc/de1f').should be_true - pattern.could_match_children?('/abc/deef').should be_false - pattern.could_match_children?('/abc/d11f').should be_false - pattern.could_match_children?('/abc/de11f').should be_false - pattern.could_match_children?('/abc/dee1f').should be_false - pattern.could_match_children?('/abc/def').should be_false - pattern.could_match_children?('/abc/df').should be_false - pattern.could_match_children?('/abc/d').should be_false - pattern.could_match_children?('/abc/f').should be_false - pattern.could_match_children?('/abc/de1f/ghi').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/xyz')).to be_falsey + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/abc/de1f')).to be_truthy + expect(pattern.could_match_children?('/abc/deef')).to be_falsey + expect(pattern.could_match_children?('/abc/d11f')).to be_falsey + expect(pattern.could_match_children?('/abc/de11f')).to be_falsey + expect(pattern.could_match_children?('/abc/dee1f')).to be_falsey + expect(pattern.could_match_children?('/abc/def')).to be_falsey + expect(pattern.could_match_children?('/abc/df')).to be_falsey + expect(pattern.could_match_children?('/abc/d')).to be_falsey + expect(pattern.could_match_children?('/abc/f')).to be_falsey + expect(pattern.could_match_children?('/abc/de1f/ghi')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' - pattern.exact_child_name_under('/abc').should == nil - pattern.exact_child_name_under('/abc/de1f').should == 'ghi' + expect(pattern.exact_child_name_under('/')).to eq('abc') + expect(pattern.exact_child_name_under('/abc')).to eq(nil) + expect(pattern.exact_child_name_under('/abc/de1f')).to eq('ghi') end end context 'with star pattern "/abc/**/ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc/**/ghi') } it 'match?' do - pattern.match?('/abc/def/ghi').should be_true - pattern.match?('/abc/d/e/f/ghi').should be_true - pattern.match?('/abc/ghi').should be_false - pattern.match?('/abcdef/d/ghi').should be_false - pattern.match?('/abc/d/defghi').should be_false - pattern.match?('/xyz').should be_false + expect(pattern.match?('/abc/def/ghi')).to be_truthy + expect(pattern.match?('/abc/d/e/f/ghi')).to be_truthy + expect(pattern.match?('/abc/ghi')).to be_falsey + expect(pattern.match?('/abcdef/d/ghi')).to be_falsey + expect(pattern.match?('/abc/d/defghi')).to be_falsey + expect(pattern.match?('/xyz')).to be_falsey end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/abc/d').should be_true - pattern.could_match_children?('/abc/d/e').should be_true - pattern.could_match_children?('/abc/d/e/f').should be_true - pattern.could_match_children?('/abc/def/ghi').should be_true - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/xyz').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/abc/d')).to be_truthy + expect(pattern.could_match_children?('/abc/d/e')).to be_truthy + expect(pattern.could_match_children?('/abc/d/e/f')).to be_truthy + expect(pattern.could_match_children?('/abc/def/ghi')).to be_truthy + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/xyz')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' - pattern.exact_child_name_under('/abc').should == nil - pattern.exact_child_name_under('/abc/def').should == nil + expect(pattern.exact_child_name_under('/')).to eq('abc') + expect(pattern.exact_child_name_under('/abc')).to eq(nil) + expect(pattern.exact_child_name_under('/abc/def')).to eq(nil) end end context 'with star pattern "/abc**/ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc**/ghi') } it 'match?' do - pattern.match?('/abc/def/ghi').should be_true - pattern.match?('/abc/d/e/f/ghi').should be_true - pattern.match?('/abc/ghi').should be_true - pattern.match?('/abcdef/ghi').should be_true - pattern.match?('/abc/defghi').should be_false - pattern.match?('/xyz').should be_false + expect(pattern.match?('/abc/def/ghi')).to be_truthy + expect(pattern.match?('/abc/d/e/f/ghi')).to be_truthy + expect(pattern.match?('/abc/ghi')).to be_truthy + expect(pattern.match?('/abcdef/ghi')).to be_truthy + expect(pattern.match?('/abc/defghi')).to be_falsey + expect(pattern.match?('/xyz')).to be_falsey end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/abcdef').should be_true - pattern.could_match_children?('/abc/d/e').should be_true - pattern.could_match_children?('/abc/d/e/f').should be_true - pattern.could_match_children?('/abc/def/ghi').should be_true - pattern.could_match_children?('abc').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/abcdef')).to be_truthy + expect(pattern.could_match_children?('/abc/d/e')).to be_truthy + expect(pattern.could_match_children?('/abc/d/e/f')).to be_truthy + expect(pattern.could_match_children?('/abc/def/ghi')).to be_truthy + expect(pattern.could_match_children?('abc')).to be_falsey end it 'could_match_children? /abc** returns false for /xyz' do - pending 'Make could_match_children? more rigorous' do - # At the moment, we return false for this, but in the end it would be nice to return true: - pattern.could_match_children?('/xyz').should be_false - end + pending 'Make could_match_children? more rigorous' + # At the moment, we return false for this, but in the end it would be nice to return true: + pattern.could_match_children?('/xyz').should be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == nil - pattern.exact_child_name_under('/abc').should == nil - pattern.exact_child_name_under('/abc/def').should == nil + expect(pattern.exact_child_name_under('/')).to eq(nil) + expect(pattern.exact_child_name_under('/abc')).to eq(nil) + expect(pattern.exact_child_name_under('/abc/def')).to eq(nil) end end context 'with star pattern "/abc/**ghi"' do let(:pattern) { Chef::ChefFS::FilePattern.new('/abc/**ghi') } it 'match?' do - pattern.match?('/abc/def/ghi').should be_true - pattern.match?('/abc/def/ghi/ghi').should be_true - pattern.match?('/abc/def/ghi/jkl').should be_false - pattern.match?('/abc/d/e/f/ghi').should be_true - pattern.match?('/abc/ghi').should be_true - pattern.match?('/abcdef/ghi').should be_false - pattern.match?('/abc/defghi').should be_true - pattern.match?('/xyz').should be_false + expect(pattern.match?('/abc/def/ghi')).to be_truthy + expect(pattern.match?('/abc/def/ghi/ghi')).to be_truthy + expect(pattern.match?('/abc/def/ghi/jkl')).to be_falsey + expect(pattern.match?('/abc/d/e/f/ghi')).to be_truthy + expect(pattern.match?('/abc/ghi')).to be_truthy + expect(pattern.match?('/abcdef/ghi')).to be_falsey + expect(pattern.match?('/abc/defghi')).to be_truthy + expect(pattern.match?('/xyz')).to be_falsey end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end it 'could_match_children?' do - pattern.could_match_children?('/abc').should be_true - pattern.could_match_children?('/abcdef').should be_false - pattern.could_match_children?('/abc/d/e').should be_true - pattern.could_match_children?('/abc/d/e/f').should be_true - pattern.could_match_children?('/abc/def/ghi').should be_true - pattern.could_match_children?('abc').should be_false - pattern.could_match_children?('/xyz').should be_false + expect(pattern.could_match_children?('/abc')).to be_truthy + expect(pattern.could_match_children?('/abcdef')).to be_falsey + expect(pattern.could_match_children?('/abc/d/e')).to be_truthy + expect(pattern.could_match_children?('/abc/d/e/f')).to be_truthy + expect(pattern.could_match_children?('/abc/def/ghi')).to be_truthy + expect(pattern.could_match_children?('abc')).to be_falsey + expect(pattern.could_match_children?('/xyz')).to be_falsey end it 'exact_child_name_under' do - pattern.exact_child_name_under('/').should == 'abc' - pattern.exact_child_name_under('/abc').should == nil - pattern.exact_child_name_under('/abc/def').should == nil + expect(pattern.exact_child_name_under('/')).to eq('abc') + expect(pattern.exact_child_name_under('/abc')).to eq(nil) + expect(pattern.exact_child_name_under('/abc/def')).to eq(nil) end end context 'with star pattern "a**b**c"' do let(:pattern) { Chef::ChefFS::FilePattern.new('a**b**c') } it 'match?' do - pattern.match?('axybzwc').should be_true - pattern.match?('abc').should be_true - pattern.match?('axyzwc').should be_false - pattern.match?('ac').should be_false - pattern.match?('a/x/y/b/z/w/c').should be_true + expect(pattern.match?('axybzwc')).to be_truthy + expect(pattern.match?('abc')).to be_truthy + expect(pattern.match?('axyzwc')).to be_falsey + expect(pattern.match?('ac')).to be_falsey + expect(pattern.match?('a/x/y/b/z/w/c')).to be_truthy end it 'exact_path' do - pattern.exact_path.should be_nil + expect(pattern.exact_path).to be_nil end end context 'normalization tests' do it 'handles trailing slashes' do - p('abc/').normalized_pattern.should == 'abc' - p('abc/').exact_path.should == 'abc' - p('abc/').match?('abc').should be_true - p('//').normalized_pattern.should == '/' - p('//').exact_path.should == '/' - p('//').match?('/').should be_true - p('/./').normalized_pattern.should == '/' - p('/./').exact_path.should == '/' - p('/./').match?('/').should be_true + expect(p('abc/').normalized_pattern).to eq('abc') + expect(p('abc/').exact_path).to eq('abc') + expect(p('abc/').match?('abc')).to be_truthy + expect(p('//').normalized_pattern).to eq('/') + expect(p('//').exact_path).to eq('/') + expect(p('//').match?('/')).to be_truthy + expect(p('/./').normalized_pattern).to eq('/') + expect(p('/./').exact_path).to eq('/') + expect(p('/./').match?('/')).to be_truthy end it 'handles multiple slashes' do - p('abc//def').normalized_pattern.should == 'abc/def' - p('abc//def').exact_path.should == 'abc/def' - p('abc//def').match?('abc/def').should be_true - p('abc//').normalized_pattern.should == 'abc' - p('abc//').exact_path.should == 'abc' - p('abc//').match?('abc').should be_true + expect(p('abc//def').normalized_pattern).to eq('abc/def') + expect(p('abc//def').exact_path).to eq('abc/def') + expect(p('abc//def').match?('abc/def')).to be_truthy + expect(p('abc//').normalized_pattern).to eq('abc') + expect(p('abc//').exact_path).to eq('abc') + expect(p('abc//').match?('abc')).to be_truthy end it 'handles dot' do - p('abc/./def').normalized_pattern.should == 'abc/def' - p('abc/./def').exact_path.should == 'abc/def' - p('abc/./def').match?('abc/def').should be_true - p('./abc/def').normalized_pattern.should == 'abc/def' - p('./abc/def').exact_path.should == 'abc/def' - p('./abc/def').match?('abc/def').should be_true - p('/.').normalized_pattern.should == '/' - p('/.').exact_path.should == '/' - p('/.').match?('/').should be_true + expect(p('abc/./def').normalized_pattern).to eq('abc/def') + expect(p('abc/./def').exact_path).to eq('abc/def') + expect(p('abc/./def').match?('abc/def')).to be_truthy + expect(p('./abc/def').normalized_pattern).to eq('abc/def') + expect(p('./abc/def').exact_path).to eq('abc/def') + expect(p('./abc/def').match?('abc/def')).to be_truthy + expect(p('/.').normalized_pattern).to eq('/') + expect(p('/.').exact_path).to eq('/') + expect(p('/.').match?('/')).to be_truthy end it 'handles dot by itself', :pending => "decide what to do with dot by itself" do - p('.').normalized_pattern.should == '.' - p('.').exact_path.should == '.' - p('.').match?('.').should be_true - p('./').normalized_pattern.should == '.' - p('./').exact_path.should == '.' - p('./').match?('.').should be_true + expect(p('.').normalized_pattern).to eq('.') + expect(p('.').exact_path).to eq('.') + expect(p('.').match?('.')).to be_truthy + expect(p('./').normalized_pattern).to eq('.') + expect(p('./').exact_path).to eq('.') + expect(p('./').match?('.')).to be_truthy end it 'handles dotdot' do - p('abc/../def').normalized_pattern.should == 'def' - p('abc/../def').exact_path.should == 'def' - p('abc/../def').match?('def').should be_true - p('abc/def/../..').normalized_pattern.should == '' - p('abc/def/../..').exact_path.should == '' - p('abc/def/../..').match?('').should be_true - p('/*/../def').normalized_pattern.should == '/def' - p('/*/../def').exact_path.should == '/def' - p('/*/../def').match?('/def').should be_true - p('/*/*/../def').normalized_pattern.should == '/*/def' - p('/*/*/../def').exact_path.should be_nil - p('/*/*/../def').match?('/abc/def').should be_true - p('/abc/def/../..').normalized_pattern.should == '/' - p('/abc/def/../..').exact_path.should == '/' - p('/abc/def/../..').match?('/').should be_true - p('abc/../../def').normalized_pattern.should == '../def' - p('abc/../../def').exact_path.should == '../def' - p('abc/../../def').match?('../def').should be_true + expect(p('abc/../def').normalized_pattern).to eq('def') + expect(p('abc/../def').exact_path).to eq('def') + expect(p('abc/../def').match?('def')).to be_truthy + expect(p('abc/def/../..').normalized_pattern).to eq('') + expect(p('abc/def/../..').exact_path).to eq('') + expect(p('abc/def/../..').match?('')).to be_truthy + expect(p('/*/../def').normalized_pattern).to eq('/def') + expect(p('/*/../def').exact_path).to eq('/def') + expect(p('/*/../def').match?('/def')).to be_truthy + expect(p('/*/*/../def').normalized_pattern).to eq('/*/def') + expect(p('/*/*/../def').exact_path).to be_nil + expect(p('/*/*/../def').match?('/abc/def')).to be_truthy + expect(p('/abc/def/../..').normalized_pattern).to eq('/') + expect(p('/abc/def/../..').exact_path).to eq('/') + expect(p('/abc/def/../..').match?('/')).to be_truthy + expect(p('abc/../../def').normalized_pattern).to eq('../def') + expect(p('abc/../../def').exact_path).to eq('../def') + expect(p('abc/../../def').match?('../def')).to be_truthy end it 'handles dotdot with double star' do - p('abc**/def/../ghi').exact_path.should be_nil - p('abc**/def/../ghi').match?('abc/ghi').should be_true - p('abc**/def/../ghi').match?('abc/x/y/z/ghi').should be_true - p('abc**/def/../ghi').match?('ghi').should be_false + expect(p('abc**/def/../ghi').exact_path).to be_nil + expect(p('abc**/def/../ghi').match?('abc/ghi')).to be_truthy + expect(p('abc**/def/../ghi').match?('abc/x/y/z/ghi')).to be_truthy + expect(p('abc**/def/../ghi').match?('ghi')).to be_falsey end it 'raises error on dotdot with overlapping double star' do - lambda { Chef::ChefFS::FilePattern.new('abc/**/../def').exact_path }.should raise_error(ArgumentError) - lambda { Chef::ChefFS::FilePattern.new('abc/**/abc/../../def').exact_path }.should raise_error(ArgumentError) + expect { Chef::ChefFS::FilePattern.new('abc/**/../def').exact_path }.to raise_error(ArgumentError) + expect { Chef::ChefFS::FilePattern.new('abc/**/abc/../../def').exact_path }.to raise_error(ArgumentError) end it 'handles leading dotdot' do - p('../abc/def').exact_path.should == '../abc/def' - p('../abc/def').match?('../abc/def').should be_true - p('/../abc/def').exact_path.should == '/abc/def' - p('/../abc/def').match?('/abc/def').should be_true - p('..').exact_path.should == '..' - p('..').match?('..').should be_true - p('/..').exact_path.should == '/' - p('/..').match?('/').should be_true + expect(p('../abc/def').exact_path).to eq('../abc/def') + expect(p('../abc/def').match?('../abc/def')).to be_truthy + expect(p('/../abc/def').exact_path).to eq('/abc/def') + expect(p('/../abc/def').match?('/abc/def')).to be_truthy + expect(p('..').exact_path).to eq('..') + expect(p('..').match?('..')).to be_truthy + expect(p('/..').exact_path).to eq('/') + expect(p('/..').match?('/')).to be_truthy end end |