suppository 0.0.2

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 (54) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +76 -0
  3. data/.rubocop.yml +5 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +19 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +30 -0
  8. data/LICENSE.txt +674 -0
  9. data/README.md +103 -0
  10. data/Rakefile +34 -0
  11. data/bin/suppository +36 -0
  12. data/fixtures/curl_7.22.0-3ubuntu4.11_amd64.deb +0 -0
  13. data/fixtures/vim_7.3.547-7_amd64.deb +0 -0
  14. data/lib/suppository/add_command.rb +116 -0
  15. data/lib/suppository/checksummed.rb +24 -0
  16. data/lib/suppository/cli.rb +26 -0
  17. data/lib/suppository/command_runner.rb +30 -0
  18. data/lib/suppository/create_command.rb +75 -0
  19. data/lib/suppository/dpkg_deb.rb +29 -0
  20. data/lib/suppository/dpkg_deb_line.rb +28 -0
  21. data/lib/suppository/exceptions.rb +20 -0
  22. data/lib/suppository/gzip.rb +14 -0
  23. data/lib/suppository/help.rb +22 -0
  24. data/lib/suppository/help_command.rb +13 -0
  25. data/lib/suppository/logger.rb +24 -0
  26. data/lib/suppository/master_deb.rb +62 -0
  27. data/lib/suppository/package.rb +23 -0
  28. data/lib/suppository/release.rb +57 -0
  29. data/lib/suppository/repository.rb +16 -0
  30. data/lib/suppository/tty.rb +43 -0
  31. data/lib/suppository/version.rb +3 -0
  32. data/lib/suppository/version_command.rb +12 -0
  33. data/lib/suppository.rb +5 -0
  34. data/spec/spec_helper.rb +55 -0
  35. data/spec/suppository/add_command_spec.rb +141 -0
  36. data/spec/suppository/cli_spec.rb +50 -0
  37. data/spec/suppository/command_runner_spec.rb +26 -0
  38. data/spec/suppository/create_command_spec.rb +80 -0
  39. data/spec/suppository/dpkg_deb_line_spec.rb +36 -0
  40. data/spec/suppository/dpkg_deb_spec.rb +65 -0
  41. data/spec/suppository/gzip_spec.rb.rb +22 -0
  42. data/spec/suppository/help_command_spec.rb +13 -0
  43. data/spec/suppository/help_spec.rb +12 -0
  44. data/spec/suppository/logger_spec.rb +64 -0
  45. data/spec/suppository/master_deb_spec.rb +84 -0
  46. data/spec/suppository/package_spec.rb +63 -0
  47. data/spec/suppository/release_spec.rb +70 -0
  48. data/spec/suppository/repository_spec.rb +53 -0
  49. data/spec/suppository/tty_spec.rb +92 -0
  50. data/spec/suppository/version_command_spec.rb +13 -0
  51. data/spec/suppository/version_spec.rb +13 -0
  52. data/spec/suppository_spec.rb +83 -0
  53. data/suppository.gemspec +34 -0
  54. metadata +286 -0
