mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-14 15:16:04 +10:00
Add new methods to StringPath
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user