r-train 0.10.3 → 0.10.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 +4 -4
- data/CHANGELOG.md +10 -2
- data/lib/train/extras/file_windows.rb +9 -1
- data/lib/train/version.rb +1 -1
- data/test/unit/extras/windows_file_test.rb +15 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d69879f6efb3b134ed37106668927425fa61faf
|
4
|
+
data.tar.gz: 0d6b28c005b416325c844cb5c6fe0951ef295a45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7835e5f36f0bc6775b72fee8de73342868d4e6dc6a6a17d52456c6b3f310a3c296e87c0a5d57e74be2c18522ed7a70a3d7e82356bc878b85b7b61c12e5555b6d
|
7
|
+
data.tar.gz: 09f2f66a0ce30ddc229640e8ae2a1c0c293317d8e6756a5486c2607eb2677355bc6105e9b5c887b7ce5b7827996e1994504fc76d3936e5058d0eeb3a28fe324b
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [0.10.
|
4
|
-
[Full Changelog](https://github.com/chef/train/compare/v0.10.
|
3
|
+
## [0.10.4](https://github.com/chef/train/tree/0.10.4) (2016-03-31)
|
4
|
+
[Full Changelog](https://github.com/chef/train/compare/v0.10.3...0.10.4)
|
5
|
+
|
6
|
+
**Fixed bugs:**
|
7
|
+
|
8
|
+
- bugfix: do not use unix path escape for windows [\#79](https://github.com/chef/train/pull/79) ([chris-rock](https://github.com/chris-rock))
|
9
|
+
|
10
|
+
## [v0.10.3](https://github.com/chef/train/tree/v0.10.3) (2016-03-07)
|
11
|
+
[Full Changelog](https://github.com/chef/train/compare/v0.10.1...v0.10.3)
|
5
12
|
|
6
13
|
**Fixed bugs:**
|
7
14
|
|
@@ -10,6 +17,7 @@
|
|
10
17
|
|
11
18
|
**Merged pull requests:**
|
12
19
|
|
20
|
+
- 0.10.3 [\#78](https://github.com/chef/train/pull/78) ([chris-rock](https://github.com/chris-rock))
|
13
21
|
- 0.10.2 [\#76](https://github.com/chef/train/pull/76) ([arlimus](https://github.com/arlimus))
|
14
22
|
|
15
23
|
## [v0.10.1](https://github.com/chef/train/tree/v0.10.1) (2016-02-29)
|
@@ -14,13 +14,21 @@ module Train::Extras
|
|
14
14
|
def initialize(backend, path)
|
15
15
|
@backend = backend
|
16
16
|
@path = path
|
17
|
-
@spath =
|
17
|
+
@spath = sanitize_filename(@path)
|
18
18
|
end
|
19
19
|
|
20
20
|
def basename(suffix = nil, sep = '\\')
|
21
21
|
super(suffix, sep)
|
22
22
|
end
|
23
23
|
|
24
|
+
# Ensures we do not use invalid characters for file names
|
25
|
+
# @see https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#naming_conventions
|
26
|
+
def sanitize_filename(filename)
|
27
|
+
return if filename.nil?
|
28
|
+
# we do not filter :, backslash and forward slash, since they are part of the path
|
29
|
+
filename.gsub(/[<>"|?*]/, '')
|
30
|
+
end
|
31
|
+
|
24
32
|
def content
|
25
33
|
return @content if defined?(@content)
|
26
34
|
@content = @backend.run_command(
|
data/lib/train/version.rb
CHANGED
@@ -19,11 +19,26 @@ describe 'file common' do
|
|
19
19
|
cls.new(backend, 'C:\dir\file').basename.must_equal 'file'
|
20
20
|
end
|
21
21
|
|
22
|
+
it 'provides the full path with whitespace' do
|
23
|
+
wf = cls.new(backend, 'C:\Program Files\file name')
|
24
|
+
wf.path.must_equal 'C:\Program Files\file name'
|
25
|
+
wf.basename.must_equal 'file name'
|
26
|
+
end
|
27
|
+
|
22
28
|
it 'reads file contents' do
|
23
29
|
out = rand.to_s
|
24
30
|
backend.mock_command('Get-Content("path") | Out-String', out)
|
25
31
|
cls.new(backend, 'path').content.must_equal out
|
26
32
|
end
|
27
33
|
|
34
|
+
it 'check escaping of invalid chars in path' do
|
35
|
+
wf = cls.new(nil, nil)
|
36
|
+
wf.sanitize_filename('c:/test') .must_equal 'c:/test'
|
37
|
+
wf.sanitize_filename('c:/test directory') .must_equal 'c:/test directory'
|
38
|
+
%w{ < > " * ?}.each do |char|
|
39
|
+
wf.sanitize_filename("c:/test#{char}directory") .must_equal 'c:/testdirectory'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
28
43
|
# TODO: add all missing file tests!!
|
29
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r-train
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominik Richter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -238,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
238
238
|
version: '0'
|
239
239
|
requirements: []
|
240
240
|
rubyforge_project:
|
241
|
-
rubygems_version: 2.
|
241
|
+
rubygems_version: 2.5.1
|
242
242
|
signing_key:
|
243
243
|
specification_version: 4
|
244
244
|
summary: Transport interface to talk to different backends.
|