dpkg-tools 0.3.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.
- data/CHANGES +198 -0
- data/MIT-LICENSE +20 -0
- data/README +17 -0
- data/Rakefile +1 -0
- data/bin/dpkg-etc +6 -0
- data/bin/dpkg-gem +6 -0
- data/bin/dpkg-rails +6 -0
- data/lib/dpkg-tools.rb +6 -0
- data/lib/dpkg-tools/command_line.rb +142 -0
- data/lib/dpkg-tools/package.rb +30 -0
- data/lib/dpkg-tools/package/builder.rb +112 -0
- data/lib/dpkg-tools/package/config.rb +96 -0
- data/lib/dpkg-tools/package/control_files.rb +24 -0
- data/lib/dpkg-tools/package/control_files/base.rb +75 -0
- data/lib/dpkg-tools/package/control_files/changelog.rb +23 -0
- data/lib/dpkg-tools/package/control_files/control.rb +148 -0
- data/lib/dpkg-tools/package/control_files/copyright.rb +27 -0
- data/lib/dpkg-tools/package/control_files/rakefile.rb +28 -0
- data/lib/dpkg-tools/package/control_files/rules.rb +29 -0
- data/lib/dpkg-tools/package/data.rb +125 -0
- data/lib/dpkg-tools/package/etc.rb +26 -0
- data/lib/dpkg-tools/package/etc/builder.rb +19 -0
- data/lib/dpkg-tools/package/etc/control_files.rb +22 -0
- data/lib/dpkg-tools/package/etc/control_files/changelog.rb +30 -0
- data/lib/dpkg-tools/package/etc/control_files/rakefile.rb +18 -0
- data/lib/dpkg-tools/package/etc/data.rb +48 -0
- data/lib/dpkg-tools/package/etc/rake.rb +31 -0
- data/lib/dpkg-tools/package/etc/setup.rb +30 -0
- data/lib/dpkg-tools/package/fs_methods.rb +10 -0
- data/lib/dpkg-tools/package/gem.rb +43 -0
- data/lib/dpkg-tools/package/gem/builder.rb +77 -0
- data/lib/dpkg-tools/package/gem/control_files.rb +23 -0
- data/lib/dpkg-tools/package/gem/control_files/changelog.rb +19 -0
- data/lib/dpkg-tools/package/gem/control_files/copyright.rb +24 -0
- data/lib/dpkg-tools/package/gem/control_files/rakefile.rb +19 -0
- data/lib/dpkg-tools/package/gem/data.rb +115 -0
- data/lib/dpkg-tools/package/gem/gem_format.rb +10 -0
- data/lib/dpkg-tools/package/gem/rake.rb +37 -0
- data/lib/dpkg-tools/package/gem/setup.rb +159 -0
- data/lib/dpkg-tools/package/rails.rb +26 -0
- data/lib/dpkg-tools/package/rails/builder.rb +77 -0
- data/lib/dpkg-tools/package/rails/cap.rb +30 -0
- data/lib/dpkg-tools/package/rails/control_files.rb +22 -0
- data/lib/dpkg-tools/package/rails/control_files/changelog.rb +19 -0
- data/lib/dpkg-tools/package/rails/control_files/rakefile.rb +24 -0
- data/lib/dpkg-tools/package/rails/data.rb +160 -0
- data/lib/dpkg-tools/package/rails/rake.rb +40 -0
- data/lib/dpkg-tools/package/rails/setup.rb +84 -0
- data/lib/dpkg-tools/package/rake.rb +90 -0
- data/lib/dpkg-tools/package/setup.rb +145 -0
- data/lib/dpkg-tools/version.rb +23 -0
- data/spec/dpkg-tools/command_line_spec.rb +9 -0
- data/spec/dpkg-tools/package/builder_spec.rb +159 -0
- data/spec/dpkg-tools/package/config_spec.rb +150 -0
- data/spec/dpkg-tools/package/control_files/base_spec.rb +111 -0
- data/spec/dpkg-tools/package/control_files/changelog_spec.rb +22 -0
- data/spec/dpkg-tools/package/control_files/control_spec.rb +131 -0
- data/spec/dpkg-tools/package/control_files/copyright_spec.rb +29 -0
- data/spec/dpkg-tools/package/control_files/rakefile_spec.rb +37 -0
- data/spec/dpkg-tools/package/control_files/rules_spec.rb +16 -0
- data/spec/dpkg-tools/package/control_files_spec.rb +12 -0
- data/spec/dpkg-tools/package/data_spec.rb +115 -0
- data/spec/dpkg-tools/package/etc/builder_spec.rb +28 -0
- data/spec/dpkg-tools/package/etc/control_files/changelog_spec.rb +21 -0
- data/spec/dpkg-tools/package/etc/control_files/rakefile_spec.rb +16 -0
- data/spec/dpkg-tools/package/etc/control_files_spec.rb +12 -0
- data/spec/dpkg-tools/package/etc/data_spec.rb +74 -0
- data/spec/dpkg-tools/package/etc/rake_spec.rb +71 -0
- data/spec/dpkg-tools/package/etc/setup_spec.rb +62 -0
- data/spec/dpkg-tools/package/etc_spec.rb +39 -0
- data/spec/dpkg-tools/package/fs_methods_spec.rb +33 -0
- data/spec/dpkg-tools/package/gem/builder_spec.rb +84 -0
- data/spec/dpkg-tools/package/gem/control_files/changelog_spec.rb +25 -0
- data/spec/dpkg-tools/package/gem/control_files/copyright_spec.rb +28 -0
- data/spec/dpkg-tools/package/gem/control_files/rakefile_spec.rb +17 -0
- data/spec/dpkg-tools/package/gem/control_files_spec.rb +12 -0
- data/spec/dpkg-tools/package/gem/data_spec.rb +176 -0
- data/spec/dpkg-tools/package/gem/gem_format_spec.rb +26 -0
- data/spec/dpkg-tools/package/gem/rake_spec.rb +102 -0
- data/spec/dpkg-tools/package/gem/setup_spec.rb +274 -0
- data/spec/dpkg-tools/package/gem_spec.rb +68 -0
- data/spec/dpkg-tools/package/rails/builder_spec.rb +113 -0
- data/spec/dpkg-tools/package/rails/cap_spec.rb +37 -0
- data/spec/dpkg-tools/package/rails/control_files/changelog_spec.rb +25 -0
- data/spec/dpkg-tools/package/rails/control_files/rakefile_spec.rb +24 -0
- data/spec/dpkg-tools/package/rails/control_files_spec.rb +12 -0
- data/spec/dpkg-tools/package/rails/data_spec.rb +178 -0
- data/spec/dpkg-tools/package/rails/rake_spec.rb +78 -0
- data/spec/dpkg-tools/package/rails/setup_spec.rb +152 -0
- data/spec/dpkg-tools/package/rails_spec.rb +27 -0
- data/spec/dpkg-tools/package/rake_spec.rb +87 -0
- data/spec/dpkg-tools/package/setup_spec.rb +247 -0
- data/spec/dpkg-tools/package_spec.rb +34 -0
- data/spec/fixtures/BlueCloth-1.0.0.gem +1190 -0
- data/spec/fixtures/database.yml +33 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +52 -0
- data/tasks/dist.rake +118 -0
- data/tasks/rspec.rake +21 -0
- metadata +165 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Etc::Builder, "instances" do
|
|
4
|
+
before(:each) do
|
|
5
|
+
@config = DpkgTools::Package::Config.new('rails-app', '1.0.8')
|
|
6
|
+
DpkgTools::Package::Etc::Data.expects(:load_package_data).with('/a/path/to/conf-package', 'deb.yml').
|
|
7
|
+
returns({'name' => 'conf-package', 'version' => '1.0.8'})
|
|
8
|
+
@data = DpkgTools::Package::Etc::Data.new('/a/path/to/conf-package')
|
|
9
|
+
|
|
10
|
+
@builder = DpkgTools::Package::Etc::Builder.new(@data)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should provide the correct options for DpkgTools::Package::Config " do
|
|
14
|
+
@builder.config_options.should == {:base_path => "/a/path/to/conf-package"}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should be able to create the needed install dirs" do
|
|
18
|
+
@builder.expects(:create_dir_if_needed).with('/a/path/to/conf-package/debian/tmp/etc')
|
|
19
|
+
|
|
20
|
+
@builder.create_install_dirs
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should copy the contents of package/etc to package/debian/tmp/etc/" do
|
|
24
|
+
FileUtils.expects(:cp_r).with('/a/path/to/conf-package/etc', '/a/path/to/conf-package/debian/tmp/etc')
|
|
25
|
+
|
|
26
|
+
@builder.install_package_files
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Etc::ControlFiles::Changelog, "#changelog" do
|
|
4
|
+
before(:each) do
|
|
5
|
+
@config = DpkgTools::Package::Config.new('rails-app', '1.0.8')
|
|
6
|
+
@stub_data = stub('DpkgTools::Package::Etc::Data', :full_name => 'rails-app-1.0.8', :debian_revision => '1')
|
|
7
|
+
@metadata = DpkgTools::Package::Etc::ControlFiles::Changelog.new(@stub_data, @config)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should be able to generate a changelog" do
|
|
11
|
+
changelog_fixture = {'date' => "2008-04-16T12:00:00+00:00",
|
|
12
|
+
'version' => "1.0.1",
|
|
13
|
+
'changes' => ['Change details']}
|
|
14
|
+
@config.stubs(:base_path).returns('base_path')
|
|
15
|
+
YAML.stubs(:load_file).with('base_path/changelog.yml').returns([changelog_fixture])
|
|
16
|
+
|
|
17
|
+
@metadata.changelog.should == "rails-app (1.0.1-1) cp-gutsy; urgency=low\n"\
|
|
18
|
+
" * Change details\n"\
|
|
19
|
+
" -- Matt Patterson <matt@reprocessed.org> Wed, 16 Apr 2008 12:00:00 -0000\n"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Gem::ControlFiles::Rakefile do
|
|
4
|
+
it "should be able to generate the contents of the Rakefile" do
|
|
5
|
+
config = DpkgTools::Package::Config.new("gem-name", "1.0.8", :suffix => 'rubygem')
|
|
6
|
+
stub_data = stub("DpkgTools::Package::Gem::Data", :full_name => "gem-name-1.0.8")
|
|
7
|
+
metadata = DpkgTools::Package::Etc::ControlFiles::Rakefile.new(stub_data, config)
|
|
8
|
+
|
|
9
|
+
metadata.rakefile.should == "require 'rubygems'\n" \
|
|
10
|
+
"require 'dpkg-tools'\n" \
|
|
11
|
+
"\n" \
|
|
12
|
+
"DpkgTools::Package::Etc::BuildTasks.new do |t|\n" \
|
|
13
|
+
" t.base_path = Rake.original_dir\n" \
|
|
14
|
+
"end\n"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Etc::ControlFiles do
|
|
4
|
+
it "should provide access to the list of control file classes" do
|
|
5
|
+
DpkgTools::Package::Etc::ControlFiles.classes.
|
|
6
|
+
should == [DpkgTools::Package::Etc::ControlFiles::Changelog,
|
|
7
|
+
DpkgTools::Package::ControlFiles::Control,
|
|
8
|
+
DpkgTools::Package::ControlFiles::Copyright,
|
|
9
|
+
DpkgTools::Package::Etc::ControlFiles::Rakefile,
|
|
10
|
+
DpkgTools::Package::ControlFiles::Rules]
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Etc::Data do
|
|
4
|
+
it "should provide access to the name of the resources subdir in the gem" do
|
|
5
|
+
DpkgTools::Package::Etc::Data.resources_dirname.should == 'etc'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should return no dependencies by default" do
|
|
9
|
+
DpkgTools::Package::Etc::Data.base_package_deps.should == []
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should return no gem dependencies by default" do
|
|
13
|
+
DpkgTools::Package::Etc::Data.base_gem_deps.should == []
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe DpkgTools::Package::Rails::Data, ".new" do
|
|
17
|
+
it "should raise an error without any arguments" do
|
|
18
|
+
lambda { DpkgTools::Package::Gem::Data.new }.should raise_error
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should take the conf package's base path, then read in the deb.yml" do
|
|
22
|
+
DpkgTools::Package::Etc::Data.expects(:load_package_data).with('base_path', 'deb.yml').returns({'name' => 'rails-app', 'version' => '1.0.8'})
|
|
23
|
+
DpkgTools::Package::Etc::Data.expects(:process_dependencies).with({'name' => 'rails-app', 'version' => '1.0.8'}).returns(:deps)
|
|
24
|
+
DpkgTools::Package::Etc::Data.new('base_path').should be_an_instance_of(DpkgTools::Package::Etc::Data)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "instances" do
|
|
29
|
+
before(:each) do
|
|
30
|
+
package_data = {'name' => 'conf-package', 'version' => '1.0.8', 'license' => '(c) Matt 4evah',
|
|
31
|
+
'summary' => "Matt's great configuration package"}
|
|
32
|
+
DpkgTools::Package::Etc::Data.stubs(:load_package_data).with('base_path', 'deb.yml').
|
|
33
|
+
returns(package_data)
|
|
34
|
+
DpkgTools::Package::Etc::Data.expects(:process_dependencies).with(package_data).returns(:deps)
|
|
35
|
+
@data = DpkgTools::Package::Etc::Data.new('base_path')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should profess to be an architecture-independent package" do
|
|
39
|
+
@data.architecture_independent?.should be_true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should provide access to its install-time deps" do
|
|
43
|
+
@data.dependencies.should == :deps
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should provide access to its build-time deps" do
|
|
47
|
+
@data.build_dependencies.should == :deps
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should provide access to its name" do
|
|
51
|
+
@data.name.should == 'conf-package'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should convert the Gem::Version object to a string" do
|
|
55
|
+
@data.version.should == '1.0.8'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should provide access to the changelog-derived debian_revision" do
|
|
59
|
+
@data.debian_revision.should == "1"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should provide access to the debian architecture name" do
|
|
63
|
+
@data.debian_arch.should == "all"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should provide access to its license" do
|
|
67
|
+
@data.license.should == "(c) Matt 4evah"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "should provide access to its summary" do
|
|
71
|
+
@data.summary.should == "Matt's great configuration package"
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
require 'rake'
|
|
4
|
+
|
|
5
|
+
describe DpkgTools::Package::Etc::BuildTasks, "task creation" do
|
|
6
|
+
it "check_setup should be fine if base_path is defined" do
|
|
7
|
+
DpkgTools::Package::Etc::BuildTasks.any_instance.stubs(:define_tasks)
|
|
8
|
+
DpkgTools::Package::Etc::BuildTasks.any_instance.stubs(:define_base_tasks)
|
|
9
|
+
|
|
10
|
+
result = DpkgTools::Package::Etc::BuildTasks.new do |t|
|
|
11
|
+
t.base_path = 'path'
|
|
12
|
+
end
|
|
13
|
+
result.base_path.should == 'path'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should raise an error if base_path hasn't been defined" do
|
|
17
|
+
DpkgTools::Package::Etc::BuildTasks.any_instance.stubs(:define_tasks)
|
|
18
|
+
DpkgTools::Package::Etc::BuildTasks.any_instance.stubs(:define_base_tasks)
|
|
19
|
+
|
|
20
|
+
lambda { DpkgTools::Package::Etc::BuildTasks.new }.should raise_error(ArgumentError)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should be able to return a properly instantiated Builder from create_builder" do
|
|
24
|
+
build_tasks = DpkgTools::Package::Etc::BuildTasks.new do |t|
|
|
25
|
+
t.base_path = 'path'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
DpkgTools::Package::Etc.expects(:create_builder).with('path').returns(:builder)
|
|
29
|
+
|
|
30
|
+
build_tasks.create_builder.should == :builder
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should be able to return a properly instantiated Setup from create_setup" do
|
|
34
|
+
build_tasks = DpkgTools::Package::Etc::BuildTasks.new do |t|
|
|
35
|
+
t.base_path = 'path'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
DpkgTools::Package::Etc.expects(:create_setup).with('path').returns(:setup)
|
|
39
|
+
|
|
40
|
+
build_tasks.create_setup.should == :setup
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe DpkgTools::Package::Etc::BuildTasks, "rake tasks" do
|
|
45
|
+
before(:each) do
|
|
46
|
+
@rake = Rake::Application.new
|
|
47
|
+
Rake.application = @rake
|
|
48
|
+
|
|
49
|
+
@build_tasks = DpkgTools::Package::Etc::BuildTasks.new do |t|
|
|
50
|
+
t.base_path = "base_path"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
after(:each) do
|
|
55
|
+
Rake.application = nil
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should properly call the DpkgTools::Package::Etc.create_builder from the task 'binary-arch'" do
|
|
59
|
+
mock_builder = mock('DpkgTools::Package::Etc::Builder')
|
|
60
|
+
mock_builder.expects(:binary_package)
|
|
61
|
+
@build_tasks.expects(:create_builder).returns(mock_builder)
|
|
62
|
+
@rake["binary-arch"].invoke
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should properly call the DpkgTools::Package::Etc.create_builder from the task 'binary-indep'" do
|
|
66
|
+
mock_builder = mock('DpkgTools::Package::Etc::Builder')
|
|
67
|
+
mock_builder.expects(:binary_package)
|
|
68
|
+
@build_tasks.expects(:create_builder).returns(mock_builder)
|
|
69
|
+
@rake["binary-indep"].invoke
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Etc::Setup do
|
|
4
|
+
describe "bootstrapping support" do
|
|
5
|
+
it "should return base_path/deb.yml when asked to return bootstrap_file_path" do
|
|
6
|
+
DpkgTools::Package::Etc::Setup.bootstrap_file_path('base_path', 'deb.yml').should == 'base_path/deb.yml'
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should report deb.yml as its required bootstrap file" do
|
|
11
|
+
DpkgTools::Package::Etc::Setup.bootstrap_files.should == ['deb.yml', 'changelog.yml']
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should report DpkgTools::Package::Etc::Data for data_class" do
|
|
15
|
+
DpkgTools::Package::Etc::Setup.data_class.should == DpkgTools::Package::Etc::Data
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe ".from_path" do
|
|
19
|
+
it "should create a DpkgTools::Package::Etc::Data instance, and feed it to .new" do
|
|
20
|
+
DpkgTools::Package::Etc::Setup.expects(:needs_bootstrapping?).with('base_path').returns(false)
|
|
21
|
+
DpkgTools::Package::Etc::Data.expects(:new).with('base_path').returns(:data)
|
|
22
|
+
DpkgTools::Package::Etc::Setup.expects(:new).with(:data, 'base_path').returns(:instance)
|
|
23
|
+
|
|
24
|
+
DpkgTools::Package::Etc::Setup.from_path('base_path').should == :instance
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe DpkgTools::Package::Etc::Setup, "instances" do
|
|
29
|
+
before(:each) do
|
|
30
|
+
@data = stub("stub DpkgTools::Package::Etc::Data", :name => 'hello', :version => '1', :base_path => 'base_path')
|
|
31
|
+
@config = DpkgTools::Package::Config.new('hello', '1', {:base_path => 'base_path'})
|
|
32
|
+
DpkgTools::Package::Config.expects(:new).with('hello', '1', {:base_path => 'base_path'}).returns(@config)
|
|
33
|
+
|
|
34
|
+
@setup = DpkgTools::Package::Etc::Setup.new(@data)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should provide access to the correct options for making a new DpkgTools::Package::Config" do
|
|
38
|
+
@setup.config_options.should == {:base_path => 'base_path'}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should return the right thing for #control_file_classes" do
|
|
42
|
+
DpkgTools::Package::Etc::ControlFiles.expects(:classes).returns(:classes)
|
|
43
|
+
@setup.control_file_classes.should == :classes
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe "#prepare_package" do
|
|
47
|
+
it "should create an etc/ dir if it isn't already there" do
|
|
48
|
+
File.stubs(:directory?).with('base_path/etc').returns(false)
|
|
49
|
+
Dir.expects(:mkdir).with('base_path/etc')
|
|
50
|
+
|
|
51
|
+
@setup.prepare_package
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should not create the etc/ dir if it is there" do
|
|
55
|
+
File.stubs(:directory?).with('base_path/etc').returns(true)
|
|
56
|
+
Dir.expects(:mkdir).with('base_path/etc').never
|
|
57
|
+
|
|
58
|
+
@setup.prepare_package
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Etc, ".create_builder" do
|
|
4
|
+
it "should instantiate a Package::Etc::Data and a Package::Etc::Builder and make 'em work" do
|
|
5
|
+
DpkgTools::Package::Etc::Builder.expects(:from_path).with('/path/to/package').returns(:builder)
|
|
6
|
+
|
|
7
|
+
DpkgTools::Package::Etc.create_builder('/path/to/package').should == :builder
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe DpkgTools::Package::Etc, ".setup_from_path" do
|
|
12
|
+
it "should be able to create package structure from a path to a not-yet-extant conf package dir" do
|
|
13
|
+
mock_setup = mock('mock DpkgTools::Package::Etc::Setup')
|
|
14
|
+
File.stubs(:directory?).with('/path/to/package').returns(false)
|
|
15
|
+
Dir.expects(:mkdir).with('/path/to/package')
|
|
16
|
+
DpkgTools::Package::Etc::Setup.expects(:from_path).with('/path/to/package').returns(mock_setup)
|
|
17
|
+
mock_setup.expects(:create_structure)
|
|
18
|
+
|
|
19
|
+
DpkgTools::Package::Etc.setup_from_path('/path/to/package')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should be able to create package structure from a path to a dir that exists" do
|
|
23
|
+
mock_setup = mock('mock DpkgTools::Package::Etc::Setup')
|
|
24
|
+
File.stubs(:directory?).with('/path/to/package').returns(true)
|
|
25
|
+
Dir.expects(:mkdir).with('/path/to/package').never
|
|
26
|
+
DpkgTools::Package::Etc::Setup.expects(:from_path).with('/path/to/package').returns(mock_setup)
|
|
27
|
+
mock_setup.expects(:create_structure)
|
|
28
|
+
|
|
29
|
+
DpkgTools::Package::Etc.setup_from_path('/path/to/package')
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe DpkgTools::Package::Etc, ".create_setup" do
|
|
34
|
+
it "should be able to create a Setup instance" do
|
|
35
|
+
DpkgTools::Package::Etc::Setup.expects(:from_path).with('/path/to/package').returns(:setup)
|
|
36
|
+
|
|
37
|
+
DpkgTools::Package::Etc.create_setup('/path/to/package').should == :setup
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
module FSMethodsContainer
|
|
4
|
+
class << self
|
|
5
|
+
include DpkgTools::Package::FSMethods
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe DpkgTools::Package::FSMethods, "filesystem-related convenience methods" do
|
|
10
|
+
it "should be able to make a directory that isn't there" do
|
|
11
|
+
File.expects(:exists?).with('path').returns(false)
|
|
12
|
+
FileUtils.expects(:mkdir_p).with('path')
|
|
13
|
+
|
|
14
|
+
FSMethodsContainer.create_dir_if_needed('path')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should be able to conditionally make a directory" do
|
|
18
|
+
File.expects(:exists?).with('path').returns(true)
|
|
19
|
+
File.expects(:file?).with('path').returns(false)
|
|
20
|
+
FileUtils.expects(:mkdir_p).never
|
|
21
|
+
|
|
22
|
+
FSMethodsContainer.create_dir_if_needed('path')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should error if directory it was asked to make is an existing file" do
|
|
26
|
+
File.expects(:exists?).with('path').returns(true)
|
|
27
|
+
File.expects(:file?).with('path').returns(true)
|
|
28
|
+
FileUtils.expects(:mkdir_p).never
|
|
29
|
+
|
|
30
|
+
lambda { FSMethodsContainer.create_dir_if_needed('path') }.should raise_error
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DpkgTools::Package::Gem::Builder do
|
|
4
|
+
it "should be able to grab the bytes of a gem file and extract a Gem::Format" do
|
|
5
|
+
mock_file = mock('mock File')
|
|
6
|
+
mock_file.expects(:read).returns('gem byte string')
|
|
7
|
+
File.expects(:open).with('path/to/file.gem', 'rb').returns(mock_file)
|
|
8
|
+
DpkgTools::Package::Gem::Builder.expects(:format_from_string).with('gem byte string')
|
|
9
|
+
DpkgTools::Package::Gem::Builder.format_and_file_from_file_path('path/to/file.gem')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should be able to snarf the gem file, create a DpkgTools::Package::Gem::Data and a Builder instance" do
|
|
13
|
+
data = stub('DpkgTools::Package::Gem::Data', :name => 'name', :version => 'version')
|
|
14
|
+
DpkgTools::Package::Gem::Data.expects(:new).with(:format, 'gem byte string').returns(data)
|
|
15
|
+
DpkgTools::Package::Gem::Builder.expects(:new).with(data).returns(:instance)
|
|
16
|
+
DpkgTools::Package::Gem::Builder.expects(:format_and_file_from_file_path).with('gem_path').returns([:format, 'gem byte string'])
|
|
17
|
+
|
|
18
|
+
DpkgTools::Package::Gem::Builder.from_file_path('gem_path').should == :instance
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe DpkgTools::Package::Gem::Builder, "instances" do
|
|
23
|
+
before(:each) do
|
|
24
|
+
DpkgTools::Package::Config.stubs(:root_path).returns("a/path/to")
|
|
25
|
+
@stub_data = stub("stub DpkgTools::Package::Gem::Data", :name => 'stub_gem', :version => '1.0.8',
|
|
26
|
+
:full_name => 'gem_name-1.0.8', :debian_revision => '1',
|
|
27
|
+
:debian_arch => 'all', :gem_byte_string => 'gem byte string')
|
|
28
|
+
|
|
29
|
+
@builder = DpkgTools::Package::Gem::Builder.new(@stub_data)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should provide the right options for DpkgTools::Package::Config" do
|
|
33
|
+
@builder.config_options.should == {:suffix => 'rubygem'}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should provide access to @gem_byte_string" do
|
|
37
|
+
@builder.gem_byte_string.should == 'gem byte string'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should be able to create the needed install dirs" do
|
|
41
|
+
@builder.expects(:create_dir_if_needed).with('a/path/to/stub-gem-rubygem-1.0.8/debian/tmp/usr/lib/ruby/gems/1.8')
|
|
42
|
+
@builder.expects(:create_dir_if_needed).with('a/path/to/stub-gem-rubygem-1.0.8/debian/tmp/usr/bin')
|
|
43
|
+
|
|
44
|
+
@builder.create_install_dirs
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should override Gem.bindir to provide a sensible alternative" do
|
|
48
|
+
@builder.override_gem_bindir
|
|
49
|
+
|
|
50
|
+
::Gem.bindir.should == "a/path/to/stub-gem-rubygem-1.0.8/debian/tmp/usr/bin"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should be able to install the gem into the buildroot" do
|
|
54
|
+
@builder.expects(:override_gem_bindir)
|
|
55
|
+
mock_installer = mock('mock Gem::Installer')
|
|
56
|
+
mock_installer.expects(:install).with(false, 'a/path/to/stub-gem-rubygem-1.0.8/debian/tmp/usr/lib/ruby/gems/1.8')
|
|
57
|
+
Gem::Installer.expects(:new).with('a/path/to/stub-gem-rubygem-1.0.8/stub_gem-1.0.8.gem', {:wrappers => true, :env_shebang => true}).
|
|
58
|
+
returns(mock_installer)
|
|
59
|
+
|
|
60
|
+
@builder.install_gem
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should be able to install the RI and RDoc for the gem" do
|
|
64
|
+
mock_doc_manager = mock('mock Gem::DocManager')
|
|
65
|
+
mock_doc_manager.expects(:generate_ri)
|
|
66
|
+
mock_doc_manager.expects(:generate_rdoc)
|
|
67
|
+
Gem::DocManager.expects(:new).with(:installed_gem_spec).returns(mock_doc_manager)
|
|
68
|
+
|
|
69
|
+
@builder.install_docs(:installed_gem_spec)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should be able to perform the steps needed to install all the package's files" do
|
|
73
|
+
@builder.expects(:install_gem).returns(:installed_gem_spec)
|
|
74
|
+
@builder.expects(:install_docs).with(:installed_gem_spec)
|
|
75
|
+
|
|
76
|
+
@builder.build_package_files
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "should be able to perform the steps needed to finish the install all the package's files" do
|
|
80
|
+
@builder.expects(:sh).with('chown -R root:root "a/path/to/stub-gem-rubygem-1.0.8/debian/tmp"')
|
|
81
|
+
|
|
82
|
+
@builder.install_package_files
|
|
83
|
+
end
|
|
84
|
+
end
|