build-files 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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