redmine-installer 1.0.7 → 2.0.0.rc1
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.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.travis.yml +7 -0
- data/Gemfile +3 -15
- data/README.md +49 -177
- data/bin/redmine +4 -5
- data/lib/redmine-installer/backup.rb +13 -40
- data/lib/redmine-installer/cli.rb +92 -61
- data/lib/redmine-installer/command.rb +63 -117
- data/lib/redmine-installer/configuration.rb +148 -0
- data/lib/redmine-installer/database.rb +204 -0
- data/lib/redmine-installer/environment.rb +21 -0
- data/lib/redmine-installer/errors.rb +7 -0
- data/lib/redmine-installer/install.rb +37 -42
- data/lib/redmine-installer/logger.rb +83 -0
- data/lib/redmine-installer/package.rb +180 -0
- data/lib/redmine-installer/patches/ruby.rb +35 -0
- data/lib/redmine-installer/patches/tty.rb +16 -0
- data/lib/redmine-installer/profile.rb +24 -55
- data/lib/redmine-installer/redmine.rb +551 -0
- data/lib/redmine-installer/spec/spec.rb +81 -0
- data/lib/redmine-installer/task.rb +18 -77
- data/lib/redmine-installer/task_module.rb +12 -0
- data/lib/redmine-installer/upgrade.rb +51 -59
- data/lib/redmine-installer/utils.rb +46 -233
- data/lib/redmine-installer/version.rb +2 -4
- data/lib/redmine-installer.rb +69 -56
- data/redmine-installer.gemspec +20 -19
- data/spec/custom_matchers.rb +21 -0
- data/spec/installer_helper.rb +107 -0
- data/spec/installer_process.rb +82 -0
- data/spec/lib/backup_restore_spec.rb +81 -0
- data/spec/lib/install_spec.rb +125 -36
- data/spec/lib/upgrade_spec.rb +73 -52
- data/spec/packages/redmine-3.1.0.zip +0 -0
- data/spec/packages/redmine-3.2.0.zip +0 -0
- data/spec/packages/redmine-3.3.0-bad-migration.zip +0 -0
- data/spec/packages/redmine-3.3.0.zip +0 -0
- data/spec/packages/something-else.zip +0 -0
- data/spec/packages_helper.rb +19 -0
- data/spec/shared_contexts.rb +13 -0
- data/spec/spec_helper.rb +34 -18
- metadata +62 -63
- data/lib/redmine-installer/config_param.rb +0 -100
- data/lib/redmine-installer/error.rb +0 -5
- data/lib/redmine-installer/exec.rb +0 -158
- data/lib/redmine-installer/ext/module.rb +0 -7
- data/lib/redmine-installer/ext/string.rb +0 -15
- data/lib/redmine-installer/git.rb +0 -51
- data/lib/redmine-installer/helper.rb +0 -5
- data/lib/redmine-installer/helpers/generate_config.rb +0 -29
- data/lib/redmine-installer/locales/cs.yml +0 -147
- data/lib/redmine-installer/locales/en.yml +0 -154
- data/lib/redmine-installer/plugin.rb +0 -9
- data/lib/redmine-installer/plugins/base.rb +0 -24
- data/lib/redmine-installer/plugins/database.rb +0 -180
- data/lib/redmine-installer/plugins/email_sending.rb +0 -82
- data/lib/redmine-installer/plugins/redmine_plugin.rb +0 -82
- data/lib/redmine-installer/plugins/web_server.rb +0 -26
- data/lib/redmine-installer/step.rb +0 -16
- data/lib/redmine-installer/steps/backup.rb +0 -125
- data/lib/redmine-installer/steps/base.rb +0 -79
- data/lib/redmine-installer/steps/database_config.rb +0 -15
- data/lib/redmine-installer/steps/email_config.rb +0 -11
- data/lib/redmine-installer/steps/env_check.rb +0 -20
- data/lib/redmine-installer/steps/install.rb +0 -23
- data/lib/redmine-installer/steps/load_package.rb +0 -226
- data/lib/redmine-installer/steps/move_redmine.rb +0 -22
- data/lib/redmine-installer/steps/redmine_root.rb +0 -52
- data/lib/redmine-installer/steps/upgrade.rb +0 -57
- data/lib/redmine-installer/steps/validation.rb +0 -38
- data/lib/redmine-installer/steps/webserver_config.rb +0 -22
- data/spec/load_redmine.rb +0 -24
data/lib/redmine-installer.rb
CHANGED
@@ -1,62 +1,75 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
autoload :Helper, 'redmine-installer/helper'
|
10
|
-
autoload :Command, 'redmine-installer/command'
|
11
|
-
autoload :Exec, 'redmine-installer/exec'
|
12
|
-
autoload :Profile, 'redmine-installer/profile'
|
13
|
-
autoload :Git, 'redmine-installer/git'
|
14
|
-
|
15
|
-
# Root of the gem
|
16
|
-
def self.root_path
|
17
|
-
@root_path ||= File.expand_path('..', File.dirname(__FILE__))
|
18
|
-
end
|
19
|
-
|
20
|
-
# Path to locales dir
|
21
|
-
def self.locales_path
|
22
|
-
@locales_path ||= File.join(root_path, 'lib', 'redmine-installer', 'locales')
|
23
|
-
end
|
24
|
-
|
25
|
-
# Locales for I18n
|
26
|
-
def self.locales
|
27
|
-
@locales ||= Dir.glob(File.join(locales_path, '*.yml'))
|
28
|
-
end
|
29
|
-
|
30
|
-
# Default configurations fo I18n gem
|
31
|
-
def self.set_i18n
|
32
|
-
I18n.enforce_available_locales = false
|
33
|
-
I18n.load_path = Redmine::Installer.locales
|
34
|
-
I18n.locale = :en
|
35
|
-
I18n.default_locale = :en
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.print_logo
|
39
|
-
$stdout.puts <<-PRINT
|
40
|
-
__ _
|
41
|
-
_______ ___/ /_ _ (_)__ ___
|
42
|
-
/ __/ -_) _ / ' \\/ / _ \\/ -_)
|
43
|
-
/_/ \\__/\\_,_/_/_/_/_/_//_/\\__/
|
44
|
-
|
45
|
-
|
46
|
-
#{I18n.translate(:powered_by)}
|
47
|
-
|
48
|
-
PRINT
|
49
|
-
end
|
1
|
+
require 'fileutils'
|
2
|
+
require 'tempfile'
|
3
|
+
require 'bundler'
|
4
|
+
require 'ostruct'
|
5
|
+
require 'tmpdir'
|
6
|
+
require 'pastel'
|
7
|
+
require 'yaml'
|
8
|
+
require 'zip'
|
50
9
|
|
10
|
+
require 'tty-progressbar'
|
11
|
+
require 'tty-spinner'
|
12
|
+
require 'tty-prompt'
|
13
|
+
|
14
|
+
module RedmineInstaller
|
15
|
+
autoload :CLI, 'redmine-installer/cli'
|
16
|
+
autoload :Task, 'redmine-installer/task'
|
17
|
+
autoload :Install, 'redmine-installer/install'
|
18
|
+
autoload :Utils, 'redmine-installer/utils'
|
19
|
+
autoload :Logger, 'redmine-installer/logger'
|
20
|
+
autoload :TaskModule, 'redmine-installer/task_module'
|
21
|
+
autoload :Environment, 'redmine-installer/environment'
|
22
|
+
autoload :Redmine, 'redmine-installer/redmine'
|
23
|
+
autoload :Package, 'redmine-installer/package'
|
24
|
+
autoload :Database, 'redmine-installer/database'
|
25
|
+
autoload :Configuration, 'redmine-installer/configuration'
|
26
|
+
autoload :Upgrade, 'redmine-installer/upgrade'
|
27
|
+
autoload :Command, 'redmine-installer/command'
|
28
|
+
autoload :Profile, 'redmine-installer/profile'
|
29
|
+
autoload :Backup, 'redmine-installer/backup'
|
30
|
+
|
31
|
+
# Settings
|
32
|
+
MIN_SUPPORTED_RUBY = '2.1.0'
|
33
|
+
|
34
|
+
def self.logger
|
35
|
+
@logger ||= RedmineInstaller::Logger.new
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.prompt
|
39
|
+
@prompt ||= TTY::Prompt.new
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.pastel
|
43
|
+
@pastel ||= Pastel.new
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.print_logo
|
47
|
+
puts <<-PRINT
|
48
|
+
__ _
|
49
|
+
_______ ___/ /_ _ (_)__ ___
|
50
|
+
/ __/ -_) _ / ' \\/ / _ \\/ -_)
|
51
|
+
/_/ \\__/\\_,_/_/_/_/_/_//_/\\__/
|
52
|
+
|
53
|
+
|
54
|
+
Powered by EasyRedmine
|
55
|
+
|
56
|
+
PRINT
|
51
57
|
end
|
52
58
|
end
|
53
59
|
|
60
|
+
|
54
61
|
# Requirements
|
55
|
-
require 'i18n'
|
56
62
|
require 'redmine-installer/version'
|
57
|
-
require 'redmine-installer/
|
58
|
-
|
59
|
-
|
60
|
-
require 'redmine-installer/
|
61
|
-
require 'redmine-installer/
|
62
|
-
|
63
|
+
require 'redmine-installer/errors'
|
64
|
+
|
65
|
+
# Patches
|
66
|
+
require 'redmine-installer/patches/ruby'
|
67
|
+
require 'redmine-installer/patches/tty'
|
68
|
+
|
69
|
+
if ENV['REDMINE_INSTALLER_SPEC']
|
70
|
+
require 'redmine-installer/spec/spec'
|
71
|
+
end
|
72
|
+
|
73
|
+
Kernel.at_exit do
|
74
|
+
RedmineInstaller.logger.finish
|
75
|
+
end
|
data/redmine-installer.gemspec
CHANGED
@@ -1,32 +1,33 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'redmine-installer/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
-
spec.version =
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary = %q{Easy way how install/upgrade
|
12
|
-
spec.description = %q{
|
13
|
-
|
14
|
-
|
15
|
-
spec.homepage = "https://github.com/easyredmine/redmine-installer"
|
16
|
-
spec.license = "MIT"
|
8
|
+
spec.name = 'redmine-installer'
|
9
|
+
spec.version = RedmineInstaller::VERSION
|
10
|
+
spec.authors = ['Ondřej Moravčík']
|
11
|
+
spec.email = ['moravcik.ondrej@gmail.com']
|
12
|
+
spec.summary = %q{Easy way how install/upgrade Redmine, EasyRedmine or EasyProject.}
|
13
|
+
spec.description = %q{}
|
14
|
+
spec.homepage = 'https://github.com/easyredmine/redmine-installer'
|
15
|
+
spec.license = 'MIT'
|
17
16
|
|
18
17
|
spec.files = `git ls-files -z`.split("\x0")
|
19
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
|
22
|
+
spec.required_ruby_version = '>= 2.1.0'
|
22
23
|
|
23
|
-
spec.add_runtime_dependency
|
24
|
-
spec.add_runtime_dependency
|
25
|
-
spec.add_runtime_dependency
|
26
|
-
spec.add_runtime_dependency
|
27
|
-
spec.add_runtime_dependency
|
28
|
-
spec.add_runtime_dependency
|
24
|
+
spec.add_runtime_dependency 'commander'
|
25
|
+
spec.add_runtime_dependency 'tty-prompt', '~> 0.10.0'
|
26
|
+
spec.add_runtime_dependency 'tty-spinner', '~> 0.4.1'
|
27
|
+
spec.add_runtime_dependency 'tty-progressbar', '~> 0.10.1'
|
28
|
+
spec.add_runtime_dependency 'rubyzip'
|
29
|
+
spec.add_runtime_dependency 'pastel'
|
29
30
|
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
31
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
32
|
+
spec.add_development_dependency 'rake'
|
32
33
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rspec/expectations'
|
2
|
+
|
3
|
+
RSpec::Matchers.define :have_output do |text|
|
4
|
+
match do |process|
|
5
|
+
expect(process.get(text)).to include(text)
|
6
|
+
end
|
7
|
+
|
8
|
+
failure_message do |process|
|
9
|
+
"expected that \"#{process.last_get_return}\" would contains: #{text}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
RSpec::Matchers.define :have_output_in do |text, second|
|
14
|
+
match do |process|
|
15
|
+
expect(process.get(text, max_wait: second)).to include(text)
|
16
|
+
end
|
17
|
+
|
18
|
+
failure_message do |process|
|
19
|
+
"expected that \"#{process.last_get_return}\" would contains: #{text} in #{second}s"
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
module InstallerHelper
|
2
|
+
|
3
|
+
def db_username
|
4
|
+
ENV['SPEC_DB_USERNAME'].to_s
|
5
|
+
end
|
6
|
+
|
7
|
+
def db_password
|
8
|
+
ENV['SPEC_DB_PASSWORD'].to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
def expected_output(text)
|
12
|
+
expect(@process).to have_output(text)
|
13
|
+
end
|
14
|
+
|
15
|
+
def expected_output_in(text, max_wait)
|
16
|
+
expect(@process).to have_output_in(text, max_wait)
|
17
|
+
end
|
18
|
+
|
19
|
+
def write(text)
|
20
|
+
@process.write(text + "\n")
|
21
|
+
end
|
22
|
+
|
23
|
+
# Be carefull - this could have later unpredictable consequences on stdin
|
24
|
+
def select_choice
|
25
|
+
@process.write(' ')
|
26
|
+
# @process.write("\r")
|
27
|
+
# @process.write("\r\n")
|
28
|
+
end
|
29
|
+
|
30
|
+
def go_down
|
31
|
+
write(TTY::Prompt::Reader::Codes::KEY_DOWN)
|
32
|
+
end
|
33
|
+
|
34
|
+
def expected_successful_configuration
|
35
|
+
expected_output('Creating database configuration')
|
36
|
+
expected_output('What database do you want use?')
|
37
|
+
expected_output('‣ MySQL')
|
38
|
+
|
39
|
+
write(TTY::Prompt::Reader::Codes::KEY_DOWN)
|
40
|
+
expected_output('‣ PostgreSQL')
|
41
|
+
select_choice
|
42
|
+
|
43
|
+
expected_output('Database:')
|
44
|
+
write('test')
|
45
|
+
|
46
|
+
expected_output('Host: (localhost)')
|
47
|
+
write('')
|
48
|
+
|
49
|
+
expected_output('Username:')
|
50
|
+
write(db_username)
|
51
|
+
|
52
|
+
expected_output('Password:')
|
53
|
+
write(db_password)
|
54
|
+
|
55
|
+
expected_output('Encoding: (utf8)')
|
56
|
+
write('')
|
57
|
+
|
58
|
+
expected_output('Port: (5432)')
|
59
|
+
write('')
|
60
|
+
|
61
|
+
expected_output('Creating email configuration')
|
62
|
+
expected_output('Which service to use for email sending?')
|
63
|
+
expected_output('‣ Nothing')
|
64
|
+
select_choice
|
65
|
+
end
|
66
|
+
|
67
|
+
def expected_successful_installation_or_upgrade(db_creating: false)
|
68
|
+
expected_output_in('--> Bundle install', 50)
|
69
|
+
expected_output_in('--> Database creating', 50) if db_creating
|
70
|
+
expected_output_in('--> Database migrating', 50)
|
71
|
+
expected_output_in('--> Plugins migration', 50)
|
72
|
+
expected_output_in('--> Generating secret token', 50)
|
73
|
+
|
74
|
+
expected_output('Cleaning root ... OK')
|
75
|
+
expected_output('Moving redmine to target directory ... OK')
|
76
|
+
expected_output('Cleanning up ... OK')
|
77
|
+
expected_output('Moving installer log ... OK')
|
78
|
+
end
|
79
|
+
|
80
|
+
def expected_successful_installation
|
81
|
+
expected_output('Redmine installing')
|
82
|
+
expected_successful_installation_or_upgrade(db_creating: true)
|
83
|
+
expected_output('Redmine was installed')
|
84
|
+
end
|
85
|
+
|
86
|
+
def expected_successful_upgrade
|
87
|
+
expected_output('Redmine upgrading')
|
88
|
+
expected_successful_installation_or_upgrade
|
89
|
+
expected_output('Redmine was upgraded')
|
90
|
+
|
91
|
+
expected_output('Do you want save steps for further use?')
|
92
|
+
write('n')
|
93
|
+
end
|
94
|
+
|
95
|
+
def expected_redmine_version(version)
|
96
|
+
Dir.chdir(@redmine_root) do
|
97
|
+
out = `rails runner "puts Redmine::VERSION.to_s"`
|
98
|
+
expect($?.success?).to be_truthy
|
99
|
+
expect(out).to include(version)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def wait_for_stdin_buffer
|
104
|
+
sleep 0.5
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'childprocess'
|
2
|
+
|
3
|
+
class InstallerProcess
|
4
|
+
|
5
|
+
attr_reader :stdout, :last_get_return
|
6
|
+
|
7
|
+
def initialize(command, *args)
|
8
|
+
tempfile_out = File.open('redmine-installer-out', 'w')
|
9
|
+
tempfile_err = File.open('redmine-installer-err', 'w')
|
10
|
+
|
11
|
+
tempfile_out.sync = true
|
12
|
+
tempfile_err.sync = true
|
13
|
+
|
14
|
+
@process = ChildProcess.build('bin/redmine', command, *args.flatten.compact)
|
15
|
+
@process.io.stdout = tempfile_out
|
16
|
+
@process.io.stderr = tempfile_err
|
17
|
+
@process.environment['REDMINE_INSTALLER_SPEC'] = '1'
|
18
|
+
@process.environment['REDMINE_INSTALLER_LOGFILE'] = File.expand_path(File.join(File.dirname(__FILE__), '..', 'log.log'))
|
19
|
+
@process.duplex = true
|
20
|
+
@process.detach = true
|
21
|
+
|
22
|
+
# Because of file description is shared with redmine installer
|
23
|
+
# so changing posiiotn has effect fot both processes
|
24
|
+
@stdout = File.open(tempfile_out.path)
|
25
|
+
|
26
|
+
@last_get_return = ''
|
27
|
+
@buffer = ''
|
28
|
+
@seek = 0
|
29
|
+
end
|
30
|
+
|
31
|
+
def run
|
32
|
+
start
|
33
|
+
yield
|
34
|
+
ensure
|
35
|
+
stop
|
36
|
+
end
|
37
|
+
|
38
|
+
def start
|
39
|
+
@process.start
|
40
|
+
end
|
41
|
+
|
42
|
+
def stop
|
43
|
+
@process.stop
|
44
|
+
end
|
45
|
+
|
46
|
+
def write(text)
|
47
|
+
@process.io.stdin << text
|
48
|
+
|
49
|
+
# @process.io.stdin.puts(text)
|
50
|
+
# @process.io.stdin.flush
|
51
|
+
|
52
|
+
# @process.io.stdin.syswrite(text + "\n")
|
53
|
+
# @process.io.stdin.flush
|
54
|
+
|
55
|
+
# @process.io.stdin.write_nonblock(text + "\n")
|
56
|
+
end
|
57
|
+
|
58
|
+
def get(*args)
|
59
|
+
@last_get_return = _get(*args)
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
# max_wait in s
|
65
|
+
def _get(text, max_wait: 10)
|
66
|
+
wait_to = Time.now + max_wait
|
67
|
+
while Time.now < wait_to
|
68
|
+
@buffer << @stdout.read
|
69
|
+
index = @buffer.rindex(text)
|
70
|
+
|
71
|
+
if index
|
72
|
+
break
|
73
|
+
# return @buffer.slice!(0, index+text.size)
|
74
|
+
else
|
75
|
+
sleep 0.5
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
@buffer
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
DATABASE_DUMP = File.join(Dir.tmpdir, 'redmine_installer_database_backup.sql')
|
4
|
+
|
5
|
+
RSpec.describe 'RedmineInstaller backup / restore', order: :defined do
|
6
|
+
|
7
|
+
let(:project_count) { 5 }
|
8
|
+
|
9
|
+
it 'create backup', :install_first, command: 'backup' do
|
10
|
+
# First ensure `project_count` project
|
11
|
+
Dir.chdir(@redmine_root) do
|
12
|
+
out = `rails runner "
|
13
|
+
Project.delete_all
|
14
|
+
|
15
|
+
#{project_count}.times do |i|
|
16
|
+
p = Project.new
|
17
|
+
p.name = 'Test ' + i.to_s
|
18
|
+
p.identifier = 'test_' + i.to_s
|
19
|
+
p.save(validate: false)
|
20
|
+
end
|
21
|
+
|
22
|
+
puts Project.count
|
23
|
+
"`
|
24
|
+
|
25
|
+
expect($?.success?).to be_truthy
|
26
|
+
expect(out.to_i).to eq(project_count)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Backup database
|
30
|
+
expected_output('Path to redmine root:')
|
31
|
+
write(@redmine_root)
|
32
|
+
expected_output('Data backup')
|
33
|
+
go_down
|
34
|
+
expected_output('‣ Only database')
|
35
|
+
select_choice
|
36
|
+
expected_output('Where to save backup:')
|
37
|
+
write(@backup_dir)
|
38
|
+
expected_output('Database backuping')
|
39
|
+
expected_output('Database backed up')
|
40
|
+
|
41
|
+
# Ensure 0 project (database is shared with all tests)
|
42
|
+
Dir.chdir(@redmine_root) do
|
43
|
+
out = `rails runner "
|
44
|
+
Project.delete_all
|
45
|
+
puts Project.count
|
46
|
+
"`
|
47
|
+
|
48
|
+
expect($?.success?).to be_truthy
|
49
|
+
expect(out.to_i).to eq(0)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Save backup (after test end - all backup will be deleted)
|
53
|
+
dump = Dir.glob(File.join(@backup_dir, '*', '*')).last
|
54
|
+
expect(dump).to end_with('test.sql')
|
55
|
+
|
56
|
+
FileUtils.rm_f(DATABASE_DUMP)
|
57
|
+
FileUtils.cp(dump, DATABASE_DUMP)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'restore', command: 'install', args: [package_v310, '--database-dump', DATABASE_DUMP] do
|
61
|
+
expected_output('Path to redmine root:')
|
62
|
+
write(@redmine_root)
|
63
|
+
|
64
|
+
expected_successful_configuration
|
65
|
+
|
66
|
+
expected_output('Database dump will be loaded.')
|
67
|
+
expected_output('‣ Skip dump loading')
|
68
|
+
|
69
|
+
go_down
|
70
|
+
expected_output('‣ I am aware of this.')
|
71
|
+
select_choice
|
72
|
+
|
73
|
+
expected_output_in('Redmine was installed', 500)
|
74
|
+
|
75
|
+
Dir.chdir(@redmine_root) do
|
76
|
+
out = `rails runner "puts Project.count"`
|
77
|
+
expect(out.to_i).to eq(project_count)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|