train 1.5.11 → 1.6.3

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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/lib/train/transports/winrm.rb +16 -4
  3. data/lib/train/version.rb +1 -1
  4. metadata +3 -165
  5. data/.rubocop.yml +0 -77
  6. data/CHANGELOG.md +0 -900
  7. data/Gemfile +0 -41
  8. data/README.md +0 -212
  9. data/Rakefile +0 -73
  10. data/test/fixtures/plugins/train-test-fixture/LICENSE +0 -201
  11. data/test/fixtures/plugins/train-test-fixture/README.md +0 -5
  12. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/connection.rb +0 -35
  13. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/platform.rb +0 -18
  14. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/transport.rb +0 -14
  15. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/version.rb +0 -5
  16. data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture.rb +0 -4
  17. data/test/fixtures/plugins/train-test-fixture/pkg/train-test-fixture-0.1.0.gem +0 -0
  18. data/test/fixtures/plugins/train-test-fixture/train-test-fixture.gemspec +0 -35
  19. data/test/integration/.kitchen.yml +0 -43
  20. data/test/integration/Berksfile +0 -3
  21. data/test/integration/bootstrap.sh +0 -22
  22. data/test/integration/chefignore +0 -1
  23. data/test/integration/cookbooks/test/metadata.rb +0 -1
  24. data/test/integration/cookbooks/test/recipes/default.rb +0 -100
  25. data/test/integration/cookbooks/test/recipes/prep_files.rb +0 -56
  26. data/test/integration/docker_run.rb +0 -153
  27. data/test/integration/docker_test.rb +0 -24
  28. data/test/integration/docker_test_container.rb +0 -24
  29. data/test/integration/helper.rb +0 -61
  30. data/test/integration/sudo/customcommand.rb +0 -15
  31. data/test/integration/sudo/nopasswd.rb +0 -16
  32. data/test/integration/sudo/passwd.rb +0 -21
  33. data/test/integration/sudo/reqtty.rb +0 -17
  34. data/test/integration/sudo/run_as.rb +0 -12
  35. data/test/integration/test-travis-centos.yml +0 -6
  36. data/test/integration/test-travis-debian.yml +0 -6
  37. data/test/integration/test-travis-fedora.yml +0 -8
  38. data/test/integration/test-travis-oel.yml +0 -6
  39. data/test/integration/test-travis-ubuntu.yml +0 -8
  40. data/test/integration/test_local.rb +0 -19
  41. data/test/integration/test_ssh.rb +0 -39
  42. data/test/integration/tests/path_block_device_test.rb +0 -74
  43. data/test/integration/tests/path_character_device_test.rb +0 -74
  44. data/test/integration/tests/path_file_test.rb +0 -99
  45. data/test/integration/tests/path_folder_test.rb +0 -90
  46. data/test/integration/tests/path_missing_test.rb +0 -76
  47. data/test/integration/tests/path_pipe_test.rb +0 -62
  48. data/test/integration/tests/path_symlink_test.rb +0 -95
  49. data/test/integration/tests/run_command_test.rb +0 -35
  50. data/test/unit/extras/command_wrapper_test.rb +0 -110
  51. data/test/unit/extras/stat_test.rb +0 -210
  52. data/test/unit/file/local/unix_test.rb +0 -224
  53. data/test/unit/file/local/windows_test.rb +0 -101
  54. data/test/unit/file/local_test.rb +0 -121
  55. data/test/unit/file/remote/aix_test.rb +0 -81
  56. data/test/unit/file/remote/linux_test.rb +0 -221
  57. data/test/unit/file/remote/qnx_test.rb +0 -80
  58. data/test/unit/file/remote/unix_test.rb +0 -119
  59. data/test/unit/file/remote/windows_test.rb +0 -72
  60. data/test/unit/file/remote_test.rb +0 -62
  61. data/test/unit/file_test.rb +0 -129
  62. data/test/unit/helper.rb +0 -7
  63. data/test/unit/platforms/detect/os_common_test.rb +0 -85
  64. data/test/unit/platforms/detect/os_linux_test.rb +0 -132
  65. data/test/unit/platforms/detect/os_windows_test.rb +0 -107
  66. data/test/unit/platforms/detect/scanner_test.rb +0 -61
  67. data/test/unit/platforms/detect/uuid_test.rb +0 -133
  68. data/test/unit/platforms/family_test.rb +0 -32
  69. data/test/unit/platforms/os_detect_test.rb +0 -249
  70. data/test/unit/platforms/platform_test.rb +0 -405
  71. data/test/unit/platforms/platforms_test.rb +0 -52
  72. data/test/unit/plugins/connection_test.rb +0 -219
  73. data/test/unit/plugins/transport_test.rb +0 -111
  74. data/test/unit/plugins_test.rb +0 -22
  75. data/test/unit/train_test.rb +0 -247
  76. data/test/unit/transports/aws_test.rb +0 -120
  77. data/test/unit/transports/azure_test.rb +0 -145
  78. data/test/unit/transports/cisco_ios_connection.rb +0 -92
  79. data/test/unit/transports/gcp_test.rb +0 -266
  80. data/test/unit/transports/helpers/azure/file_credentials_test.rb +0 -129
  81. data/test/unit/transports/local_test.rb +0 -183
  82. data/test/unit/transports/mock_test.rb +0 -150
  83. data/test/unit/transports/ssh_test.rb +0 -330
  84. data/test/unit/transports/vmware_test.rb +0 -159
  85. data/test/unit/version_test.rb +0 -8
  86. data/test/windows/local_test.rb +0 -243
  87. data/test/windows/winrm_test.rb +0 -187
  88. data/train.gemspec +0 -45
