poise-archive 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.kitchen.yml +3 -0
  4. data/.travis.yml +22 -0
  5. data/.yardopts +7 -0
  6. data/CHANGELOG.md +5 -0
  7. data/Gemfile +34 -0
  8. data/LICENSE +201 -0
  9. data/README.md +79 -0
  10. data/Rakefile +17 -0
  11. data/lib/poise_archive/archive_providers/base.rb +103 -0
  12. data/lib/poise_archive/archive_providers/tar.rb +121 -0
  13. data/lib/poise_archive/archive_providers/zip.rb +30 -0
  14. data/lib/poise_archive/archive_providers.rb +34 -0
  15. data/lib/poise_archive/cheftie.rb +18 -0
  16. data/lib/poise_archive/resources/poise_archive.rb +80 -0
  17. data/lib/poise_archive/resources.rb +26 -0
  18. data/lib/poise_archive/version.rb +20 -0
  19. data/lib/poise_archive.rb +21 -0
  20. data/poise-archive.gemspec +40 -0
  21. data/test/cookbook/files/myapp-1.0.0.tar +0 -0
  22. data/test/cookbook/files/myapp-1.0.0.tar.bz2 +0 -0
  23. data/test/cookbook/files/myapp-1.0.0.tar.gz +0 -0
  24. data/test/cookbook/files/myapp-1.0.0.zip +0 -0
  25. data/test/cookbook/metadata.rb +18 -0
  26. data/test/cookbook/recipes/default.rb +84 -0
  27. data/test/docker/docker.ca +29 -0
  28. data/test/docker/docker.pem +83 -0
  29. data/test/gemfiles/chef-12.1.gemfile +19 -0
  30. data/test/gemfiles/chef-12.2.gemfile +19 -0
  31. data/test/gemfiles/chef-12.3.gemfile +19 -0
  32. data/test/gemfiles/chef-12.4.gemfile +21 -0
  33. data/test/gemfiles/chef-12.5.gemfile +19 -0
  34. data/test/gemfiles/chef-12.6.gemfile +19 -0
  35. data/test/gemfiles/chef-12.gemfile +19 -0
  36. data/test/gemfiles/master.gemfile +25 -0
  37. data/test/integration/default/serverspec/default_spec.rb +66 -0
  38. data/test/spec/archive_providers/tar_spec.rb +134 -0
  39. data/test/spec/archive_providers/zip_spec.rb +32 -0
  40. data/test/spec/resources/poise_archive_spec.rb +87 -0
  41. data/test/spec/spec_helper.rb +19 -0
  42. metadata +148 -0
