poise-archive 1.0.0

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 (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