@@ -1,62 +0,0 @@
1
- require 'helper'
2
- require 'train/file/remote'
3
-
4
- describe Train::File::Remote do
5
- let(:cls) { Train::File::Remote }
6
-
7
- def mockup(stubs)
8
- Class.new(cls) do
9
- stubs.each do |k,v|
10
- define_method k.to_sym do
11
- v
12
- end
13
- end
14
- end.new(nil, nil, false)
15
- end
16
-
17
- describe 'basename helper' do
18
- def fc(path)
19
- mockup(type: :file, path: path)
20
- end
21
-
22
- it 'works with an empty path' do
23
- fc('').basename.must_equal ''
24
- end
25
-
26
- it 'separates a simple path (defaults to unix mode)' do
27
- fc('/dir/file').basename.must_equal 'file'
28
- end
29
-
30
- it 'separates a simple path (Unix mode)' do
31
- fc('/dir/file').basename(nil, '/').must_equal 'file'
32
- end
33
-
34
- it 'separates a simple path (Windows mode)' do
35
- fc('C:\dir\file').basename(nil, '\\').must_equal 'file'
36
- end
37
-
38
- it 'identifies a folder name (Unix mode)' do
39
- fc('/dir/file/').basename(nil, '/').must_equal 'file'
40
- end
41
-
42
- it 'identifies a folder name (Windows mode)' do
43
- fc('C:\dir\file\\').basename(nil, '\\').must_equal 'file'
44
- end
45
-
46
- it 'ignores tailing separators (Unix mode)' do
47
- fc('/dir/file///').basename(nil, '/').must_equal 'file'
48
- end
49
-
50
- it 'ignores tailing separators (Windows mode)' do
51
- fc('C:\dir\file\\\\\\').basename(nil, '\\').must_equal 'file'
52
- end
53
-
54
- it 'doesnt work with backward slashes (Unix mode)' do
55
- fc('C:\dir\file').basename(nil, '/').must_equal 'C:\\dir\file'
56
- end
57
-
58
- it 'doesnt work with forward slashes (Windows mode)' do
59
- fc('/dir/file').basename(nil, '\\').must_equal '/dir/file'
60
- end
61
- end
62
- end
@@ -1,129 +0,0 @@
1
- require 'helper'
2
-
3
- describe Train::File do
4
- let(:cls) { Train::File }
5
- let(:new_cls) { cls.new(nil, '/temp/file', false) }
6
-
7
- def mockup(stubs)
8
- Class.new(cls) do
9
- stubs.each do |k,v|
10
- define_method k.to_sym do
11
- v
12
- end
13
- end
14
- end.new(nil, nil, false)
15
- end
16
-
17
- it 'has the default type of unknown' do
18
- new_cls.type.must_equal :unknown
19
- end
20
-
21
- it 'throws Not implemented error for exist?' do
22
- # proc { Train.validate_backend({ host: rand }) }.must_raise Train::UserError
23
- proc { new_cls.exist?}.must_raise NotImplementedError
24
- end
25
-
26
- it 'throws Not implemented error for mode' do
27
- proc { new_cls.mode }.must_raise NotImplementedError
28
- end
29
-
30
- it 'throws Not implemented error for owner' do
31
- proc { new_cls.owner }.must_raise NotImplementedError
32
- end
33
-
34
- it 'throws Not implemented error for group' do
35
- proc { new_cls.group }.must_raise NotImplementedError
36
- end
37
-
38
- it 'throws Not implemented error for uid' do
39
- proc { new_cls.uid }.must_raise NotImplementedError
40
- end
41
-
42
- it 'throws Not implemented error for gid' do
43
- proc { new_cls.gid }.must_raise NotImplementedError
44
- end
45
-
46
- it 'throws Not implemented error for content' do
47
- proc { new_cls.content }.must_raise NotImplementedError
48
- end
49
-
50
- it 'throws Not implemented error for mtime' do
51
- proc { new_cls.mtime }.must_raise NotImplementedError
52
- end
53
-
54
- it 'throws Not implemented error for size' do
55
- proc { new_cls.size }.must_raise NotImplementedError
56
- end
57
-
58
- it 'throws Not implemented error for selinux_label' do
59
- proc { new_cls.selinux_label }.must_raise NotImplementedError
60
- end
61
-
62
- it 'return path of file' do
63
- new_cls.path.must_equal('/temp/file')
64
- end
65
-
66
- it 'set product_version to nil' do
67
- new_cls.product_version.must_be_nil
68
- end
69
-
70
- it 'set product_version to nil' do
71
- new_cls.file_version.must_be_nil
72
- end
73
-
74
- describe 'type' do
75
- it 'recognized type == file' do
76
- fc = mockup(type: :file)
77
- fc.file?.must_equal true
78
- end
79
-
80
- it 'recognized type == block_device' do
81
- fc = mockup(type: :block_device)
82
- fc.block_device?.must_equal true
83
- end
84
-
85
- it 'recognized type == character_device' do
86
- fc = mockup(type: :character_device)
87
- fc.character_device?.must_equal true
88
- end
89
-
90
- it 'recognized type == socket' do
91
- fc = mockup(type: :socket)
92
- fc.socket?.must_equal true
93
- end
94
-
95
- it 'recognized type == directory' do
96
- fc = mockup(type: :directory)
97
- fc.directory?.must_equal true
98
- end
99
-
100
- it 'recognized type == pipe' do
101
- fc = mockup(type: :pipe)
102
- fc.pipe?.must_equal true
103
- end
104
-
105
- it 'recognized type == symlink' do
106
- fc = mockup(type: :symlink)
107
- fc.symlink?.must_equal true
108
- end
109
- end
110
-
111
- describe 'version' do
112
- it 'recognized wrong version' do
113
- fc = mockup(product_version: rand, file_version: rand)
114
- fc.version?(rand).must_equal false
115
- end
116
-
117
- it 'recognized product_version' do
118
- x = rand
119
- fc = mockup(product_version: x, file_version: rand)
120
- fc.version?(x).must_equal true
121
- end
122
-
123
- it 'recognized file_version' do
124
- x = rand
125
- fc = mockup(product_version: rand, file_version: x)
126
- fc.version?(x).must_equal true
127
- end
128
- end
129
- end
data/test/unit/helper.rb DELETED
@@ -1,7 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'minitest/autorun'
4
- require 'minitest/spec'
5
- require 'mocha/setup'
6
-
7
- require 'train'
@@ -1,85 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'helper'
4
-
5
- class OsDetectLinuxTester
6
- attr_reader :platform
7
- include Train::Platforms::Detect::Helpers::OSCommon
8
-
9
- def initialize
10
- @platform = {}
11
- end
12
- end
13
-
14
- describe 'os_common' do
15
- let(:detector) { OsDetectLinuxTester.new }
16
-
17
- describe 'winrm? check' do
18
- it 'return winrm? true' do
19
- require 'train/transports/winrm'
20
- be = Train::Transports::WinRM::Connection.new(nil)
21
- detector.instance_variable_set(:@backend, be)
22
- detector.winrm?.must_equal(true)
23
- end
24
-
25
- it 'return winrm? false' do
26
- be = mock('Backend')
27
- detector.instance_variable_set(:@backend, be)
28
- detector.winrm?.must_equal(false)
29
- end
30
- end
31
-
32
- describe 'unix file contents' do
33
- it 'return new file contents' do
34
- be = mock('Backend')
35
- output = mock('Output', exit_status: 0)
36
- output.expects(:stdout).returns('test')
37
- be.stubs(:run_command).with('test -f /etc/fstab && cat /etc/fstab').returns(output)
38
- detector.instance_variable_set(:@backend, be)
39
- detector.instance_variable_set(:@files, {})
40
- detector.unix_file_contents('/etc/fstab').must_equal('test')
41
- end
42
-
43
- it 'return new file contents cached' do
44
- be = mock('Backend')
45
- detector.instance_variable_set(:@backend, be)
46
- detector.instance_variable_set(:@files, { '/etc/profile' => 'test' })
47
- detector.unix_file_contents('/etc/profile').must_equal('test')
48
- end
49
- end
50
-
51
- describe 'unix file exist?' do
52
- it 'file does exist' do
53
- be = mock('Backend')
54
- be.stubs(:run_command).with('test -f /etc/test').returns(mock('Output', exit_status: 0))
55
- detector.instance_variable_set(:@backend, be)
56
- detector.unix_file_exist?('/etc/test').must_equal(true)
57
- end
58
- end
59
-
60
- describe '#detect_linux_arch' do
61
- it 'uname m call' do
62
- be = mock('Backend')
63
- be.stubs(:run_command).with('uname -m').returns(mock('Output', stdout: "x86_64\n"))
64
- detector.instance_variable_set(:@backend, be)
65
- detector.instance_variable_set(:@uname, {})
66
- detector.unix_uname_m.must_equal('x86_64')
67
- end
68
-
69
- it 'uname s call' do
70
- be = mock('Backend')
71
- be.stubs(:run_command).with('uname -s').returns(mock('Output', stdout: "linux"))
72
- detector.instance_variable_set(:@backend, be)
73
- detector.instance_variable_set(:@uname, {})
74
- detector.unix_uname_s.must_equal('linux')
75
- end
76
-
77
- it 'uname r call' do
78
- be = mock('Backend')
79
- be.stubs(:run_command).with('uname -r').returns(mock('Output', stdout: "17.0.0\n"))
80
- detector.instance_variable_set(:@backend, be)
81
- detector.instance_variable_set(:@uname, {})
82
- detector.unix_uname_r.must_equal('17.0.0')
83
- end
84
- end
85
- end
@@ -1,132 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'helper'
4
- require 'train/transports/mock'
5
-
6
- class OsDetectLinuxTester
7
- include Train::Platforms::Detect::Helpers::OSCommon
8
- end
9
-
10
- describe 'os_linux' do
11
- let(:detector) { OsDetectLinuxTester.new }
12
-
13
- describe 'redhatish_platform cleaner' do
14
- it 'normal redhat' do
15
- detector.redhatish_platform('Red Hattter').must_equal('redhat')
16
- end
17
-
18
- it 'custom redhat' do
19
- detector.redhatish_platform('Centos Pro 11').must_equal('centos')
20
- end
21
- end
22
-
23
- describe 'redhatish_version cleaner' do
24
- it 'normal rawhide' do
25
- detector.redhatish_version('18 (Rawhide) Pro').must_equal('18 (rawhide)')
26
- end
27
-
28
- it 'normal linux' do
29
- detector.redhatish_version('derived from Ubuntu Linux 11').must_equal('11')
30
- end
31
-
32
- it 'amazon linux 2 new release naming schema' do
33
- detector.redhatish_version('Amazon Linux release 2 (Karoo)').must_equal('2')
34
- end
35
-
36
- it 'amazon linux 2 old release naming schema' do
37
- detector.redhatish_version('Amazon Linux 2').must_equal('2')
38
- end
39
- end
40
-
41
- describe 'lsb parse' do
42
- it 'lsb config' do
43
- lsb = "DISTRIB_ID=Ubuntu\nDISTRIB_RELEASE=14.06\nDISTRIB_CODENAME=xenial"
44
- expect = { :id=>'Ubuntu', :release=>'14.06', :codename=>'xenial' }
45
- detector.lsb_config(lsb).must_equal(expect)
46
- end
47
-
48
- it 'lsb releasel' do
49
- lsb = "Distributor ID: Ubuntu\nRelease: 14.06\nCodename: xenial"
50
- expect = { :id=>'Ubuntu', :release=>'14.06', :codename=>'xenial' }
51
- detector.lsb_release(lsb).must_equal(expect)
52
- end
53
- end
54
-
55
- describe '#linux_os_release' do
56
- describe 'when no os-release data is available' do
57
- it 'returns nil' do
58
- detector.expects(:unix_file_contents).with('/etc/os-release').returns(nil)
59
- detector.linux_os_release.must_be_nil
60
- end
61
- end
62
- end
63
-
64
- describe 'when os-release data exists with no CISCO_RELEASE_INFO' do
65
- let(:os_release) { { 'KEY1' => 'VALUE1' } }
66
-
67
- it 'returns a correct hash' do
68
- detector.expects(:unix_file_contents).with('/etc/os-release').returns('os-release data')
69
- detector.expects(:parse_os_release_info).with('os-release data').returns(os_release)
70
- detector.linux_os_release['KEY1'].must_equal('VALUE1')
71
- end
72
- end
73
-
74
- describe 'when os-release data exists with CISCO_RELEASE_INFO' do
75
- let(:os_release) { { 'KEY1' => 'VALUE1', 'CISCO_RELEASE_INFO' => 'cisco_file' } }
76
- let(:cisco_release) { { 'KEY1' => 'NEWVALUE1', 'KEY2' => 'VALUE2' } }
77
-
78
- it 'returns a correct hash' do
79
- detector.expects(:unix_file_contents).with('/etc/os-release').returns('os-release data')
80
- detector.expects(:unix_file_contents).with('cisco_file').returns('cisco data')
81
- detector.expects(:parse_os_release_info).with('os-release data').returns(os_release)
82
- detector.expects(:parse_os_release_info).with('cisco data').returns(cisco_release)
83
-
84
- os_info = detector.linux_os_release
85
- os_info['KEY1'].must_equal('NEWVALUE1')
86
- os_info['KEY2'].must_equal('VALUE2')
87
- end
88
- end
89
-
90
- describe '#parse_os_release_info' do
91
- describe 'when nil is supplied' do
92
- it 'returns an empty hash' do
93
- detector.parse_os_release_info(nil).must_equal({})
94
- end
95
- end
96
-
97
- describe 'when unexpectedly-formatted data is supplied' do
98
- let(:data) do
99
- <<-EOL
100
- blah blah
101
- no good data here
102
- EOL
103
- end
104
-
105
- it 'returns an empty hash' do
106
- detector.parse_os_release_info(nil).must_equal({})
107
- end
108
- end
109
-
110
- describe 'when properly-formatted data is supplied' do
111
- let(:data) do
112
- <<-EOL
113
- KEY1=value1
114
- KEY2=
115
- KEY3=value3
116
- KEY4="value4 with spaces"
117
- KEY5="value5 with a = sign"
118
- EOL
119
- end
120
-
121
- it 'parses the data correctly' do
122
- parsed_data = detector.parse_os_release_info(data)
123
-
124
- parsed_data['KEY1'].must_equal('value1')
125
- parsed_data.key?('KEY2').must_equal(false)
126
- parsed_data['KEY3'].must_equal('value3')
127
- parsed_data['KEY4'].must_equal('value4 with spaces')
128
- parsed_data['KEY5'].must_equal('value5 with a = sign')
129
- end
130
- end
131
- end
132
- end
@@ -1,107 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'helper'
4
- require 'train/transports/mock'
5
-
6
- class OsDetectWindowsTester
7
- attr_reader :platform, :backend
8
- include Train::Platforms::Detect::Helpers::Windows
9
-
10
- def initialize
11
- @platform = {}
12
- @backend = Train::Transports::Mock.new.connection
13
- @backend.mock_os({ family: 'windows' })
14
- end
15
- end
16
-
17
- describe 'os_detect_windows' do
18
- describe 'windows 2012' do
19
- let(:detector) {
20
- detector = OsDetectWindowsTester.new
21
- detector.backend.mock_command('cmd /c ver', "\r\nMicrosoft Windows [Version 6.3.9600]\r\n", '', 0)
22
- detector.backend.mock_command('wmic os get * /format:list',"\r\r\nBuildNumber=9600\r\r\nCaption=Microsoft Windows Server 2012 R2 Standard\r\r\nOSArchitecture=64-bit\r\r\nVersion=6.3.9600\r\r\n" , '', 0)
23
- detector.backend.mock_command('wmic cpu get architecture /format:list',"\r\r\nArchitecture=9\r\r\n" , '', 0)
24
- detector
25
- }
26
-
27
- it 'sets the correct family/release for windows' do
28
- detector.detect_windows
29
- detector.platform[:family].must_equal('windows')
30
- detector.platform[:name].must_equal('Windows Server 2012 R2 Standard')
31
- detector.platform[:arch].must_equal('x86_64')
32
- detector.platform[:release].must_equal('6.3.9600')
33
- end
34
- end
35
-
36
- describe 'windows 2008' do
37
- let(:detector) {
38
- detector = OsDetectWindowsTester.new
39
- detector.backend.mock_command('cmd /c ver', "\r\nMicrosoft Windows [Version 6.1.7601]\r\n", '', 0)
40
- detector.backend.mock_command('wmic os get * /format:list',"\r\r\nBuildNumber=7601\r\r\nCaption=Microsoft Windows Server 2008 R2 Standard \r\r\nOSArchitecture=64-bit\r\r\nVersion=6.1.7601\r\r\n" , '', 0)
41
- detector.backend.mock_command('wmic cpu get architecture /format:list',"\r\r\nArchitecture=9\r\r\n" , '', 0)
42
- detector
43
- }
44
-
45
- it 'sets the correct family/release for windows' do
46
- detector.detect_windows
47
- detector.platform[:family].must_equal('windows')
48
- detector.platform[:name].must_equal('Windows Server 2008 R2 Standard')
49
- detector.platform[:arch].must_equal('x86_64')
50
- detector.platform[:release].must_equal('6.1.7601')
51
- end
52
- end
53
-
54
- describe 'windows 7' do
55
- let(:detector) {
56
- detector = OsDetectWindowsTester.new
57
- detector.backend.mock_command('cmd /c ver', "\r\nMicrosoft Windows [Version 6.1.7601]\r\n", '', 0)
58
- detector.backend.mock_command('wmic os get * /format:list',"\r\r\nBuildNumber=7601\r\r\nCaption=Microsoft Windows 7 Enterprise \r\r\nOSArchitecture=32-bit\r\r\nVersion=6.1.7601\r\r\n\r\r\n" , '', 0)
59
- detector.backend.mock_command('wmic cpu get architecture /format:list',"\r\r\nArchitecture=0\r\r\n" , '', 0)
60
- detector
61
- }
62
-
63
- it 'sets the correct family/release for windows' do
64
- detector.detect_windows
65
- detector.platform[:family].must_equal('windows')
66
- detector.platform[:name].must_equal('Windows 7 Enterprise')
67
- detector.platform[:arch].must_equal('i386')
68
- detector.platform[:release].must_equal('6.1.7601')
69
- end
70
- end
71
-
72
- describe 'windows 10' do
73
- let(:detector) {
74
- detector = OsDetectWindowsTester.new
75
- detector.backend.mock_command('cmd /c ver', "\r\nMicrosoft Windows [Version 10.0.10240]\r\n", '', 0)
76
- detector.backend.mock_command('wmic os get * /format:list',"\r\r\nBuildNumber=10240\r\r\nCaption=Microsoft Windows 10 Pro\r\r\nOSArchitecture=64-bit\r\r\nVersion=10.0.10240\r\r\n\r\r\n" , '', 0)
77
- detector.backend.mock_command('wmic cpu get architecture /format:list',"\r\r\nArchitecture=9\r\r\n" , '', 0)
78
- detector
79
- }
80
-
81
- it 'sets the correct family/release for windows' do
82
- detector.detect_windows
83
- detector.platform[:family].must_equal('windows')
84
- detector.platform[:name].must_equal('Windows 10 Pro')
85
- detector.platform[:arch].must_equal('x86_64')
86
- detector.platform[:release].must_equal('10.0.10240')
87
- end
88
- end
89
-
90
- describe 'windows 98' do
91
- let(:detector) {
92
- detector = OsDetectWindowsTester.new
93
- detector.backend.mock_command('cmd /c ver', "\r\nMicrosoft Windows [Version 4.10.1998]\r\n", '', 0)
94
- detector.backend.mock_command('wmic os get * /format:list', nil, '', 1)
95
- detector.backend.mock_command('wmic cpu get architecture /format:list', nil, '', 1)
96
- detector
97
- }
98
-
99
- it 'fallback to version number if wmic is not available' do
100
- detector.detect_windows
101
- detector.platform[:family].must_equal('windows')
102
- detector.platform[:name].must_equal('Windows 4.10.1998')
103
- detector.platform[:arch].must_be_nil
104
- detector.platform[:release].must_equal('4.10.1998')
105
- end
106
- end
107
- end
@@ -1,61 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'helper'
4
- require 'train/platforms/detect/scanner'
5
- require 'train/transports/mock'
6
-
7
- describe 'scanner' do
8
- let(:backend) { Train::Transports::Mock::Connection.new }
9
- let(:scanner) { Train::Platforms::Detect::Scanner.new(backend) }
10
-
11
- describe 'scan family children' do
12
- it 'return child' do
13
- family = Train::Platforms.family('linux')
14
- scanner.scan_family_children(family).name.must_equal('linux')
15
- scanner.instance_variable_get(:@family_hierarchy).must_equal(['linux'])
16
- end
17
-
18
- it 'return nil' do
19
- family = Train::Platforms.family('fake-fam')
20
- scanner.scan_family_children(family).must_be_nil
21
- scanner.instance_variable_get(:@family_hierarchy).must_be_empty
22
- end
23
- end
24
-
25
- describe 'check condition' do
26
- it 'return true equal' do
27
- scanner.instance_variable_set(:@platform, { arch: 'x86_64' })
28
- scanner.check_condition({ arch: '= x86_64' }).must_equal(true)
29
- end
30
-
31
- it 'return true greater then' do
32
- scanner.instance_variable_set(:@platform, { release: '8.2' })
33
- scanner.check_condition({ release: '>= 7' }).must_equal(true)
34
- end
35
-
36
- it 'return false greater then' do
37
- scanner.instance_variable_set(:@platform, { release: '2.2' })
38
- scanner.check_condition({ release: '> 7' }).must_equal(false)
39
- end
40
- end
41
-
42
- describe 'get platform' do
43
- it 'return empty platform' do
44
- plat = Train::Platforms.name('linux')
45
- plat = scanner.get_platform(plat)
46
- plat.platform.must_equal({})
47
- plat.backend.must_equal(backend)
48
- plat.family_hierarchy.must_equal([])
49
- end
50
-
51
- it 'return full platform' do
52
- scanner.instance_variable_set(:@platform, { family: 'linux' })
53
- scanner.instance_variable_set(:@family_hierarchy, [ 'linux', 'unix' ])
54
- plat = Train::Platforms.name('linux')
55
- plat = scanner.get_platform(plat)
56
- plat.platform.must_equal({ family: 'linux' })
57
- plat.backend.must_equal(backend)
58
- plat.family_hierarchy.must_equal([ 'linux', 'unix' ])
59
- end
60
- end
61
- end