@@ -0,0 +1,29 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFCzCCAvOgAwIBAgIJAJTJgn9tSdKmMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNV
3
+ BAMTAkNBMB4XDTE1MDExMjIwMjk0M1oXDTI1MDEwOTIwMjk0M1owDTELMAkGA1UE
4
+ AxMCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDDPFn79sz1kQLk
5
+ rAS5z/zfCMXuE+V9IEmGXJeSprsXrv+AdjFpVDr52lpvZ36i2gixk8grcWtFqQMC
6
+ jB1c2HUe69ebC89rHSPmGCx5eRcWQPQG29fdH/nC+I34EbYadJB7PdzkvTj0KuN8
7
+ YfQj6lhwqltYiELZhuGoXcuhwZ5SC4VcJ2cdvx7oQPECLlMft8dhWyk15WGhp0jL
8
+ 2H5noGajz9IFzHieoKJyh+oYA3BYCugpNBLTweNw+NuRxMwHixftvkXvlqKeZ402
9
+ 4iwmIO8MG9oUxXs6D85gv6tJOau+dD1EDYH9VzYwSvLto3QBzJX0NiHKlmeq4BG2
10
+ 1V3n+N1kZmMDgEtX2TDFsGHlUo77Gw0ob/w7qJU+7GAXRwWw7TPhMBLSkOlGM726
11
+ Lq9p5+7mK1YThk0PmlsSAU6/fT79PSdrYpTKr3WkBTnwd76df+Koh8fpN4BHf9L4
12
+ 9bWSYc9Nb9/wp0md9xhzjjVHargpVxZmNH7bcIa8YA9tYaW+oifo2hfb7o0qhGQ1
13
+ 8pES3LPUi/qtZkBYUQdh8/mkqTvRjeS446iUmYWcrHyiIzQk/cMbrAVYOi3Xnq0J
14
+ ui/r48iv7uLhpcDEQl2mENr0syygrPthVKa4gYHAZ0tK3pfe0yUGMiwS2D23xMR4
15
+ WYLWLwYSK0j1JYpEbsBNS3wZX91FIwIDAQABo24wbDAdBgNVHQ4EFgQU1j2CHhNt
16
+ sWAvDmu49yRFfHRBp9kwPQYDVR0jBDYwNIAU1j2CHhNtsWAvDmu49yRFfHRBp9mh
17
+ EaQPMA0xCzAJBgNVBAMTAkNBggkAlMmCf21J0qYwDAYDVR0TBAUwAwEB/zANBgkq
18
+ hkiG9w0BAQUFAAOCAgEAD7apefon65k3Xey7vsTb/A18m7JwBNLB48ILNcSKVgO1
19
+ iuSMCGNQ+4bNU4o9cTpRoijB3w4RY7IIaDlRcUg8FIO6kgEhjhiAjSSqJAaajOFc
20
+ urxOmi9E7xYmTDqLxEGF5/5vaG4olAi3tRgZNd2+Ue0ANZ1KMh3ZkE0nA5v1zb/g
21
+ Ax/Zs6tATdoG6umMQg8TjiKucwi9J9he+xJ5y0E77/RrdNL9aKcU47wTAwUkokpb
22
+ u1JFo1da3yZLDwQuBN5DCc4pgPgxXlfa6DnzQM1veKIhP5sa9T4sCC8S4IjGFenw
23
+ yl4xm+9AOZQeLFpczqgVJhun5P41syepnZ433hWoLXKLHd1n0ILgw9JyVF686LIt
24
+ bSar3+krmFuzdRCfet0kJR762p8jmxJOwL+KQGELGlkleJK48a+ruWIeeulZhpJ5
25
+ tF4QJxytq4aXpjeFma0Yi/0rQuNi3H1QIW5YPnFL0XlJ8Rvr8gSVc1zhkM9rsnxX
26
+ l9Pun0flP/mf/ulOa020hQUPqEYjSfdJOkLy2gZDvHRL2LRXNjGHoteGNJCq34Q1
27
+ wQerxofHn+Hpp61+Ebj+RLK0KJE+QeP3T8rL30aSSzQZQZJVI0ict5C71kiTbQnw
28
+ Z0vE6LquvFfMSqfPLt6uuCRVywBjLx19B7TuMf/DgAD+lR+1FFGKy1hO2Q1jfCY=
29
+ -----END CERTIFICATE-----
@@ -0,0 +1,83 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFBjCCAu6gAwIBAgIBKTANBgkqhkiG9w0BAQUFADANMQswCQYDVQQDEwJDQTAe
3
+ Fw0xNjAzMjEyMTI5MDdaFw0yNjAzMTkyMTI5MDdaMGcxKDAmBgNVBAMTH0RvY2tl
4
+ ciBjbGllbnQgZm9yIHBvaXNlLWFyY2hpdmUxFzAVBgNVBAsTDmtpdGNoZW4tZG9j
5
+ a2VyMSIwIAYDVQQKExlDb2RlcmFuZ2VyIENvbnN1bHRpbmcgTExDMIICIjANBgkq
6
+ hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxdOXGfJDlj2avkt3BUUfMj1zeqG5lVIP
7
+ mXb3HgfwjOJykE5exkVaBJsaJm6VKAloci8c/22Yqv9muHQpUDKbLYfqlsgBB2Ws
8
+ POpbN7VYreGUvzjy1vo6KJWW8DJJfkPNcsq9ZuazsAyV/Ax1ssmjqAGIizvqgaox
9
+ eu97McPI4t5kKuGKySve8uGzpfC0d2sPlIydHKldWAFrUcs0wp862dz3TJqPLEbm
10
+ 6Sc/V+LBxIGicL9PlQW2rhpq3DoZdTUkmE6gNps4IcFPIWxvKY2Rmki/BfQvQtSb
11
+ aOXEpCvzSdL8iXfzfKQtpY9cIdNBsK6Q45qeI6Ec6RRsIjOM2MfKkqVho+qyZdgU
12
+ bg6WsROB+IPthCLyUECo7t1AzrZBQVWpbiIB92kX3Orv30Eq29Xr3cj1HnVJvwYM
13
+ Qe1VviURDWt7wQt79SK8TrvFDZTwdgbC/t+JawBh4ORyqeO6bcE6LZtCNtt5yqs4
14
+ b5XKayDttNZtix8T+OLMmDJMk9N7YJBvxo3AQC9Dd3KIrDjoZmvPjWU+RM93lRSK
15
+ +9YY6OMTPUzpU731+6hSB6GbpgwfLpHGunKd7M7LoXAQpQzNKyyNZ/WhczugrjET
16
+ Svk9nxXD9kPHK44VbYE+Wd19nJ4iS/L0LdArpLFxy/xWSQ4c0lNF1m/5ie26Dvsh
17
+ tRHHs6qIxmkCAwEAAaMXMBUwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcN
18
+ AQEFBQADggIBAI8ddajh/Jg5rTjh5ZskAzfyiqxIdirQ7VD3qPIwfpGYrsSX/WxJ
19
+ Rmsf0TXTE/uCwsxHaBgnXdXHvY4KyAuKDdLvfDQ/TUcXd0ck4Fb1icAk7nl/1EMg
20
+ vVXmkhBHeF4rAbZClZjl7hFByn9w5YIsMKcLc4Lfz1Cw2GQ5MTkaqfsTKtwIa+Oo
21
+ Qd34VL7/QSQzwPdO65kI6Y8JHMePWd5LnN56m4X+9HWKbUshcO/BB+/TVaoLN4QC
22
+ /tmGbqvri6C4BssUVuEorXHCqBTJY8pnsElXfPzOd9PhY8mYcjC10Gw6kJGLKZ/A
23
+ 5Gisz0zCLtSRaaAUb3SiYdTTl3wVJ5Ha/m/40E6YnC1/E+09esywp067/x84lWjA
24
+ o4SA4BoegTB4PlHUOHERFsJ2iAiaosTQv6+YYbEUrLn29l/4dVaMd4cmgkFEDI2g
25
+ ivk4NRDGw6NF0oBFHVGq/oEN4qcSYnPJdtQaaq8du0gTSsCyx6Atae4gv0l5qWnB
26
+ RfE6NqhpClacqu/ODIrXwIQQkAP/SbVsUJmTZSuS7rd4tF6J+NbDlxBTdmF9CuB5
27
+ OavzG/y5v+0fiOWyfG9tXwhfdVJyeT2VuZysgDedFUc71tVnRfGQwcDuwdL7n9y5
28
+ i0ynm9/2bbAeCjIha2+2PIClXXYWRawiR9fH3dzeZAETh/89HskO+RFc
29
+ -----END CERTIFICATE-----
30
+ -----BEGIN RSA PRIVATE KEY-----
31
+ Proc-Type: 4,ENCRYPTED
32
+ DEK-Info: AES-256-CBC,029E66FD74E24E9BB59712990EE99341
33
+
34
+ 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
83
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.1.2'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.2.1'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.3.0'
@@ -0,0 +1,21 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.4.3'
20
+ # Pending https://github.com/berkshelf/ridley/pull/335
21
+ gem 'ridley', '4.4.1'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.5.1'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.6.0'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.6'
@@ -0,0 +1,25 @@
1
+ #
2
+ # Copyright 2015-2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', github: 'chef/chef'
20
+ gem 'halite', github: 'poise/halite'
21
+ gem 'poise', github: 'poise/poise'
22
+ gem 'poise-boiler', github: 'poise/poise-boiler'
23
+ # gem 'poise-languages', github: 'poise/poise-languages'
24
+ gem 'poise-profiler', github: 'poise/poise-profiler'
25
+ gem 'poise-service', github: 'poise/poise-service'
@@ -0,0 +1,66 @@
1
+ #
2
+ # Copyright 2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'serverspec'
18
+ set :backend, :exec
19
+
20
+ RSpec.shared_examples 'a poise_archive test' do |ext|
21
+ base = "/test/#{ext}"
22
+
23
+ describe file("#{base}/LICENSE") do
24
+ its(:content) { is_expected.to eq "This is in the public domain.\n" }
25
+ end
26
+ describe file("#{base}/README") do
27
+ its(:content) { is_expected.to eq "This is a project!\n\n" }
28
+ end
29
+ describe file("#{base}/src/main.c") do
30
+ it { is_expected.to be_a_file }
31
+ end
32
+ describe file("#{base}_0/myapp-1.0.0/src/main.c") do
33
+ it { is_expected.to be_a_file }
34
+ end
35
+ describe file("#{base}_2/main.c") do
36
+ it { is_expected.to be_a_file }
37
+ end
38
+ end
39
+
40
+ describe 'tar' do
41
+ it_should_behave_like 'a poise_archive test', 'tar'
42
+ end
43
+
44
+ describe 'tar.gz' do
45
+ it_should_behave_like 'a poise_archive test', 'tar.gz'
46
+ end
47
+
48
+ describe 'tar.bz2' do
49
+ it_should_behave_like 'a poise_archive test', 'tar.bz2'
50
+ end
51
+
52
+ describe 'core features' do
53
+ describe file('/test/user') do
54
+ it { is_expected.to be_owned_by 'poise' }
55
+ it { is_expected.to be_mode '700' }
56
+ end
57
+ describe file('/test/user/README') do
58
+ it { is_expected.to be_owned_by 'poise' }
59
+ end
60
+ describe file('/test/keep/EXISTING') do
61
+ it { is_expected.to be_a_file }
62
+ end
63
+ describe file('/test/existing/EXISTING') do
64
+ it { is_expected.to_not exist }
65
+ end
66
+ end
@@ -0,0 +1,134 @@
1
+ #
2
+ # Copyright 2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'spec_helper'
18
+
19
+ describe PoiseArchive::ArchiveProviders::Tar do
20
+ step_into(:poise_archive)
21
+
22
+ describe '#action_unpack' do
23
+ let(:tar_cmd) { [] }
24
+ let(:archive_provider) { chef_run.poise_archive('myapp').provider_for_action(:unpack) }
25
+ before do
26
+ allow(described_class).to receive(:mktmpdir).and_yield('/test')
27
+ allow(Dir).to receive(:entries).and_call_original
28
+ allow(Dir).to receive(:entries).with('/root/myapp').and_return([])
29
+ expect_any_instance_of(described_class).to receive(:poise_shell_out!).with(tar_cmd, cwd: '/test', group: nil, user: nil)
30
+ expect_any_instance_of(described_class).to receive(:entries_at_depth).with('/test', 1).and_return(%w{/test/myapp/bin /test/myapp/src})
31
+ expect(File).to receive(:rename).with('/test/myapp/bin', '/root/myapp/bin')
32
+ expect(File).to receive(:rename).with('/test/myapp/src', '/root/myapp/src')
33
+ end
34
+
35
+ context 'with a .tar path' do
36
+ let(:tar_cmd) { %w{tar -xvf /root/myapp.tar} }
37
+ recipe do
38
+ poise_archive 'myapp' do
39
+ path '/root/myapp.tar'
40
+ end
41
+ end
42
+
43
+ it { expect(archive_provider).to be_a described_class }
44
+ end # /context with a .tar path
45
+
46
+ context 'with a .tar.gz path' do
47
+ let(:tar_cmd) { %w{tar -xzvf /root/myapp.tar.gz} }
48
+ recipe do
49
+ poise_archive 'myapp' do
50
+ path '/root/myapp.tar.gz'
51
+ end
52
+ end
53
+
54
+ it { expect(archive_provider).to be_a described_class }
55
+ end # /context with a .tar.gz path
56
+
57
+ context 'with a .tar.bz path' do
58
+ let(:tar_cmd) { %w{tar -xjvf /root/myapp.tar.bz} }
59
+ recipe do
60
+ poise_archive 'myapp' do
61
+ path '/root/myapp.tar.bz'
62
+ end
63
+ end
64
+
65
+ it { expect(archive_provider).to be_a described_class }
66
+ end # /context with a .tar.bz path
67
+
68
+ context 'with a .tar.bz2 path' do
69
+ let(:tar_cmd) { %w{tar -xjvf /root/myapp.tar.bz2} }
70
+ recipe do
71
+ poise_archive 'myapp' do
72
+ path '/root/myapp.tar.bz2'
73
+ end
74
+ end
75
+
76
+ it { expect(archive_provider).to be_a described_class }
77
+ end # /context with a .tar.bz2 path
78
+
79
+ context 'with a .tgz path' do
80
+ let(:tar_cmd) { %w{tar -xzvf /root/myapp.tgz} }
81
+ recipe do
82
+ poise_archive 'myapp' do
83
+ path '/root/myapp.tgz'
84
+ end
85
+ end
86
+
87
+ it { expect(archive_provider).to be_a described_class }
88
+ end # /context with a .tgz path
89
+
90
+ context 'with a .tbz path' do
91
+ let(:tar_cmd) { %w{tar -xjvf /root/myapp.tbz} }
92
+ recipe do
93
+ poise_archive 'myapp' do
94
+ path '/root/myapp.tbz'
95
+ end
96
+ end
97
+
98
+ it { expect(archive_provider).to be_a described_class }
99
+ end # /context with a .tbz path
100
+ end # /describe #action_unpack
101
+
102
+ describe '#entries_at_depth' do
103
+ let(:depth) { nil }
104
+ subject { described_class.new(nil, nil).send(:entries_at_depth, '/test', depth) }
105
+ before do
106
+ allow(Dir).to receive(:entries).and_call_original
107
+ allow(Dir).to receive(:entries).with('/test').and_return(%w{. .. a b})
108
+ allow(Dir).to receive(:entries).with('/test/a').and_return(%w{. .. aa ab})
109
+ allow(Dir).to receive(:entries).with('/test/a/aa').and_return(%w{. .. aaa})
110
+ allow(Dir).to receive(:entries).with('/test/a/ab').and_return(%w{. .. aba abb})
111
+ allow(File).to receive(:directory?).and_call_original
112
+ allow(File).to receive(:directory?).with('/test').and_return(true)
113
+ allow(File).to receive(:directory?).with('/test/a').and_return(true)
114
+ allow(File).to receive(:directory?).with('/test/b').and_return(false)
115
+ allow(File).to receive(:directory?).with('/test/a/aa').and_return(true)
116
+ allow(File).to receive(:directory?).with('/test/a/ab').and_return(true)
117
+ end
118
+
119
+ context 'with depth 0' do
120
+ let(:depth) { 0 }
121
+ it { is_expected.to eq %w{/test/a /test/b} }
122
+ end # /context with depth 0
123
+
124
+ context 'with depth 1' do
125
+ let(:depth) { 1 }
126
+ it { is_expected.to eq %w{/test/a/aa /test/a/ab} }
127
+ end # /context with depth 1
128
+
129
+ context 'with depth 2' do
130
+ let(:depth) { 2 }
131
+ it { is_expected.to eq %w{/test/a/aa/aaa /test/a/ab/aba /test/a/ab/abb} }
132
+ end # /context with depth 2
133
+ end # /describe #entries_at_depth
134
+ end