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,74 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'file interface' do
4
- let(:backend) { get_backend.call }
5
-
6
- describe 'block device' do
7
- let(:file) { backend.file('/tmp/block_device') }
8
-
9
- it 'exists' do
10
- file.exist?.must_equal(true)
11
- end
12
-
13
- it 'is a block device' do
14
- file.block_device?.must_equal(true)
15
- end
16
-
17
- it 'has type :block_device' do
18
- file.type.must_equal(:block_device)
19
- end
20
-
21
- it 'has no content' do
22
- file.content.must_equal('')
23
- end
24
-
25
- it 'has owner name root' do
26
- file.owner.must_equal('root')
27
- end
28
-
29
- it 'has group name' do
30
- file.group.must_equal(Test.root_group(backend.os))
31
- end
32
-
33
- it 'has mode 0666' do
34
- file.mode.must_equal(00666)
35
- end
36
-
37
- it 'checks mode? 0666' do
38
- file.mode?(00666).must_equal(true)
39
- end
40
-
41
- it 'has no link_path' do
42
- file.link_path.must_be_nil
43
- end
44
-
45
- it 'has the correct md5sum' do
46
- file.md5sum.must_equal('d41d8cd98f00b204e9800998ecf8427e')
47
- end
48
-
49
- it 'has the correct sha256sum' do
50
- file.sha256sum.must_equal('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
51
- end
52
-
53
- it 'has a modified time' do
54
- file.mtime.must_be_close_to(Time.now.to_i - Test.mtime/2, Test.mtime)
55
- end
56
-
57
- it 'has inode size of 0' do
58
- file.size.must_equal(0)
59
- end
60
-
61
- it 'has selinux label handling' do
62
- res = Test.selinux_label(backend, file.path)
63
- file.selinux_label.must_equal(res)
64
- end
65
-
66
- it 'has no product_version' do
67
- file.product_version.must_be_nil
68
- end
69
-
70
- it 'has no file_version' do
71
- file.file_version.must_be_nil
72
- end
73
- end
74
- end
@@ -1,74 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'file interface' do
4
- let(:backend) { get_backend.call }
5
-
6
- describe 'character device' do
7
- let(:file) { backend.file('/dev/null') }
8
-
9
- it 'exists' do
10
- file.exist?.must_equal(true)
11
- end
12
-
13
- it 'is a character device' do
14
- file.character_device?.must_equal(true)
15
- end
16
-
17
- it 'has type :character_device' do
18
- file.type.must_equal(:character_device)
19
- end
20
-
21
- it 'has empty content' do
22
- file.content.must_equal('')
23
- end
24
-
25
- it 'has owner name root' do
26
- file.owner.must_equal('root')
27
- end
28
-
29
- it 'has group name' do
30
- file.group.must_equal(Test.root_group(backend.os))
31
- end
32
-
33
- it 'has mode 0666' do
34
- file.mode.must_equal(00666)
35
- end
36
-
37
- it 'checks mode? 0666' do
38
- file.mode?(00666).must_equal(true)
39
- end
40
-
41
- it 'has no link_path' do
42
- file.link_path.must_be_nil
43
- end
44
-
45
- it 'has an md5sum' do
46
- file.md5sum.must_equal('d41d8cd98f00b204e9800998ecf8427e')
47
- end
48
-
49
- it 'has an sha256sum' do
50
- file.sha256sum.must_equal('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
51
- end
52
-
53
- it 'has a modified time' do
54
- file.mtime.must_be_close_to(Time.now.to_i - Test.mtime/2, Test.mtime)
55
- end
56
-
57
- it 'has inode size of 0' do
58
- file.size.must_equal(0)
59
- end
60
-
61
- it 'has selinux label handling' do
62
- res = Test.selinux_label(backend, file.path)
63
- file.selinux_label.must_equal(res)
64
- end
65
-
66
- it 'has no product_version' do
67
- file.product_version.must_be_nil
68
- end
69
-
70
- it 'has no file_version' do
71
- file.file_version.must_be_nil
72
- end
73
- end
74
- end
@@ -1,99 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'file interface' do
4
- let(:backend) { get_backend.call }
5
-
6
- describe 'regular file' do
7
- let(:file) { backend.file('/tmp/file') }
8
-
9
- it 'exists' do
10
- file.exist?.must_equal(true)
11
- end
12
-
13
- it 'is a file' do
14
- file.file?.must_equal(true)
15
- end
16
-
17
- it 'has type :file' do
18
- file.type.must_equal(:file)
19
- end
20
-
21
- it 'has content' do
22
- file.content.must_equal('hello world')
23
- end
24
-
25
- it 'has owner name root' do
26
- file.owner.must_equal('root')
27
- end
28
-
29
- it 'has group name' do
30
- file.group.must_equal(Test.root_group(backend.os))
31
- end
32
-
33
- it 'has mode 0765' do
34
- file.mode.must_equal(00765)
35
- end
36
-
37
- it 'checks mode? 0765' do
38
- file.mode?(00765).must_equal(true)
39
- end
40
-
41
- it 'doesnt check mode? 0764' do
42
- file.mode?(00764).must_equal(false)
43
- end
44
-
45
- it 'has no link_path' do
46
- file.link_path.must_be_nil
47
- end
48
-
49
- it 'has an md5sum' do
50
- file.md5sum.must_equal('5eb63bbbe01eeed093cb22bb8f5acdc3')
51
- end
52
-
53
- it 'has an sha256sum' do
54
- file.sha256sum.must_equal('b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9')
55
- end
56
-
57
- it 'has a modified time' do
58
- file.mtime.must_be_close_to(Time.now.to_i - Test.mtime/2, Test.mtime)
59
- end
60
-
61
- it 'has size' do
62
- # Must be around 11 Bytes, +- 4
63
- file.size.must_be_close_to(11, 4)
64
- end
65
-
66
- it 'has selinux label handling' do
67
- res = Test.selinux_label(backend, file.path)
68
- file.selinux_label.must_equal(res)
69
- end
70
-
71
- it 'has no product_version' do
72
- file.product_version.must_be_nil
73
- end
74
-
75
- it 'has no file_version' do
76
- file.file_version.must_be_nil
77
- end
78
-
79
- it 'provides a json representation' do
80
- j = file.to_json
81
- j.must_be_kind_of Hash
82
- j['type'].must_equal :file
83
- end
84
- end
85
-
86
- describe 'regular file' do
87
- let(:file) { backend.file('/tmp/sfile') }
88
- it 'has mode 7765' do
89
- file.mode.must_equal(07765)
90
- end
91
- end
92
-
93
- describe 'regular file' do
94
- let(:file) { backend.file('/tmp/spaced file') }
95
- it 'has content' do
96
- file.content.must_equal('hello space')
97
- end
98
- end
99
- end
@@ -1,90 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'file interface' do
4
- let(:backend) { get_backend.call }
5
-
6
- describe 'a folder' do
7
- let(:file) { backend.file('/tmp/folder') }
8
-
9
- it 'exists' do
10
- file.exist?.must_equal(true)
11
- end
12
-
13
- it 'is a directory' do
14
- file.directory?.must_equal(true)
15
- end
16
-
17
- it 'has type :directory' do
18
- file.type.must_equal(:directory)
19
- end
20
-
21
- case get_backend.call.os[:family]
22
- when 'freebsd'
23
- it 'has freebsd folder content behavior' do
24
- file.content.must_equal("\u0003\u0000")
25
- end
26
-
27
- it 'has an md5sum' do
28
- file.md5sum.must_equal('598f4fe64aefab8f00bcbea4c9239abf')
29
- end
30
-
31
- it 'has an sha256sum' do
32
- file.sha256sum.must_equal('9b4fb24edd6d1d8830e272398263cdbf026b97392cc35387b991dc0248a628f9')
33
- end
34
-
35
- else
36
- it 'has no content' do
37
- file.content.must_be_nil
38
- end
39
-
40
- it 'raises an error if md5sum is attempted' do
41
- proc { file.md5sum }.must_raise RuntimeError
42
- end
43
-
44
- it 'raises an error if sha256sum is attempted' do
45
- proc { file.sha256sum }.must_raise RuntimeError
46
- end
47
- end
48
-
49
- it 'has owner name root' do
50
- file.owner.must_equal('root')
51
- end
52
-
53
- it 'has group name' do
54
- file.group.must_equal(Test.root_group(backend.os))
55
- end
56
-
57
- it 'has mode 0567' do
58
- file.mode.must_equal(00567)
59
- end
60
-
61
- it 'checks mode? 0567' do
62
- file.mode?(00567).must_equal(true)
63
- end
64
-
65
- it 'has no link_path' do
66
- file.link_path.must_be_nil
67
- end
68
-
69
- it 'has a modified time' do
70
- file.mtime.must_be_close_to(Time.now.to_i - Test.mtime/2, Test.mtime)
71
- end
72
-
73
- it 'has inode size' do
74
- file.size.must_be_close_to(4096, 4096)
75
- end
76
-
77
- it 'has selinux label handling' do
78
- res = Test.selinux_label(backend, file.path)
79
- file.selinux_label.must_equal(res)
80
- end
81
-
82
- it 'has no product_version' do
83
- file.product_version.must_be_nil
84
- end
85
-
86
- it 'has no file_version' do
87
- file.file_version.must_be_nil
88
- end
89
- end
90
- end
@@ -1,76 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'file interface' do
4
- let(:backend) { get_backend.call }
5
-
6
- describe 'a path that doesnt exist' do
7
- let(:file) {
8
- backend.file('/do_not_create_this_path_please_or_my_tests_will_fail')
9
- }
10
-
11
- it 'does not exist' do
12
- file.exist?.must_equal(false)
13
- end
14
-
15
- it 'is not a file' do
16
- file.file?.must_equal(false)
17
- end
18
-
19
- it 'has type nil' do
20
- file.type.must_be_nil
21
- end
22
-
23
- it 'has no content' do
24
- file.content.must_be_nil
25
- end
26
-
27
- it 'has no owner' do
28
- file.owner.must_be_nil
29
- end
30
-
31
- it 'has no group' do
32
- file.group.must_be_nil
33
- end
34
-
35
- it 'has mode nil' do
36
- file.mode.must_be_nil
37
- end
38
-
39
- it 'checks mode? nil' do
40
- file.mode?(nil).must_equal(true)
41
- end
42
-
43
- it 'has no link_path' do
44
- file.link_path.must_be_nil
45
- end
46
-
47
- it 'raises an error if md5sum is attempted' do
48
- proc { file.md5sum }.must_raise RuntimeError
49
- end
50
-
51
- it 'raises an error if sha256sum is attempted' do
52
- proc { file.sha256sum }.must_raise RuntimeError
53
- end
54
-
55
- it 'has a modified time' do
56
- file.mtime.must_be_nil
57
- end
58
-
59
- it 'has inode size' do
60
- # Must be around 11 Bytes, +- 4
61
- file.size.must_be_nil
62
- end
63
-
64
- it 'has no selinux_label' do
65
- file.selinux_label.must_be_nil
66
- end
67
-
68
- it 'has no product_version' do
69
- file.product_version.must_be_nil
70
- end
71
-
72
- it 'has no file_version' do
73
- file.file_version.must_be_nil
74
- end
75
- end
76
- end
@@ -1,62 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'file interface' do
4
- let(:backend) { get_backend.call }
5
-
6
- describe 'pipe / fifo' do
7
- let(:file) { backend.file('/tmp/pipe') }
8
-
9
- it 'exists' do
10
- file.exist?.must_equal(true)
11
- end
12
-
13
- it 'is a pipe' do
14
- file.pipe?.must_equal(true)
15
- end
16
-
17
- it 'has type :pipe' do
18
- file.type.must_equal(:pipe)
19
- end
20
-
21
- it 'has owner name root' do
22
- file.owner.must_equal('root')
23
- end
24
-
25
- it 'has group name' do
26
- file.group.must_equal(Test.root_group(backend.os))
27
- end
28
-
29
- it 'has mode 0644' do
30
- file.mode.must_equal(00644)
31
- end
32
-
33
- it 'checks mode? 0644' do
34
- file.mode?(00644).must_equal(true)
35
- end
36
-
37
- it 'has no link_path' do
38
- file.link_path.must_be_nil
39
- end
40
-
41
- it 'has a modified time' do
42
- file.mtime.must_be_close_to(Time.now.to_i - Test.mtime/2, Test.mtime)
43
- end
44
-
45
- it 'has inode size of 0' do
46
- file.size.must_equal(0)
47
- end
48
-
49
- it 'has selinux label handling' do
50
- res = Test.selinux_label(backend, file.path)
51
- file.selinux_label.must_equal(res)
52
- end
53
-
54
- it 'has no product_version' do
55
- file.product_version.must_be_nil
56
- end
57
-
58
- it 'has no file_version' do
59
- file.file_version.must_be_nil
60
- end
61
- end
62
- end
@@ -1,95 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'file interface' do
4
- let(:backend) { get_backend.call }
5
-
6
- describe 'symlink file' do
7
- let(:file) { backend.file('/tmp/symlink') }
8
-
9
- it 'exists' do
10
- file.exist?.must_equal(true)
11
- end
12
-
13
- it 'is a symlink' do
14
- file.symlink?.must_equal(true)
15
- end
16
-
17
- it 'is pointing to a file' do
18
- file.file?.must_equal(true)
19
- end
20
-
21
- it 'is not pointing to a folder' do
22
- file.directory?.must_equal(false)
23
- end
24
-
25
- it 'has type :file' do
26
- file.type.must_equal(:file)
27
- end
28
-
29
- it 'has content' do
30
- file.content.must_equal('hello world')
31
- end
32
-
33
- it 'has owner name root' do
34
- file.owner.must_equal('root')
35
- end
36
-
37
- it 'has uid 0' do
38
- file.uid.must_equal(0)
39
- end
40
-
41
- it 'has group name' do
42
- file.group.must_equal(Test.root_group(backend.os))
43
- end
44
-
45
- it 'has gid 0' do
46
- file.gid.must_equal(0)
47
- end
48
-
49
- it 'has mode 0777' do
50
- file.source.mode.must_equal(00777)
51
- end
52
-
53
- it 'has mode 0765' do
54
- file.mode.must_equal(00765)
55
- end
56
-
57
- it 'checks mode? 0765' do
58
- file.mode?(00765).must_equal(true)
59
- end
60
-
61
- it 'has link_path' do
62
- file.link_path.must_equal('/tmp/file')
63
- end
64
-
65
- it 'has an md5sum' do
66
- file.md5sum.must_equal('5eb63bbbe01eeed093cb22bb8f5acdc3')
67
- end
68
-
69
- it 'has an sha256sum' do
70
- file.sha256sum.must_equal('b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9')
71
- end
72
-
73
- it 'has a modified time' do
74
- file.mtime.must_be_close_to(Time.now.to_i - Test.mtime/2, Test.mtime)
75
- end
76
-
77
- it 'has size' do
78
- # Must be around 11 Bytes, +- 4
79
- file.size.must_be_close_to(11, 4)
80
- end
81
-
82
- it 'has selinux label handling' do
83
- res = Test.selinux_label(backend, file.path)
84
- file.selinux_label.must_equal(res)
85
- end
86
-
87
- it 'has no product_version' do
88
- file.product_version.must_be_nil
89
- end
90
-
91
- it 'has no file_version' do
92
- file.file_version.must_be_nil
93
- end
94
- end
95
- end
@@ -1,35 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe 'run_command' do
4
- let(:backend) { get_backend.call() }
5
-
6
- it 'can echo commands' do
7
- res = backend.run_command('echo hello world')
8
- res.stdout.must_equal("hello world\n")
9
- res.stderr.must_equal('')
10
- res.exit_status.must_equal(0)
11
- end
12
-
13
- it 'can run frozen commands' do
14
- res = backend.run_command('echo hello world'.freeze)
15
- res.stdout.must_equal("hello world\n")
16
- res.stderr.must_equal('')
17
- res.exit_status.must_equal(0)
18
- end
19
-
20
- it 'can echo commands to stderr' do
21
- # TODO: Specinfra often fails on this test.
22
- # Fix and re-enable it.
23
- res = backend.run_command('>&2 echo hello world')
24
- res.stdout.must_equal('')
25
- res.stderr.must_equal("hello world\n")
26
- res.exit_status.must_equal(0)
27
- end
28
-
29
- it 'prints a correct exit status' do
30
- res = backend.run_command('exit 123')
31
- res.stdout.must_equal('')
32
- res.stderr.must_equal('')
33
- res.exit_status.must_equal(123)
34
- end
35
- end