Commit 73d2c7a5 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Add new methods to StringPath

parent f5d53086
......@@ -7,11 +7,17 @@ module Gitlab
#
#
class StringPath
attr_reader :path, :universe
def initialize(path, universe)
@path = path
@universe = universe
end
def to_s
@path
end
def absolute?
@path.start_with?('/')
end
......@@ -28,8 +34,17 @@ module Gitlab
!directory?
end
def to_s
@path
def files
raise NotImplementedError
end
def basename
name = @path.split(::File::SEPARATOR).last
directory? ? name + ::File::SEPARATOR : name
end
def ==(other)
@path == other.path && @universe == other.universe
end
end
end
......@@ -2,8 +2,10 @@ require 'spec_helper'
describe Gitlab::StringPath do
let(:universe) do
['path/dir_1/',
['path/',
'path/dir_1/',
'path/dir_1/file_1',
'path/dir_1/file_b',
'path/second_dir',
'path/second_dir/dir_3/file_2',
'path/second_dir/dir_3/file_3',
......@@ -17,5 +19,34 @@ describe Gitlab::StringPath do
it { is_expected.to be_absolute }
it { is_expected.to_not be_relative }
it { is_expected.to be_file }
describe '#basename' do
subject { described_class.new('/file/with/absolute_path', universe).basename }
it { is_expected.to eq 'absolute_path' }
end
end
describe 'path/' do
subject { described_class.new('path/', universe) }
it { is_expected.to be_directory }
it { is_expected.to be_relative }
end
describe 'path/dir_1/' do
describe '#files' do
subject { described_class.new('path/dir_1/', universe).files }
pending { is_expected.to all(be_an_instance_of described_class) }
pending { is_expected.to be eq [Gitlab::StringPath.new('path/dir_1/file_1', universe),
Gitlab::StringPath.new('path/dir_1/file_b', universe)] }
end
describe '#basename' do
subject { described_class.new('path/dir_1/', universe).basename }
it { is_expected.to eq 'dir_1/' }
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment