train 1.5.11 → 1.6.3

Sign up to get free protection for your applications and to get access to all the features.
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,43 +0,0 @@
1
- ---
2
- driver:
3
- name: vagrant
4
-
5
- provisioner:
6
- name: chef_solo
7
- data_path: ../../.
8
-
9
- platforms:
10
- - name: centos-7.1
11
- - name: centos-6.7
12
- - name: centos-6.7-i386
13
- - name: centos-5.11
14
- - name: centos-5.11-i386
15
- - name: debian-6.0.10
16
- - name: debian-6.0.10-i386
17
- - name: debian-7.8
18
- - name: debian-7.8-i386
19
- - name: debian-8.1
20
- - name: debian-8.1-i386
21
- - name: fedora-21
22
- - name: fedora-21-i386
23
- - name: fedora-22
24
- - name: freebsd-9.3
25
- - name: freebsd-10.2
26
- - name: opensuse-13.2-x86_64
27
- - name: opensuse-13.2-i386
28
- - name: ubuntu-14.04
29
- - name: ubuntu-14.04-i386
30
- - name: ubuntu-12.04
31
- - name: ubuntu-12.04-i386
32
- - name: ubuntu-10.04
33
- - name: ubuntu-10.04-i386
34
-
35
- suites:
36
- - name: default
37
- run_list:
38
- - recipe[sudo]
39
- - recipe[test]
40
- attributes:
41
- authorization:
42
- sudo:
43
- include_sudoers_d: true
@@ -1,3 +0,0 @@
1
- source 'https://supermarket.chef.io'
2
- cookbook 'sudo', '~> 2.7.2'
3
- cookbook 'test', path: 'cookbooks/test'
@@ -1,22 +0,0 @@
1
- #!/bin/sh
2
- test ! -e /tmp/folder && \
3
- mkdir /tmp/folder
4
- chmod 0567 /tmp/folder
5
-
6
- echo -n 'hello world' > /tmp/file
7
- test ! -e /tmp/symlink && \
8
- ln -s /tmp/file /tmp/symlink
9
- chmod 0777 /tmp/symlink
10
- chmod 0765 /tmp/file
11
-
12
- echo -n 'hello suid/sgid/sticky' > /tmp/sfile
13
- chmod 7765 /tmp/sfile
14
-
15
- echo -n 'hello space' > /tmp/spaced\ file
16
-
17
- test ! -e /tmp/pipe && \
18
- mkfifo /tmp/pipe
19
-
20
- test ! -e /tmp/block_device && \
21
- mknod /tmp/block_device b 7 7
22
- chmod 0666 /tmp/block_device
@@ -1 +0,0 @@
1
- .kitchen
@@ -1 +0,0 @@
1
- name 'test'
@@ -1,100 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- #
4
- # Helper recipe to create create a few files in the operating
5
- # systems, which the runner will test against.
6
- # It also initializes the runner inside the machines
7
- # and makes sure all dependencies are ready to go.
8
- #
9
- # Finally (for now), it actually executes the all tests with
10
- # the local execution backend
11
-
12
- include_recipe('test::prep_files')
13
-
14
- # prepare ssh for backend
15
- execute 'create ssh key' do
16
- command 'ssh-keygen -t rsa -b 2048 -f /root/.ssh/id_rsa -N ""'
17
- not_if 'test -e /root/.ssh/id_rsa'
18
- end
19
-
20
- execute 'add ssh key to vagrant user' do
21
- command 'cat /root/.ssh/id_rsa.pub >> /home/vagrant/.ssh/authorized_keys'
22
- end
23
-
24
- execute 'test ssh connection' do
25
- command 'ssh -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa vagrant@localhost "echo 1"'
26
- end
27
-
28
- # prepare a few users
29
- %w{ nopasswd passwd nosudo reqtty customcommand }.each do |name|
30
- user name do
31
- password '$1$7MCNTXPI$r./jqCEoVlLlByYKSL3sZ.'
32
- manage_home true
33
- end
34
- end
35
-
36
- %w{nopasswd vagrant}.each do |name|
37
- sudo name do
38
- user '%'+name
39
- nopasswd true
40
- defaults ['!requiretty']
41
- end
42
- end
43
-
44
- sudo 'passwd' do
45
- user 'passwd'
46
- nopasswd false
47
- defaults ['!requiretty']
48
- end
49
-
50
- sudo 'reqtty' do
51
- user 'reqtty'
52
- nopasswd true
53
- defaults ['requiretty']
54
- end
55
-
56
- sudo 'customcommand' do
57
- user 'customcommand'
58
- nopasswd true
59
- defaults ['!requiretty']
60
- end
61
-
62
- # execute tests
63
- execute 'bundle install' do
64
- command '/opt/chef/embedded/bin/bundle install --without integration tools'
65
- cwd '/tmp/kitchen/data'
66
- end
67
-
68
- execute 'run local tests' do
69
- command '/opt/chef/embedded/bin/ruby -I lib test/integration/test_local.rb test/integration/tests/*_test.rb'
70
- cwd '/tmp/kitchen/data'
71
- end
72
-
73
- execute 'run ssh tests' do
74
- command '/opt/chef/embedded/bin/ruby -I lib test/integration/test_ssh.rb test/integration/tests/*_test.rb'
75
- cwd '/tmp/kitchen/data'
76
- end
77
-
78
- %w{passwd nopasswd reqtty customcommand}.each do |name|
79
- execute "run local sudo tests as #{name}" do
80
- command "/opt/chef/embedded/bin/ruby -I lib test/integration/sudo/#{name}.rb"
81
- cwd '/tmp/kitchen/data'
82
- user name
83
- end
84
- end
85
-
86
- execute 'fix sudoers for reqtty' do
87
- command 'chef-apply contrib/fixup_requiretty.rb'
88
- cwd '/tmp/kitchen/data'
89
- environment(
90
- 'TRAIN_SUDO_USER' => 'reqtty',
91
- 'TRAIN_SUDO_VERY_MUCH' => 'yes',
92
- )
93
- end
94
-
95
- # if it's fixed, it should behave like user 'nopasswd'
96
- execute 'run local sudo tests as reqtty, no longer requiring a tty' do
97
- command "/opt/chef/embedded/bin/ruby -I lib test/integration/sudo/nopasswd.rb"
98
- cwd '/tmp/kitchen/data'
99
- user 'reqtty'
100
- end
@@ -1,56 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
- #
5
- # Helper recipe to create create a few files in the operating
6
- # systems, which the runner will test against.
7
-
8
- gid = node['platform_family'] == 'aix' ? 'system' : node['root_group']
9
-
10
- file '/tmp/file' do
11
- mode '0765'
12
- owner 'root'
13
- group gid
14
- content 'hello world'
15
- end
16
-
17
- file '/tmp/sfile' do
18
- mode '7765'
19
- owner 'root'
20
- group gid
21
- content 'hello suid/sgid/sticky'
22
- end
23
-
24
- file '/tmp/spaced file' do
25
- content 'hello space'
26
- end
27
-
28
- directory '/tmp/folder' do
29
- mode '0567'
30
- owner 'root'
31
- group gid
32
- end
33
-
34
- link '/tmp/symlink' do
35
- to '/tmp/file'
36
- owner 'root'
37
- group gid
38
- mode '0777'
39
- end
40
-
41
- link '/usr/bin/allyourbase' do
42
- to '/usr/bin/sudo'
43
- owner 'root'
44
- group gid
45
- mode '0777'
46
- end
47
-
48
- execute 'create pipe/fifo' do
49
- command 'mkfifo /tmp/pipe'
50
- not_if 'test -e /tmp/pipe'
51
- end
52
-
53
- execute 'create block_device' do
54
- command "mknod /tmp/block_device b 7 7 && chmod 0666 /tmp/block_device && chown root:#{gid} /tmp/block_device"
55
- not_if 'test -e /tmp/block_device'
56
- end
@@ -1,153 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
-
4
- require 'docker'
5
- require 'yaml'
6
- require 'concurrent'
7
-
8
- class DockerRunner
9
- def initialize(conf_path = nil)
10
- @conf_path = conf_path || ENV['config']
11
- unless File.file?(@conf_path)
12
- fail "Can't find configuration in #{@conf_path}"
13
- end
14
-
15
- @conf = YAML.load_file(@conf_path)
16
- if @conf.nil? or @conf.empty?
17
- fail "Can't read coniguration in #{@conf_path}"
18
- end
19
- if @conf['images'].nil?
20
- fail "You must configure test images in your #{@conf_path}"
21
- end
22
-
23
- @images = docker_images_by_tag
24
- @image_pull_tickets = Concurrent::Semaphore.new(2)
25
- @docker_run_tickets = Concurrent::Semaphore.new(5)
26
- end
27
-
28
- def run_all(&block)
29
- fail 'You must provide a block for run_all' unless block_given?
30
-
31
- promises = @conf['images'].map do |id|
32
- run_on_target(id, &block)
33
- end
34
-
35
- # wait for all tests to be finished
36
- sleep(0.1) until promises.all?(&:fulfilled?)
37
-
38
- # return resulting values
39
- promises.map(&:value)
40
- end
41
-
42
- def run_on_target(name, &block)
43
- pr = Concurrent::Promise.new {
44
- begin
45
- container = start_container(name)
46
- res = block.call(name, container)
47
- # special rescue block to handle not implemented error
48
- rescue NotImplementedError => err
49
- raise err.message
50
- end
51
- # always stop the container
52
- stop_container(container)
53
- res
54
- }.execute
55
-
56
- # failure handling
57
- pr.rescue do |err|
58
- msg = "\033[31;1m#{err.message}\033[0m"
59
- puts msg
60
- msg + "\n" + err.backtrace.join("\n")
61
- end
62
- end
63
-
64
- def provision_image(image, prov, files)
65
- tries ||= 3
66
- return image if prov['script'].nil?
67
- path = File.join(File.dirname(@conf_path), prov['script'])
68
- unless File.file?(path)
69
- puts "Can't find script file #{path}"
70
- return image
71
- end
72
- puts " script #{path}"
73
- dst = "/bootstrap#{files.length}.sh"
74
- files.push(dst)
75
- image.insert_local('localPath' => path, 'outputPath' => dst)
76
- rescue StandardError => _
77
- retry unless (tries -= 1).zero?
78
- end
79
-
80
- def bootstrap_image(name, image)
81
- files = []
82
- provisions = Array(@conf['provision'])
83
- puts "--> provision docker #{name}" unless provisions.empty?
84
- provisions.each do |prov|
85
- image = provision_image(image, prov, files)
86
- end
87
- [image, files]
88
- end
89
-
90
- def start_container(name, version = nil)
91
- unless name.include?(':')
92
- version ||= 'latest'
93
- name = "#{name}:#{version}"
94
- end
95
- puts "--> schedule docker #{name}"
96
-
97
- image = @images[name]
98
- if image.nil?
99
- puts "\033[35;1m--> pull docker images #{name} "\
100
- "(this may take a while)\033[0m"
101
-
102
- @image_pull_tickets.acquire(1)
103
- puts "... start pull image #{name}"
104
- image = Docker::Image.create('fromImage' => name)
105
- @image_pull_tickets.release(1)
106
-
107
- unless image.nil?
108
- puts "\033[35;1m--> pull docker images finished for #{name}\033[0m"
109
- end
110
- end
111
-
112
- fail "Can't find nor pull docker image #{name}" if image.nil?
113
-
114
- @docker_run_tickets.acquire(1)
115
-
116
- image, scripts = bootstrap_image(name, image)
117
-
118
- puts "--> start docker #{name}"
119
- container = Docker::Container.create(
120
- 'Cmd' => %w{sleep 3600},
121
- 'Image' => image.id,
122
- 'OpenStdin' => true,
123
- )
124
- container.start
125
-
126
- scripts.each do |script|
127
- container.exec(%w{chmod +x}.push(script))
128
- container.exec(%w{sh -c}.push(script))
129
- end
130
-
131
- container
132
- end
133
-
134
- def stop_container(container)
135
- @docker_run_tickets.release(1)
136
- puts "--> killrm docker #{container.id}"
137
- container.kill
138
- container.delete(force: true)
139
- end
140
-
141
- private
142
-
143
- # get all docker image tags
144
- def docker_images_by_tag
145
- images = {}
146
- Docker::Image.all.map do |img|
147
- Array(img.info['RepoTags']).each do |tag|
148
- images[tag] = img
149
- end
150
- end
151
- images
152
- end
153
- end
@@ -1,24 +0,0 @@
1
- # encoding: utf-8
2
- require_relative 'docker_run'
3
- tests = ARGV
4
-
5
- def test_container(container, tests)
6
- puts "--> run test on docker #{container.id}"
7
- pid = Process.fork do
8
- ENV['CONTAINER'] = container.id
9
- require_relative 'docker_test_container.rb'
10
- Process.exit
11
- end
12
-
13
- _, status = Process.waitpid2(pid)
14
- status.exitstatus == 0
15
- end
16
-
17
- results = DockerRunner.new.run_all do |name, container|
18
- status = test_container(container, tests)
19
- status ? nil : "Failed to run tests on #{name}"
20
- end
21
-
22
- failures = results.compact
23
- failures.each { |f| puts "\033[31;1m#{f}\033[0m\n\n" }
24
- failures.empty? or fail 'Test failures'
@@ -1,24 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
-
4
- require 'train'
5
- require_relative 'helper'
6
-
7
- container_id = ENV['CONTAINER'] or
8
- fail 'You must provide a container ID via CONTAINER env'
9
-
10
- tests = ARGV
11
- puts ['Running tests:', tests].flatten.join("\n- ")
12
- puts ''
13
-
14
- backends = {}
15
- backends[:docker] = proc { |*args|
16
- opt = Train.target_config({ host: container_id })
17
- Train.create('docker', opt).connection(args[0])
18
- }
19
-
20
- backends.each do |type, get_backend|
21
- tests.each do |test|
22
- instance_eval(File.read(test), test, 1)
23
- end
24
- end
@@ -1,61 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
-
4
- require 'minitest/autorun'
5
- require 'minitest/spec'
6
-
7
- # Tests configuration:
8
- module Test
9
- class << self
10
- # MTime tracks the maximum range of modification time in seconds.
11
- # i.e. MTime == 60*60*1 is 1 hour of modification time range,
12
- # which translates to a modification time range of:
13
- # [ now-1hour, now ]
14
- def mtime
15
- 60 * 60 * 24 * 1
16
- end
17
-
18
- def dup(o)
19
- Marshal.load(Marshal.dump(o))
20
- end
21
-
22
- def root_group(os)
23
- case os[:family]
24
- when 'freebsd'
25
- 'wheel'
26
- when 'aix'
27
- 'system'
28
- else
29
- 'root'
30
- end
31
- end
32
-
33
- def selinux_label(backend, path = nil)
34
- return nil if backend.class.to_s =~ /docker/i
35
-
36
- os = backend.os
37
- labels = {}
38
-
39
- h = {}
40
- h.default = Hash.new(nil)
41
- h['redhat'] = {}
42
- h['redhat'].default = 'unconfined_u:object_r:user_tmp_t:s0'
43
- h['redhat']['5.11'] = 'user_u:object_r:tmp_t'
44
- h['centos'] = h['fedora'] = h['redhat']
45
- labels.default = dup(h)
46
-
47
- h['redhat'].default = 'unconfined_u:object_r:tmp_t:s0'
48
- labels['/tmp/block_device'] = dup(h)
49
-
50
- h = {}
51
- h.default = Hash.new(nil)
52
- h['redhat'] = {}
53
- h['redhat'].default = 'system_u:object_r:null_device_t:s0'
54
- h['redhat']['5.11'] = 'system_u:object_r:null_device_t'
55
- h['centos'] = h['fedora'] = h['redhat']
56
- labels['/dev/null'] = dup(h)
57
-
58
- labels[path][os[:family]][os[:release]]
59
- end
60
- end
61
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
- # author: Jeremy Miller
3
-
4
- require_relative 'run_as'
5
-
6
- describe 'run custom sudo command' do
7
- it 'is running as non-root without sudo' do
8
- run_as('whoami').stdout.wont_match(/root/i)
9
- end
10
-
11
- it 'is running nopasswd custom sudo command' do
12
- run_as('whoami', { sudo: true, sudo_command: 'allyourbase' })
13
- .stdout.must_match(/root/i)
14
- end
15
- end
@@ -1,16 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require_relative 'run_as'
6
-
7
- describe 'run_command' do
8
- it 'is running as non-root without sudo' do
9
- run_as('whoami').stdout.wont_match /root/i
10
- end
11
-
12
- it 'is running nopasswd sudo' do
13
- run_as('whoami', { sudo: true })
14
- .stdout.must_match /root/i
15
- end
16
- end
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require_relative 'run_as'
6
-
7
- describe 'run_command' do
8
- it 'is running as non-root without sudo' do
9
- run_as('whoami').stdout.wont_match /root/i
10
- end
11
-
12
- it 'is not running sudo without password' do
13
- err = ->{Train.create('local', { sudo: true }).connection}.must_raise Train::UserError
14
- err.message.must_match /Sudo requires a password/
15
- end
16
-
17
- it 'is running passwd sudo' do
18
- run_as('whoami', { sudo: true, sudo_password: 'password' })
19
- .stdout.must_match /root/i
20
- end
21
- end
@@ -1,17 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
- # author: Stephan Renatus
5
-
6
- require_relative 'run_as'
7
-
8
- describe 'run_command' do
9
- it 'is running as non-root without sudo' do
10
- run_as('whoami').stdout.wont_match /root/i
11
- end
12
-
13
- it 'is throwing an error trying to use sudo' do
14
- err = ->{ run_as('whoami', { sudo: true }) }.must_raise Train::UserError
15
- err.message.must_match /Sudo failed: Sudo requires a TTY. Please see the README/i
16
- end
17
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require_relative '../helper'
6
- require 'train'
7
-
8
- def run_as(cmd, opts = {})
9
- Train.create('local', opts)
10
- .connection
11
- .run_command(cmd)
12
- end
@@ -1,6 +0,0 @@
1
- images:
2
- - centos:5.11
3
- - centos:6.8
4
- - centos:7.2.1511
5
- provision:
6
- - script: bootstrap.sh
@@ -1,6 +0,0 @@
1
- images:
2
- - debian:6.0.10
3
- - debian:7.11
4
- - debian:8.5
5
- provision:
6
- - script: bootstrap.sh
@@ -1,8 +0,0 @@
1
- images:
2
- - fedora:20
3
- - fedora:21
4
- - fedora:22
5
- - fedora:23
6
- - fedora:24
7
- provision:
8
- - script: bootstrap.sh
@@ -1,6 +0,0 @@
1
- images:
2
- - oraclelinux:5.11
3
- - oraclelinux:6.8
4
- - oraclelinux:7.2
5
- provision:
6
- - script: bootstrap.sh
@@ -1,8 +0,0 @@
1
- images:
2
- - ubuntu:10.04
3
- - ubuntu:12.04
4
- - ubuntu:14.04
5
- - ubuntu:16.04
6
- - ubuntu:16.10
7
- provision:
8
- - script: bootstrap.sh
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
-
4
- require_relative 'helper'
5
- require 'train'
6
-
7
- backends = {}
8
-
9
- backends[:local] = proc { |*opts|
10
- Train.create('local', {}).connection(opts[0])
11
- }
12
-
13
- tests = ARGV
14
-
15
- backends.each do |type, get_backend|
16
- tests.each do |test|
17
- instance_eval(File.read(test), test, 1)
18
- end
19
- end
@@ -1,39 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
-
4
- require_relative 'helper'
5
- require 'train'
6
- require 'logger'
7
-
8
- backends = {}
9
- backend_conf = {
10
- 'target' => ENV['target'] || 'vagrant@localhost',
11
- 'key_files' => ENV['key_files'] || '/root/.ssh/id_rsa',
12
- 'logger' => Logger.new(STDOUT),
13
- }
14
-
15
- backend_conf['target'] = 'ssh://' + backend_conf['target']
16
- backend_conf['logger'].level = \
17
- if ENV.key?('debug')
18
- case ENV['debug'].to_s
19
- when /^false$/i, /^0$/i
20
- Logger::INFO
21
- else
22
- Logger::DEBUG
23
- end
24
- else
25
- Logger::INFO
26
- end
27
-
28
- backends[:ssh] = proc { |*args|
29
- conf = Train.target_config(backend_conf)
30
- Train.create('ssh', conf).connection(args[0])
31
- }
32
-
33
- tests = ARGV
34
-
35
- backends.each do |type, get_backend|
36
- tests.each do |test|
37
- instance_eval(File.read(test), test, 1)
38
- end
39
- end