@@ -0,0 +1,64 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/logger'
4
+
5
+ describe Suppository::Logger do
6
+
7
+ describe 'log_error' do
8
+
9
+ it "decorated output tty? true" do
10
+ expect($stdout).to receive(:tty?).twice.and_return(true)
11
+ expect($stderr).to receive(:puts).with("\e[4;31mError\e[0m: Boom")
12
+ Suppository::Logger.log_error "Boom"
13
+ end
14
+
15
+ it "simple output if tty? false" do
16
+ expect($stdout).to receive(:tty?).twice.and_return(false)
17
+ expect($stderr).to receive(:puts).with("Error: Boom")
18
+ Suppository::Logger.log_error "Boom"
19
+ end
20
+
21
+ end
22
+
23
+ describe 'log_error' do
24
+
25
+ it "print to standard out" do
26
+ expect(Suppository::Logger).to receive(:puts).with('Info Message')
27
+ Suppository::Logger.log_info 'Info Message'
28
+ end
29
+
30
+ end
31
+
32
+ describe 'log_verbose' do
33
+
34
+ it "decorated output tty? true" do
35
+ expect($stdout).to receive(:tty?).twice.and_return(true)
36
+ expect(Suppository::Logger).to receive(:puts).with("\e[1;30mVerbose Message\e[0m")
37
+ Suppository::Logger.log_verbose 'Verbose Message'
38
+ end
39
+
40
+ it "simple output if tty? false" do
41
+ expect($stdout).to receive(:tty?).twice.and_return(false)
42
+ expect(Suppository::Logger).to receive(:puts).with('Verbose Message')
43
+ Suppository::Logger.log_verbose 'Verbose Message'
44
+ end
45
+
46
+ end
47
+
48
+ describe 'log_success' do
49
+
50
+ it "decorated output tty? true" do
51
+ expect($stdout).to receive(:tty?).exactly(3).times.and_return(true)
52
+ expect(Suppository::Logger).to receive(:puts).with("\e[1;32m==>\e[1;39m Success Message\e[0m")
53
+ Suppository::Logger.log_success 'Success Message'
54
+ end
55
+
56
+ it "simple output if tty? false" do
57
+ expect($stdout).to receive(:tty?).exactly(3).times.and_return(false)
58
+ expect(Suppository::Logger).to receive(:puts).with('==> Success Message')
59
+ Suppository::Logger.log_success 'Success Message'
60
+ end
61
+
62
+ end
63
+
64
+ end
@@ -0,0 +1,84 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/master_deb'
4
+ require 'suppository/dpkg_deb'
5
+ require 'suppository/repository'
6
+
7
+ describe Suppository::MasterDeb do
8
+
9
+ before(:all) do
10
+ @valid_file_name = 'e5ca0a9797acda4bfe8404524f0976b3_b37ce9b17405d93c323c0b8bbe167c6f2dccfe02_5a315c56bc34f1ffed365f9aa50bbb36916e5a8fae8614f00d952983d4316555.deb'
11
+ end
12
+
13
+ before(:each) do
14
+ @repository = Suppository::Repository.new "/tmp/supposotory_test_#{Time.now.to_f}"
15
+ master_deb_file = "#{@repository.suppository}/#{@valid_file_name}"
16
+ FileUtils.mkdir_p @repository.suppository
17
+ FileUtils.cp deb_file, master_deb_file
18
+ @instance = Suppository::MasterDeb.new(master_deb_file)
19
+ end
20
+
21
+
22
+ after(:each) do
23
+ FileUtils.rm_r @repository.path
24
+ end
25
+
26
+ describe 'valid file' do
27
+
28
+ it "md5sum" do
29
+ expect(@instance.md5sum).to eql 'e5ca0a9797acda4bfe8404524f0976b3'
30
+ end
31
+
32
+ it "sha1" do
33
+ expect(@instance.sha1).to eql 'b37ce9b17405d93c323c0b8bbe167c6f2dccfe02'
34
+ end
35
+
36
+ it "sha256" do
37
+ expect(@instance.sha256).to eql '5a315c56bc34f1ffed365f9aa50bbb36916e5a8fae8614f00d952983d4316555'
38
+ end
39
+
40
+ it "size" do
41
+ expect(@instance.size).to eql 137640
42
+ end
43
+ end
44
+
45
+
46
+ describe 'invalid file' do
47
+
48
+ it "checks file is in correct folder" do
49
+ master_deb_file = "/tmp/repo123/#{@valid_file_name}"
50
+ exception = nil
51
+ begin
52
+ Suppository::MasterDeb.new(master_deb_file)
53
+ rescue InvalidMasterDeb => e
54
+ exception = e
55
+ end
56
+
57
+ expect(exception.message).to be_eql 'Master deb must be in the .suppository folder'
58
+ end
59
+
60
+ it "checks file has correct name" do
61
+ master_deb_file = '/tmp/repo123/.suppository/123456_78910.deb'
62
+ exception = nil
63
+ begin
64
+ Suppository::MasterDeb.new(master_deb_file)
65
+ rescue InvalidMasterDeb => e
66
+ exception = e
67
+ end
68
+
69
+ expect(exception.message).to be_eql 'Master deb must have the following name {md5}_{sha1}_{sha256}.deb'
70
+ end
71
+
72
+ end
73
+
74
+ it "gets attribute" do
75
+ expect(@instance.full_attr['Package']).to eql 'curl'
76
+ end
77
+
78
+ it "filename" do
79
+ expect(@instance.filename).to eql 'curl_7.22.0-3ubuntu4.11_amd64.deb'
80
+ end
81
+
82
+ end
83
+
84
+
@@ -0,0 +1,63 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/package'
4
+ require 'suppository/master_deb'
5
+
6
+ describe Suppository::Package do
7
+
8
+ EXPECTED_DESCRIPTION = <<-EOS
9
+ Description: Get a file from an HTTP, HTTPS or FTP server curl is a client to get files from servers using any of the supported
10
+ protocols. The command is designed to work without user interaction
11
+ or any kind of interactivity.
12
+ .
13
+ curl offers a busload of useful tricks like proxy support, user
14
+ authentication, FTP upload, HTTP post, file transfer resume and more.
15
+
16
+ EOS
17
+ package_info = {
18
+ 'Package' => 'curl',
19
+ 'Version' => '7.22.0-3ubuntu4.11',
20
+ 'Architecture' => 'amd64',
21
+ 'Maintainer' => 'Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>',
22
+ 'Installed-Size' => '3450',
23
+ 'MD5sum' => 'e5ca0a9797acda4bfe8404524f0976b3',
24
+ 'SHA1' => 'b37ce9b17405d93c323c0b8bbe167c6f2dccfe02',
25
+ 'SHA256' => '5a315c56bc34f1ffed365f9aa50bbb36916e5a8fae8614f00d952983d4316555',
26
+ 'Section' => 'web',
27
+ 'Priority' => 'optional',
28
+ 'Homepage' => 'http://www.test.com/',
29
+ 'Description' => "Get a file from an HTTP, HTTPS or FTP server curl is a client to get files from servers using any of the supported\n protocols. The command is designed to work without user interaction\n or any kind of interactivity.\n .\n curl offers a busload of useful tricks like proxy support, user\n authentication, FTP upload, HTTP post, file transfer resume and more.",
30
+ 'Size' => '345'
31
+ }
32
+
33
+ before(:each) do
34
+ deb = double(Suppository::MasterDeb)
35
+ @instance = Suppository::Package.new('dists/trusty/internal/binary-amd64',deb)
36
+ expect(deb).to receive(:filename) { 'curl_7.22.0-3ubuntu4.11_amd64.deb' }
37
+ expect(deb).to receive(:full_attr) { package_info }
38
+ end
39
+
40
+
41
+ it "Outputs the Package" do
42
+ desc = ''
43
+ in_desc = false
44
+ @instance.content.split("\n").each do |line|
45
+ k, v = line.split(': ')
46
+ if k == 'Description' || in_desc
47
+ in_desc = true
48
+ elsif k == 'Filename'
49
+ expect(v).to eql 'dists/trusty/internal/binary-amd64/curl_7.22.0-3ubuntu4.11_amd64.deb'
50
+ else
51
+ expect(package_info.key?(k)).to be_truthy
52
+ expect(package_info.value?(v)).to be_truthy
53
+ end
54
+
55
+ desc += line << "\n" if in_desc
56
+ end
57
+ desc << "\n"
58
+ expect(desc).to eql EXPECTED_DESCRIPTION
59
+ end
60
+
61
+ end
62
+
63
+
@@ -0,0 +1,70 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/release'
4
+ require 'suppository/create_command'
5
+
6
+ describe Suppository::Release do
7
+
8
+ RELEASE_CONTENT = <<-EOS
9
+ Codename: lucid
10
+ Architectures: amd64 i386
11
+ Components: internal
12
+ Date: Tue, 06 Jan 2015 00:43:13 GMT
13
+ MD5Sum:
14
+ d41d8cd98f00b204e9800998ecf8427e 0 dists/lucid/internal/binary-amd64/Packages
15
+ 2f3e2442476f5464c314716ef684c02c 103 dists/lucid/internal/binary-amd64/Packages.gz
16
+ d41d8cd98f00b204e9800998ecf8427e 0 dists/lucid/internal/binary-i386/Packages
17
+ 7c0c23a67294ee276556e2f7f0ad5bc2 102 dists/lucid/internal/binary-i386/Packages.gz
18
+ SHA1:
19
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 dists/lucid/internal/binary-amd64/Packages
20
+ 3e9ac8f4be976f1c6a52c13a3a251dfec7c204e7 103 dists/lucid/internal/binary-amd64/Packages.gz
21
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 dists/lucid/internal/binary-i386/Packages
22
+ 14934aa27c0ea7148d5b94b0ff3c769cfa59a297 102 dists/lucid/internal/binary-i386/Packages.gz
23
+ SHA256:
24
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 dists/lucid/internal/binary-amd64/Packages
25
+ bce970b56be93d9280b806bf630b3c85332293212002dcb38eb9911c6dcd725c 103 dists/lucid/internal/binary-amd64/Packages.gz
26
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 dists/lucid/internal/binary-i386/Packages
27
+ 6e2679e057b8b9fa202677d114914fb9d67d378445449983fc432c27becedc38 102 dists/lucid/internal/binary-i386/Packages.gz
28
+ SHA512:
29
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 dists/lucid/internal/binary-amd64/Packages
30
+ 8c5a6c5573e2b5e6e187cb8aa85a7d5cdbc941ba2dfbc705fb33404a643d5ddee64014a4a9d094151400ce4ac58946bff52e53e4b922485f06405637ab9e080b 103 dists/lucid/internal/binary-amd64/Packages.gz
31
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 dists/lucid/internal/binary-i386/Packages
32
+ 2a977dcc902cb6105c5981d114fb5759b8bd3a0805b30d70b2b519ad17fed233a1bd62b5b705b187ac31ea6e3def0fa598c0731281e8be2de513757d5190be14 102 dists/lucid/internal/binary-i386/Packages.gz
33
+
34
+ EOS
35
+
36
+
37
+ before(:each) do
38
+ @repo_path = "/tmp/suppository_test_#{Time.now.to_f}"
39
+ @dist = 'lucid'
40
+ @instance = Suppository::Release.new(@repo_path, @dist, true)
41
+ Suppository::CreateCommand.new([@repo_path]).run
42
+ @release_file = "#{@repo_path}/dists/#{@dist}/Release"
43
+ @release_file_gpg = "#{@release_file}.gpg"
44
+ end
45
+
46
+ after(:each) do
47
+ FileUtils.rm_r @repo_path if File.exist? @repo_path
48
+ end
49
+
50
+ it "creates file" do
51
+ @instance.create
52
+ expect(File.exists?(@release_file)).to eql true
53
+ end
54
+
55
+ it "unsigned" do
56
+ @instance.create
57
+ expect(File.exists?(@release_file_gpg)).to eql false
58
+ end
59
+
60
+ it "signed" do
61
+ command_runner = double(Suppository::CommandRunner)
62
+ args = "-abs -o #{@release_file_gpg} #{@release_file}"
63
+ expect(Suppository::CommandRunner).to receive(:new).with('gpg',args) {command_runner}
64
+ expect(command_runner).to receive(:run) {FileUtils.touch(@release_file_gpg)}
65
+
66
+ @instance = Suppository::Release.new(@repo_path, @dist)
67
+ @instance.create
68
+ expect(File.exists?(@release_file_gpg)).to eql true
69
+ end
70
+ end
@@ -0,0 +1,53 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/repository'
4
+
5
+ describe Suppository::Repository do
6
+
7
+ before(:each) do
8
+ @repository = Suppository::Repository.new("/tmp/repo123")
9
+ @dists = %w(natty lucid precise saucy trusty)
10
+ @archs = %w(amd64 i386)
11
+ @suppository ="/tmp/repo123/.suppository"
12
+ end
13
+
14
+ after(:each) do
15
+ FileUtils.rm_r @repository.path if File.exist? @repository.path
16
+ end
17
+
18
+ it "has a path" do
19
+ expect(@repository.path).to eql "/tmp/repo123"
20
+ end
21
+
22
+ it "converts relative path to absolute" do
23
+ repository = Suppository::Repository.new("./repo123")
24
+ expect(repository.path).to eql File.expand_path('./repo123')
25
+ end
26
+
27
+ it "has a dists" do
28
+ expect(@repository.dists).to eql @dists
29
+ end
30
+
31
+ it "has a archs" do
32
+ expect(@repository.archs).to eql @archs
33
+ end
34
+
35
+ it "has a suppository" do
36
+ expect(@repository.suppository).to eql @suppository
37
+ end
38
+
39
+ describe 'exist?' do
40
+
41
+ it "false" do
42
+ expect(@repository.exist?).to be_falsy
43
+ end
44
+
45
+ it "true" do
46
+ FileUtils.mkdir_p @suppository
47
+ expect(@repository.exist?).to be_truthy
48
+ end
49
+ end
50
+
51
+
52
+ end
53
+
@@ -0,0 +1,92 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/tty'
4
+
5
+ describe Suppository::Tty do
6
+
7
+ describe 'gray' do
8
+
9
+ it "Outputs returns nothing if not running in tty" do
10
+ expect($stdout).to receive(:tty?).and_return(false)
11
+ expect(Suppository::Tty.gray).to be_nil
12
+ end
13
+
14
+ it "Returns if running in tty" do
15
+ expect($stdout).to receive(:tty?).and_return(true)
16
+ expect(Suppository::Tty.gray).to eql "\e[1;30m"
17
+ end
18
+
19
+ end
20
+
21
+ describe 'white' do
22
+
23
+ it "Outputs returns nothing if not running in tty" do
24
+ expect($stdout).to receive(:tty?).and_return(false)
25
+ expect(Suppository::Tty.white).to be_nil
26
+ end
27
+
28
+ it "Returns if running in tty" do
29
+ expect($stdout).to receive(:tty?).and_return(true)
30
+ expect(Suppository::Tty.white).to eql "\e[1;39m"
31
+ end
32
+
33
+ end
34
+
35
+ describe 'red' do
36
+
37
+ it "Outputs returns nothing if not running in tty" do
38
+ expect($stdout).to receive(:tty?).and_return(false)
39
+ expect(Suppository::Tty.red).to be_nil
40
+ end
41
+
42
+ it "Returns if running in tty" do
43
+ expect($stdout).to receive(:tty?).and_return(true)
44
+ expect(Suppository::Tty.red).to eql "\e[4;31m"
45
+ end
46
+
47
+ end
48
+
49
+ describe 'reset' do
50
+
51
+ it "Outputs returns nothing if not running in tty" do
52
+ expect($stdout).to receive(:tty?).and_return(false)
53
+ expect(Suppository::Tty.reset).to be_nil
54
+ end
55
+
56
+ it "Returns if running in tty" do
57
+ expect($stdout).to receive(:tty?).and_return(true)
58
+ expect(Suppository::Tty.reset).to eql "\e[0m"
59
+ end
60
+
61
+ end
62
+
63
+ describe 'green' do
64
+
65
+ it "Outputs returns nothing if not running in tty" do
66
+ expect($stdout).to receive(:tty?).and_return(false)
67
+ expect(Suppository::Tty.green).to be_nil
68
+ end
69
+
70
+ it "Returns if running in tty" do
71
+ expect($stdout).to receive(:tty?).and_return(true)
72
+ expect(Suppository::Tty.green).to eql "\e[1;32m"
73
+ end
74
+
75
+ end
76
+
77
+ describe 'em' do
78
+
79
+ it "Outputs returns nothing if not running in tty" do
80
+ expect($stdout).to receive(:tty?).and_return(false)
81
+ expect(Suppository::Tty.em).to be_nil
82
+ end
83
+
84
+ it "Returns if running in tty" do
85
+ expect($stdout).to receive(:tty?).and_return(true)
86
+ expect(Suppository::Tty.em).to eql "\e[4;39m"
87
+ end
88
+
89
+ end
90
+ end
91
+
92
+
@@ -0,0 +1,13 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/version_command'
4
+
5
+ describe Suppository::VersionCommand do
6
+
7
+ it "shows version number" do
8
+ command = Suppository::VersionCommand.new([])
9
+ expect{command.run}.to output("Suppository Version #{Suppository::VERSION}\n").to_stdout
10
+ end
11
+
12
+ end
13
+
@@ -0,0 +1,13 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/version'
4
+
5
+ describe Suppository do
6
+
7
+ it "has a version number" do
8
+ expect(Suppository::VERSION.length).to be > 0
9
+ end
10
+
11
+ end
12
+
13
+
@@ -0,0 +1,83 @@
1
+
2
+ require 'spec_helper'
3
+ require 'suppository/version'
4
+ require 'English'
5
+
6
+ describe 'suppository binary' do
7
+
8
+ before(:each) do
9
+ @cmd = File.expand_path('./bin/suppository')
10
+ @repository_path = "/tmp/suppository_test_#{Time.now.to_f}"
11
+ end
12
+
13
+ after(:each) do
14
+ FileUtils.rm_r @repository_path if File.directory? @repository_path
15
+ end
16
+
17
+ it 'fails if no command is given' do
18
+ output = `"#{@cmd}" 2>&1`
19
+ expect($CHILD_STATUS.success?).to be_falsy
20
+ expect(output).to include 'Error: Invalid usage'
21
+ end
22
+
23
+ describe 'create' do
24
+
25
+ it 'creates folder without error' do
26
+ `"#{@cmd}" create #{@repository_path}`
27
+ expect($CHILD_STATUS.success?).to be_truthy
28
+ expect(File.directory?("#{@repository_path}/dists")).to be_truthy
29
+ expect(File.directory?(@repository_path)).to be_truthy
30
+ expect(File.directory?("#{@repository_path}/.suppository")).to be_truthy
31
+ end
32
+
33
+ it 'fails if arguments invalid' do
34
+ output = `"#{@cmd}" create 2>&1`
35
+ expect($CHILD_STATUS.success?).to be_falsy
36
+ expect(output).to include 'Error: Invalid usage'
37
+ end
38
+
39
+ end
40
+
41
+ describe 'version' do
42
+
43
+ it 'runs without error' do
44
+ output = `"#{@cmd}" version`
45
+ expect($CHILD_STATUS.success?).to be_truthy
46
+ expect(output).to include "Suppository Version #{Suppository::VERSION}"
47
+ end
48
+
49
+ end
50
+
51
+ describe 'help' do
52
+
53
+ it 'runs without error' do
54
+ output = `"#{@cmd}" help`
55
+ expect($CHILD_STATUS.success?).to be_truthy
56
+ expect(output).to include "Example usage:"
57
+ end
58
+
59
+ end
60
+
61
+ describe 'add' do
62
+
63
+ it 'runs without error' do
64
+ `"#{@cmd}" create #{@repository_path}`
65
+ `"#{@cmd}" add #{@repository_path} trusty internal "#{deb_file}" --unsigned`
66
+ expect($CHILD_STATUS.success?).to be_truthy
67
+ expect(File.file?("#{@repository_path}/dists/trusty/internal/binary-amd64/curl_7.22.0-3ubuntu4.11_amd64.deb")).to be_truthy
68
+ expect(File.file?("#{@repository_path}/dists/trusty/internal/binary-i386/curl_7.22.0-3ubuntu4.11_amd64.deb")).to be_truthy
69
+ end
70
+
71
+ it 'fails if arguments invalid' do
72
+ output = `"#{@cmd}" add #{@repository_path} trusty internal "#{deb_file} --unsigned" 2>&1`
73
+ expect($CHILD_STATUS.success?).to be_falsy
74
+ expect(output).to include "Error: #{@repository_path} is not a valid repository"
75
+ end
76
+
77
+ it 'fails if signing attempted (assumes no certificate)' do
78
+ output = `"#{@cmd}" add #{@repository_path} trusty internal "#{deb_file}" 2>&1`
79
+ expect($CHILD_STATUS.success?).to be_falsy
80
+ expect(output).to include "Error: #{@repository_path} is not a valid repository"
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'suppository/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "suppository"
8
+ spec.version = Suppository::VERSION
9
+ spec.authors = ["William Griffiths", "Luke Farrar"]
10
+ spec.email = ["william.griffiths@thebookpeople.co.uk", "luke.farrar@thebookpeople.co.uk"]
11
+ spec.summary = %q{Super Simple Apt Repository Manager}
12
+ spec.description = %q{A utility for creating and managing simple apt repositories.}
13
+ spec.homepage = "https://github.com/TheBookPeople/suppository"
14
+ spec.license = "GNU"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "rake", "~> 10.4"
22
+ spec.add_development_dependency "bundler", '~> 1.7'
23
+ spec.add_development_dependency 'rspec', '~> 3.1'
24
+ spec.add_development_dependency 'guard-rspec','~> 4.5'
25
+ spec.add_development_dependency 'rb-inotify','~> 0.9'
26
+ spec.add_development_dependency 'rb-fsevent' ,'~> 0.9'
27
+ spec.add_development_dependency 'rb-fchange', '~> 0.0'
28
+ spec.add_development_dependency 'terminal-notifier-guard', '~> 1.6'
29
+ spec.add_development_dependency 'rubocop' , '~> 0.28'
30
+ spec.add_development_dependency 'fakefs', '~> 0'
31
+ spec.add_development_dependency 'simplecov', '~> 0.9'
32
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
33
+
34
+ end