build-files 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3bd958e529392040e6aac99f38f64577f5c6111
4
- data.tar.gz: 88625275cbbf480497d35b00abe21ece2800a722
3
+ metadata.gz: 5a59583c2fd0e5a52a7049d0e709ae3e50cfeb4d
4
+ data.tar.gz: c59a6c774e10e2cf53765ee02dda6f79394792d9
5
5
  SHA512:
6
- metadata.gz: ea2dda41b31f7649532cb32f20e16ddb5d7d938032f44a11227a9fe1c9e2c5cce0f30cbaa6c59be65cd0a126a253eb0086fcaa06255ca6cc44fe380524143625
7
- data.tar.gz: 5f388d6984509dca9e82be714bbd149661e21a6e3296ba93fa74b83dc863228b543521a95b9cf04f59e2f2236e4fa67d273420a031271f0feb7f4a69236dc4b8
6
+ metadata.gz: 0b8f1df86d30a44caa6c4192bc5443a660e2e9b98e81341690c675b0f6eab0ab75d26ae94ee90e5184b3c5fb6121b499a841973293c78dee54eca745be70890b
7
+ data.tar.gz: b06d12304725fd2327374cc27cc26dc1d390b2561400ef1fe049438dd35928d91a9c33a3e142410a56ecd689ecaa18dc1dfc26213a4b39e7d91a538640536b18
@@ -36,7 +36,7 @@ module Build
36
36
  end
37
37
  end
38
38
 
39
- # Return the shortest relative path to get to path from root:
39
+ # Return the shortest relative path to get to path from root. Root should be a directory with which you are computing the relative path.
40
40
  def self.shortest_path(path, root)
41
41
  path_components = Path.components(path)
42
42
  root_components = Path.components(root)
@@ -95,10 +95,14 @@ module Build
95
95
  self.parts.last
96
96
  end
97
97
 
98
+ def start_with?(*args)
99
+ @full_path.start_with?(*args)
100
+ end
101
+
98
102
  alias parts components
99
103
 
100
104
  def relative_path
101
- @relative_path ||= Path.relative_path(@root.to_s, @full_path)
105
+ @relative_path ||= Path.relative_path(@root.to_s, @full_path).freeze
102
106
  end
103
107
 
104
108
  def relative_parts
@@ -135,6 +139,15 @@ module Build
135
139
  self.new(File.join(root, relative_path), root)
136
140
  end
137
141
 
142
+ # Expand a subpath within a given root, similar to `File.expand_path`
143
+ def self.expand(subpath, root = Dir.getwd)
144
+ if subpath.start_with? File::SEPARATOR
145
+ self.new(subpath)
146
+ else
147
+ self.join(root, subpath)
148
+ end
149
+ end
150
+
138
151
  def shortest_path(root)
139
152
  self.class.shortest_path(self, root)
140
153
  end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Build
22
22
  module Files
23
- VERSION = "1.0.3"
23
+ VERSION = "1.0.4"
24
24
  end
25
25
  end
@@ -27,65 +27,79 @@ module Build::Files::PathSpec
27
27
  include Build::Files
28
28
 
29
29
  describe Build::Files::Path do
30
- let(:path) {Path.new("/foo/bar/baz", "/foo")}
30
+ it "should expand the path" do
31
+ expect(Build::Files::Path.expand("foo", "/bar")).to be == "/bar/foo"
32
+ end
33
+ end
34
+
35
+ describe Build::Files::Path.new("/test") do
36
+ it "should start_with? full path" do
37
+ expect(subject).to be_start_with '/test'
38
+ end
31
39
 
40
+ it "should start_with? partial pattern" do
41
+ expect(subject).to be_start_with '/te'
42
+ end
43
+ end
44
+
45
+ describe Build::Files::Path.new("/foo/bar/baz", "/foo") do
32
46
  it "should be inspectable" do
33
- expect(path.inspect).to be_include path.root.to_s
34
- expect(path.inspect).to be_include path.relative_path.to_s
47
+ expect(subject.inspect).to be_include subject.root.to_s
48
+ expect(subject.inspect).to be_include subject.relative_path.to_s
35
49
  end
36
50
 
37
51
  it "should convert to path" do
38
52
  pathname = Pathname("/foo/bar/baz")
39
53
 
40
- expect(Path[pathname]).to be == path
41
- expect(Path["/foo/bar/baz"]).to be == path
54
+ expect(Path[pathname]).to be == subject
55
+ expect(Path["/foo/bar/baz"]).to be == subject
42
56
  end
43
57
 
44
58
  it "should be equal" do
45
- expect(path).to be_eql path
46
- expect(path).to be == path
59
+ expect(subject).to be_eql subject
60
+ expect(subject).to be == subject
47
61
 
48
62
  different_root_path = Path.join("/foo/bar", "baz")
49
- expect(path).to_not be_eql different_root_path
50
- expect(path).to be == different_root_path
63
+ expect(subject).to_not be_eql different_root_path
64
+ expect(subject).to be == different_root_path
51
65
  end
