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

Add new methods to StringPath

parent f5d53086
...@@ -7,11 +7,17 @@ module Gitlab ...@@ -7,11 +7,17 @@ module Gitlab
# #
# #
class StringPath class StringPath
attr_reader :path, :universe
def initialize(path, universe) def initialize(path, universe)
@path = path @path = path
@universe = universe @universe = universe
end end
def to_s
@path
end
def absolute? def absolute?
@path.start_with?('/') @path.start_with?('/')
end end
...@@ -28,8 +34,17 @@ module Gitlab ...@@ -28,8 +34,17 @@ module Gitlab
!directory? !directory?
end end
def to_s def files
@path 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 end
end end
...@@ -2,8 +2,10 @@ require 'spec_helper' ...@@ -2,8 +2,10 @@ require 'spec_helper'
describe Gitlab::StringPath do describe Gitlab::StringPath do
let(:universe) do let(:universe) do
['path/dir_1/', ['path/',
'path/dir_1/',
'path/dir_1/file_1', 'path/dir_1/file_1',
'path/dir_1/file_b',
'path/second_dir', 'path/second_dir',
'path/second_dir/dir_3/file_2', 'path/second_dir/dir_3/file_2',
'path/second_dir/dir_3/file_3', 'path/second_dir/dir_3/file_3',
...@@ -17,5 +19,34 @@ describe Gitlab::StringPath do ...@@ -17,5 +19,34 @@ describe Gitlab::StringPath do
it { is_expected.to be_absolute } it { is_expected.to be_absolute }
it { is_expected.to_not be_relative } it { is_expected.to_not be_relative }
it { is_expected.to be_file } 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
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