akabei 0.1.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 (48) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +55 -0
  8. data/Rakefile +14 -0
  9. data/akabei.gemspec +29 -0
  10. data/bin/akabei +9 -0
  11. data/lib/akabei.rb +5 -0
  12. data/lib/akabei/abs.rb +60 -0
  13. data/lib/akabei/archive_utils.rb +75 -0
  14. data/lib/akabei/attr_path.rb +20 -0
  15. data/lib/akabei/builder.rb +108 -0
  16. data/lib/akabei/chroot_tree.rb +81 -0
  17. data/lib/akabei/cli.rb +172 -0
  18. data/lib/akabei/error.rb +4 -0
  19. data/lib/akabei/package.rb +174 -0
  20. data/lib/akabei/package_entry.rb +110 -0
  21. data/lib/akabei/package_info.rb +68 -0
  22. data/lib/akabei/repository.rb +156 -0
  23. data/lib/akabei/signer.rb +75 -0
  24. data/lib/akabei/thor_handler.rb +14 -0
  25. data/lib/akabei/version.rb +3 -0
  26. data/spec/akabei/abs_spec.rb +95 -0
  27. data/spec/akabei/archive_utils_spec.rb +44 -0
  28. data/spec/akabei/builder_spec.rb +129 -0
  29. data/spec/akabei/chroot_tree_spec.rb +108 -0
  30. data/spec/akabei/cli_spec.rb +5 -0
  31. data/spec/akabei/package_entry_spec.rb +70 -0
  32. data/spec/akabei/package_info_spec.rb +17 -0
  33. data/spec/akabei/package_spec.rb +54 -0
  34. data/spec/akabei/repository_spec.rb +157 -0
  35. data/spec/akabei/signer_spec.rb +5 -0
  36. data/spec/data/input/abs.tar.gz +0 -0
  37. data/spec/data/input/htop-vi.tar.gz +0 -0
  38. data/spec/data/input/makepkg.x86_64.conf +140 -0
  39. data/spec/data/input/nkf-2.1.3-1-x86_64.pkg.tar.xz +0 -0
  40. data/spec/data/input/nkf.PKGINFO +22 -0
  41. data/spec/data/input/nkf.tar.gz +0 -0
  42. data/spec/data/input/pacman.x86_64.conf +99 -0
  43. data/spec/data/input/ruby.PKGINFO +38 -0
  44. data/spec/data/input/test.db +0 -0
  45. data/spec/data/input/test.files +0 -0
  46. data/spec/integration/build_spec.rb +105 -0
  47. data/spec/spec_helper.rb +110 -0
  48. metadata +225 -0
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+ require 'akabei/signer'
3
+
4
+ describe Akabei::Signer do
5
+ end
@@ -0,0 +1,140 @@
1
+ #
2
+ # /etc/makepkg.conf
3
+ #
4
+
5
+ #########################################################################
6
+ # SOURCE ACQUISITION
7
+ #########################################################################
8
+ #
9
+ #-- The download utilities that makepkg should use to acquire sources
10
+ # Format: 'protocol::agent'
11
+ DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
12
+ 'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
13
+ 'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
14
+ 'rsync::/usr/bin/rsync --no-motd -z %u %o'
15
+ 'scp::/usr/bin/scp -C %u %o')
16
+
17
+ # Other common tools:
18
+ # /usr/bin/snarf
19
+ # /usr/bin/lftpget -c
20
+ # /usr/bin/wget
21
+
22
+ #########################################################################
23
+ # ARCHITECTURE, COMPILE FLAGS
24
+ #########################################################################
25
+ #
26
+ CARCH="x86_64"
27
+ CHOST="x86_64-unknown-linux-gnu"
28
+
29
+ #-- Compiler and Linker Flags
30
+ # -march (or -mcpu) builds exclusively for an architecture
31
+ # -mtune optimizes for an architecture, but builds for whole processor family
32
+ CPPFLAGS="-D_FORTIFY_SOURCE=2"
33
+ CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
34
+ CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
35
+ LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
36
+ #-- Make Flags: change this for DistCC/SMP systems
37
+ #MAKEFLAGS="-j2"
38
+ #-- Debugging flags
39
+ DEBUG_CFLAGS="-g -fvar-tracking-assignments"
40
+ DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
41
+
42
+ #########################################################################
43
+ # BUILD ENVIRONMENT
44
+ #########################################################################
45
+ #
46
+ # Defaults: BUILDENV=(fakeroot !distcc color !ccache check !sign)
47
+ # A negated environment option will do the opposite of the comments below.
48
+ #
49
+ #-- fakeroot: Allow building packages as a non-root user
50
+ #-- distcc: Use the Distributed C/C++/ObjC compiler
51
+ #-- color: Colorize output messages
52
+ #-- ccache: Use ccache to cache compilation
53
+ #-- check: Run the check() function if present in the PKGBUILD
54
+ #-- sign: Generate PGP signature file
55
+ #
56
+ BUILDENV=(fakeroot !distcc color !ccache check !sign)
57
+ #
58
+ #-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
59
+ #-- specify a space-delimited list of hosts running in the DistCC cluster.
60
+ #DISTCC_HOSTS=""
61
+ #
62
+ #-- Specify a directory for package building.
63
+ #BUILDDIR=/tmp/makepkg
64
+
65
+ #########################################################################
66
+ # GLOBAL PACKAGE OPTIONS
67
+ # These are default values for the options=() settings
68
+ #########################################################################
69
+ #
70
+ # Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !upx !debug)
71
+ # A negated option will do the opposite of the comments below.
72
+ #
73
+ #-- strip: Strip symbols from binaries/libraries
74
+ #-- docs: Save doc directories specified by DOC_DIRS
75
+ #-- libtool: Leave libtool (.la) files in packages
76
+ #-- staticlibs: Leave static library (.a) files in packages
77
+ #-- emptydirs: Leave empty directories in packages
78
+ #-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
79
+ #-- purge: Remove files specified by PURGE_TARGETS
80
+ #-- upx: Compress binary executable files using UPX
81
+ #-- debug: Add debugging flags as specified in DEBUG_* variables
82
+ #
83
+ OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !upx !debug)
84
+
85
+ #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
86
+ INTEGRITY_CHECK=(md5)
87
+ #-- Options to be used when stripping binaries. See `man strip' for details.
88
+ STRIP_BINARIES="--strip-all"
89
+ #-- Options to be used when stripping shared libraries. See `man strip' for details.
90
+ STRIP_SHARED="--strip-unneeded"
91
+ #-- Options to be used when stripping static libraries. See `man strip' for details.
92
+ STRIP_STATIC="--strip-debug"
93
+ #-- Manual (man and info) directories to compress (if zipman is specified)
94
+ MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
95
+ #-- Doc directories to remove (if !docs is specified)
96
+ DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
97
+ #-- Files to be removed from all packages (if purge is specified)
98
+ PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
99
+
100
+ #########################################################################
101
+ # PACKAGE OUTPUT
102
+ #########################################################################
103
+ #
104
+ # Default: put built package and cached source in build directory
105
+ #
106
+ #-- Destination: specify a fixed directory where all packages will be placed
107
+ #PKGDEST=/home/packages
108
+ #-- Source cache: specify a fixed directory where source files will be cached
109
+ #SRCDEST=/home/sources
110
+ #-- Source packages: specify a fixed directory where all src packages will be placed
111
+ #SRCPKGDEST=/home/srcpackages
112
+ #-- Log files: specify a fixed directory where all log files will be placed
113
+ #LOGDEST=/home/makepkglogs
114
+ #-- Packager: name/email of the person or organization building packages
115
+ #PACKAGER="John Doe <john@doe.com>"
116
+ #-- Specify a key to use for package signing
117
+ #GPGKEY=""
118
+
119
+ #########################################################################
120
+ # COMPRESSION DEFAULTS
121
+ #########################################################################
122
+ #
123
+ COMPRESSGZ=(gzip -c -f -n)
124
+ COMPRESSBZ2=(bzip2 -c -f)
125
+ COMPRESSXZ=(xz -c -z -)
126
+ COMPRESSLRZ=(lrzip -q)
127
+ COMPRESSLZO=(lzop -q)
128
+ COMPRESSZ=(compress -c -f)
129
+
130
+ #########################################################################
131
+ # EXTENSION DEFAULTS
132
+ #########################################################################
133
+ #
134
+ # WARNING: Do NOT modify these variables unless you know what you are
135
+ # doing.
136
+ #
137
+ PKGEXT='.pkg.tar.xz'
138
+ SRCEXT='.src.tar.gz'
139
+
140
+ # vim: set ft=sh ts=2 sw=2 et:
@@ -0,0 +1,22 @@
1
+ # Generated by makepkg 4.1.2
2
+ # using fakeroot version 1.20
3
+ # Fri Jan 17 07:28:52 UTC 2014
4
+ pkgname = nkf
5
+ pkgver = 2.1.3-1
6
+ pkgdesc = A yet another kanji code converter among networks, hosts and terminals
7
+ url = http://sourceforge.jp/projects/nkf/
8
+ builddate = 1389943732
9
+ packager = Unknown Packager
10
+ size = 273408
11
+ arch = x86_64
12
+ license = custom:zlib
13
+ depend = glibc
14
+ makepkgopt = strip
15
+ makepkgopt = docs
16
+ makepkgopt = !libtool
17
+ makepkgopt = !staticlibs
18
+ makepkgopt = emptydirs
19
+ makepkgopt = zipman
20
+ makepkgopt = purge
21
+ makepkgopt = !upx
22
+ makepkgopt = !debug
@@ -0,0 +1,99 @@
1
+ #
2
+ # /etc/pacman.conf
3
+ #
4
+ # See the pacman.conf(5) manpage for option and repository directives
5
+
6
+ #
7
+ # GENERAL OPTIONS
8
+ #
9
+ [options]
10
+ # The following paths are commented out with their default values listed.
11
+ # If you wish to use different paths, uncomment and update the paths.
12
+ #RootDir = /
13
+ #DBPath = /var/lib/pacman/
14
+ #CacheDir = /var/cache/pacman/pkg/
15
+ #LogFile = /var/log/pacman.log
16
+ #GPGDir = /etc/pacman.d/gnupg/
17
+ HoldPkg = pacman glibc
18
+ #XferCommand = /usr/bin/curl -C - -f %u > %o
19
+ #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
20
+ #CleanMethod = KeepInstalled
21
+ #UseDelta = 0.7
22
+ Architecture = auto
23
+
24
+ # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
25
+ #IgnorePkg =
26
+ #IgnoreGroup =
27
+
28
+ #NoUpgrade =
29
+ #NoExtract =
30
+
31
+ # Misc options
32
+ #UseSyslog
33
+ #Color
34
+ #TotalDownload
35
+ CheckSpace
36
+ #VerbosePkgLists
37
+
38
+ # By default, pacman accepts packages signed by keys that its local keyring
39
+ # trusts (see pacman-key and its man page), as well as unsigned packages.
40
+ SigLevel = Required DatabaseOptional
41
+ LocalFileSigLevel = Optional
42
+ #RemoteFileSigLevel = Required
43
+
44
+ # NOTE: You must run `pacman-key --init` before first using pacman; the local
45
+ # keyring can then be populated with the keys of all official Arch Linux
46
+ # packagers with `pacman-key --populate archlinux`.
47
+
48
+ #
49
+ # REPOSITORIES
50
+ # - can be defined here or included from another file
51
+ # - pacman will search repositories in the order defined here
52
+ # - local/custom mirrors can be added here or in separate files
53
+ # - repositories listed first will take precedence when packages
54
+ # have identical names, regardless of version number
55
+ # - URLs will have $repo replaced by the name of the current repo
56
+ # - URLs will have $arch replaced by the name of the architecture
57
+ #
58
+ # Repository entries are of the format:
59
+ # [repo-name]
60
+ # Server = ServerName
61
+ # Include = IncludePath
62
+ #
63
+ # The header [repo-name] is crucial - it must be present and
64
+ # uncommented to enable the repo.
65
+ #
66
+
67
+ # The testing repositories are disabled by default. To enable, uncomment the
68
+ # repo name header and Include lines. You can add preferred servers immediately
69
+ # after the header, and they will be used before the default mirrors.
70
+
71
+ #[testing]
72
+ #Include = /etc/pacman.d/mirrorlist
73
+
74
+ [core]
75
+ Include = /etc/pacman.d/mirrorlist
76
+
77
+ [extra]
78
+ Include = /etc/pacman.d/mirrorlist
79
+
80
+ #[community-testing]
81
+ #Include = /etc/pacman.d/mirrorlist
82
+
83
+ [community]
84
+ Include = /etc/pacman.d/mirrorlist
85
+
86
+ # If you want to run 32 bit applications on your x86_64 system,
87
+ # enable the multilib repositories as required here.
88
+
89
+ #[multilib-testing]
90
+ #Include = /etc/pacman.d/mirrorlist
91
+
92
+ #[multilib]
93
+ #Include = /etc/pacman.d/mirrorlist
94
+
95
+ # An example of a custom package repository. See the pacman manpage for
96
+ # tips on creating your own repositories.
97
+ #[custom]
98
+ #SigLevel = Optional TrustAll
99
+ #Server = file:///home/custompkgs
@@ -0,0 +1,38 @@
1
+ # Generated by makepkg 4.1.2
2
+ # using fakeroot version 1.20
3
+ # Fri Jan 10 19:12:37 UTC 2014
4
+ pkgname = ruby
5
+ pkgbase = ruby
6
+ pkgver = 2.1.0-2
7
+ pkgdesc = An object-oriented language for quick and easy programming
8
+ url = http://www.ruby-lang.org/en/
9
+ builddate = 1389381157
10
+ packager = Thomas Dziedzic <gostrc@gmail.com>
11
+ size = 19100672
12
+ arch = x86_64
13
+ license = BSD
14
+ license = custom
15
+ conflict = rake
16
+ provides = rubygems
17
+ provides = rake
18
+ backup = etc/gemrc
19
+ depend = gdbm
20
+ depend = openssl
21
+ depend = libffi
22
+ depend = libyaml
23
+ optdepend = ruby-docs: Ruby documentation
24
+ makedepend = gdbm
25
+ makedepend = openssl
26
+ makedepend = libffi
27
+ makedepend = doxygen
28
+ makedepend = graphviz
29
+ makedepend = libyaml
30
+ makepkgopt = strip
31
+ makepkgopt = docs
32
+ makepkgopt = !libtool
33
+ makepkgopt = staticlibs
34
+ makepkgopt = !emptydirs
35
+ makepkgopt = zipman
36
+ makepkgopt = purge
37
+ makepkgopt = !upx
38
+ makepkgopt = !debug
Binary file
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'build subcommand', :archlinux do
4
+ let(:pkg_dir) { test_dest('nkf') }
5
+ let(:repo_dir) { test_dest('repo').tap(&:mkpath) }
6
+ let(:base_command) {
7
+ [
8
+ 'build',
9
+ '--repo-name', 'test',
10
+ '--repo-dir', repo_dir.to_s,
11
+ '--arch', 'x86_64',
12
+ '--pacman-config', test_input('pacman.x86_64.conf').to_s,
13
+ '--makepkg-config', test_input('makepkg.x86_64.conf').to_s,
14
+ pkg_dir.to_s,
15
+ ]
16
+ }
17
+
18
+ before do
19
+ tar('xf', test_input('nkf.tar.gz').to_s, '-C', pkg_dir.parent.to_s)
20
+ end
21
+
22
+ context 'with new repository' do
23
+ it 'creates a new package and repository database with files' do
24
+ expect(akabei(*base_command)).to eq(true)
25
+
26
+ db_path = repo_dir.join('test.db')
27
+ expect(db_path).to be_file
28
+ db_files = tar('tf', db_path.to_s)
29
+ expect(db_files).to include('nkf-2.1.3-1/desc')
30
+ expect(db_files).not_to include('nkf-2.1.3-1/files')
31
+
32
+ files_path = repo_dir.join('test.files')
33
+ expect(files_path).to be_file
34
+ files_files = tar('tf', files_path.to_s)
35
+ expect(files_files).to include('nkf-2.1.3-1/desc')
36
+ expect(files_files).to include('nkf-2.1.3-1/files')
37
+
38
+ pkg_path = repo_dir.join('nkf-2.1.3-1-x86_64.pkg.tar.xz')
39
+ expect(pkg_path).to be_file
40
+ expect(tar('tf', pkg_path.to_s)).to include('usr/bin/nkf')
41
+
42
+ abs_path = repo_dir.join('test.abs.tar.gz')
43
+ expect(abs_path).to be_file
44
+ expect(tar('tf', abs_path.to_s)).to include('test/nkf/PKGBUILD')
45
+ end
46
+
47
+ context 'with --srcdest' do
48
+ let(:srcdest) { test_dest('sources').tap(&:mkpath) }
49
+ let(:build_command) { base_command + ['--srcdest', srcdest.to_s] }
50
+
51
+ it 'stores sources' do
52
+ expect(akabei(*build_command)).to eq(true)
53
+ expect(srcdest.join('nkf-2.1.3.tar.gz')).to be_file
54
+ end
55
+ end
56
+
57
+ context 'with --logdest' do
58
+ let(:logdest) { test_dest('logs').tap(&:mkpath) }
59
+ let(:build_command) { base_command + ['--logdest', logdest.to_s] }
60
+
61
+ it 'stores logs' do
62
+ expect(akabei(*build_command)).to eq(true)
63
+ expect(logdest.join('nkf-2.1.3-1-x86_64-build.log')).to be_file
64
+ expect(logdest.join('nkf-2.1.3-1-x86_64-package.log')).to be_file
65
+ end
66
+ end
67
+ end
68
+
69
+ context 'with existing repository' do
70
+ let(:db_path) { repo_dir.join('test.db') }
71
+ let(:files_path) { repo_dir.join('test.files') }
72
+ let(:abs_path) { repo_dir.join('test.abs.tar.gz') }
73
+
74
+ before do
75
+ FileUtils.cp(test_input('test.db'), db_path)
76
+ FileUtils.cp(test_input('test.files'), files_path)
77
+ FileUtils.cp(test_input('abs.tar.gz'), abs_path)
78
+ end
79
+
80
+ it 'adds a new package' do
81
+ expect(akabei(*base_command)).to eq(true)
82
+
83
+ expect(db_path).to be_file
84
+ db_files = tar('tf', db_path.to_s)
85
+ expect(db_files).to include('htop-vi-1.0.2-4/desc')
86
+ expect(db_files).to include('nkf-2.1.3-1/depends')
87
+ expect(db_files).not_to include('nkf-2.1.3-1/files')
88
+
89
+ expect(files_path).to be_file
90
+ files_files = tar('tf', files_path.to_s)
91
+ expect(files_files).to include('htop-vi-1.0.2-4/desc')
92
+ expect(files_files).to include('nkf-2.1.3-1/depends')
93
+ expect(files_files).to include('htop-vi-1.0.2-4/files')
94
+ expect(files_files).to include('nkf-2.1.3-1/files')
95
+ d = test_dest('files-dest').tap(&:mkpath)
96
+ tar('xf', files_path.to_s, '-C', d.to_s)
97
+ expect(d.join('nkf-2.1.3-1', 'files').read).to include('usr/bin/nkf')
98
+
99
+ expect(abs_path).to be_file
100
+ abs_files = tar('tf', abs_path.to_s)
101
+ expect(abs_files).to include('test/htop-vi/PKGBUILD')
102
+ expect(abs_files).to include('test/nkf/PKGBUILD')
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,110 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'coveralls'
9
+ require 'pathname'
10
+ require 'simplecov'
11
+
12
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
13
+ SimpleCov::Formatter::HTMLFormatter,
14
+ Coveralls::SimpleCov::Formatter,
15
+ ]
16
+ SimpleCov.start do
17
+ add_filter Bundler.bundle_path.to_s
18
+ add_filter File.dirname(__FILE__)
19
+ end
20
+
21
+ module TestDataHelpers
22
+ ROOT = Pathname.new(__FILE__).parent.join('data')
23
+ INPUT_ROOT = ROOT.join('input')
24
+ DEST_ROOT = ROOT.join('dest')
25
+
26
+ def test_input(path)
27
+ INPUT_ROOT.join(path)
28
+ end
29
+
30
+ def test_dest(path)
31
+ DEST_ROOT.join(path)
32
+ end
33
+
34
+ def self.prepare_dest
35
+ DEST_ROOT.mkpath
36
+ end
37
+
38
+ def self.clean_dest
39
+ DEST_ROOT.rmtree
40
+ end
41
+ end
42
+
43
+ module OutputHelpers
44
+ def capture_stdout(&block)
45
+ orig = $stdout
46
+ stdout = StringIO.new
47
+ $stdout = stdout
48
+ block.call
49
+ stdout.string
50
+ ensure
51
+ $stdout = orig
52
+ end
53
+
54
+ def capture_stderr(&block)
55
+ orig = $stdout
56
+ stderr = StringIO.new
57
+ $stderr = stderr
58
+ block.call
59
+ stderr.string
60
+ ensure
61
+ $stderr = orig
62
+ end
63
+ end
64
+
65
+ require 'open3'
66
+ module TarHelpers
67
+ def tar(*args)
68
+ cmd = ['tar'] + args
69
+ out, status = Open3.capture2(*cmd)
70
+ if status.success?
71
+ out.each_line.map(&:chomp)
72
+ else
73
+ raise "capture2 failed: #{status}: #{cmd.join(' ')}"
74
+ end
75
+ end
76
+ end
77
+
78
+ module IntegrationSpecHelper
79
+ def akabei(*cmd)
80
+ system(File.expand_path('../../bin/akabei', __FILE__), *cmd)
81
+ end
82
+ end
83
+
84
+ RSpec.configure do |config|
85
+ config.filter_run :focus
86
+ if ENV['AKABEI_ARCH_SPEC']
87
+ config.filter_run_including :archlinux
88
+ else
89
+ config.filter_run_excluding :archlinux
90
+ end
91
+ config.run_all_when_everything_filtered = true
92
+
93
+ # Run specs in random order to surface order dependencies. If you find an
94
+ # order dependency and want to debug it, you can fix the order by providing
95
+ # the seed, which is printed after each run.
96
+ # --seed 1234
97
+ config.order = 'random'
98
+
99
+ config.include TestDataHelpers
100
+ config.before(:each) do
101
+ TestDataHelpers.prepare_dest
102
+ end
103
+ config.after(:each) do
104
+ TestDataHelpers.clean_dest
105
+ end
106
+
107
+ config.include OutputHelpers
108
+ config.include TarHelpers
109
+ config.include IntegrationSpecHelper
110
+ end