52
66
 
53
67
  it "should convert to string" do
54
- expect(path.to_s).to be == "/foo/bar/baz"
68
+ expect(subject.to_s).to be == "/foo/bar/baz"
55
69
 
56
70
  # The to_str method should return the full path (i.e. the same as to_s):
57
- expect(path.to_s).to be == path.to_str
71
+ expect(subject.to_s).to be == subject.to_str
58
72
 
59
73
  # Check the equality operator:
60
- expect(path).to be == path.dup
74
+ expect(subject).to be == subject.dup
61
75
 
62
76
  # The length should be reported correctly:
63
- expect(path.length).to be == path.to_s.length
77
+ expect(subject.length).to be == subject.to_s.length
64
78
 
65
79
  # Check the return types:
66
- expect(path).to be_kind_of Path
67
- expect(path.root).to be_kind_of String
68
- expect(path.relative_path).to be_kind_of String
80
+ expect(subject).to be_kind_of Path
81
+ expect(subject.root).to be_kind_of String
82
+ expect(subject.relative_path).to be_kind_of String
69
83
  end
70
84
 
71
85
  it "should consist of parts" do
72
- expect(path.parts).to be == ["", "foo", "bar", "baz"]
86
+ expect(subject.parts).to be == ["", "foo", "bar", "baz"]
73
87
 
74
- expect(path.root).to be == "/foo"
88
+ expect(subject.root).to be == "/foo"
75
89
 
76
- expect(path.relative_path).to be == "bar/baz"
90
+ expect(subject.relative_path).to be == "bar/baz"
77
91
 
78
- expect(path.relative_parts).to be == ["bar", "baz"]
92
+ expect(subject.relative_parts).to be == ["bar", "baz"]
79
93
  end
80
94
 
81
95
  it "should have a new extension" do
82
- renamed_path = path.with(root: '/tmp', extension: '.txt')
96
+ renamed_path = subject.with(root: '/tmp', extension: '.txt')
83
97
 
84
98
  expect(renamed_path.root).to be == '/tmp'
85
99
 
86
100
  expect(renamed_path.relative_path).to be == 'bar/baz.txt'
87
101
 
88
- object_path = path.append(".o")
102
+ object_path = subject.append(".o")
89
103
 
90
104
  expect(object_path.root).to be == "/foo"
91
105
  expect(object_path.relative_path).to be == "bar/baz.o"
@@ -120,37 +134,37 @@ module Build::Files::PathSpec
120
134
  end
121
135
 
122
136
  it "should append a path" do
123
- path = Path.new("/a/b/c")
137
+ subject = Path.new("/a/b/c")
124
138
 
125
- expect(path + "d/e/f").to be == "/a/b/c/d/e/f"
139
+ expect(subject + "d/e/f").to be == "/a/b/c/d/e/f"
126
140
  end
127
141
 
128
142
  it "should give a list of components" do
129
- expect(Path.components(path)).to be == ["", "foo", "bar", "baz"]
130
- expect(Path.components(path.to_s)).to be == ["", "foo", "bar", "baz"]
143
+ expect(Path.components(subject)).to be == ["", "foo", "bar", "baz"]
144
+ expect(Path.components(subject.to_s)).to be == ["", "foo", "bar", "baz"]
131
145
  end
132
146
 
133
147
  it "should give a basename" do
134
- expect(path.basename).to be == "baz"
148
+ expect(subject.basename).to be == "baz"
135
149
  end
136
150
 
137
151
  it "should have a new root" do
138
- rerooted_path = path / "cat"
152
+ rerooted_path = subject / "cat"
139
153
 
140
154
  expect(rerooted_path.root).to be == "/foo/bar/baz"
141
155
  expect(rerooted_path.relative_path).to be == "cat"
142
156
  end
143
157
 
144
158
  it "should give correct modes for reading" do
145
- expect(path.for_reading).to be == [path.to_s, File::RDONLY]
159
+ expect(subject.for_reading).to be == [subject.to_s, File::RDONLY]
146
160
  end
147
161
 
148
162
  it "should give correct modes for writing" do
149
- expect(path.for_writing).to be == [path.to_s, File::CREAT|File::TRUNC|File::WRONLY]
163
+ expect(subject.for_writing).to be == [subject.to_s, File::CREAT|File::TRUNC|File::WRONLY]
150
164
  end
151
165
 
152
166
  it "should give correct modes for appending" do
153
- expect(path.for_appending).to be == [path.to_s, File::CREAT|File::APPEND|File::WRONLY]
167
+ expect(subject.for_appending).to be == [subject.to_s, File::CREAT|File::APPEND|File::WRONLY]
154
168
  end
155
169
  end
156
170
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build-files
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-19 00:00:00.000000000 Z
11
+ date: 2016-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  requirements: []
105
105
  rubyforge_project:
106
- rubygems_version: 2.2.2
106
+ rubygems_version: 2.5.1
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Build::Files is a set of idiomatic classes for dealing with paths and monitoring