vvm-rb 0.2.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +10 -8
- data/Gemfile +5 -5
- data/VERSION +1 -1
- data/bin/vvm +13 -0
- data/lib/vvm/accessor.rb +37 -0
- data/lib/vvm/cli.rb +78 -0
- data/lib/vvm/constants.rb +3 -0
- data/lib/vvm/ext/mkmf.rb +8 -0
- data/lib/vvm/installer.rb +83 -0
- data/lib/vvm/switcher.rb +18 -0
- data/lib/vvm/uninstaller.rb +23 -0
- data/lib/vvm/validator.rb +55 -0
- data/lib/vvm/version.rb +43 -0
- data/lib/vvm.rb +10 -0
- data/spec/accessor_spec.rb +40 -0
- data/spec/installer_spec.rb +19 -18
- data/spec/spec_helper.rb +3 -7
- data/spec/switcher_spec.rb +5 -5
- data/spec/uninstaller_spec.rb +6 -5
- data/spec/validator_spec.rb +13 -30
- data/spec/version_spec.rb +12 -12
- data/vvm-rb.gemspec +32 -32
- metadata +26 -26
- data/bin/vvm-rb +0 -14
- data/lib/vvm-rb/accesser.rb +0 -35
- data/lib/vvm-rb/base.rb +0 -19
- data/lib/vvm-rb/cli.rb +0 -101
- data/lib/vvm-rb/constants.rb +0 -1
- data/lib/vvm-rb/installer.rb +0 -68
- data/lib/vvm-rb/switcher.rb +0 -17
- data/lib/vvm-rb/uninstaller.rb +0 -21
- data/lib/vvm-rb/validator.rb +0 -44
- data/lib/vvm-rb/version.rb +0 -41
- data/lib/vvm-rb.rb +0 -13
- data/spec/accesser_spec.rb +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d205eff702304a8422fee7de8fb6104dcfe8edfb
|
4
|
+
data.tar.gz: c60209e5e6328a7a8d33ea581d8fed9336f4fef5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26a043ccc72fdcbd398190ac5ba44be137c149b9b51762d886ef1d39da7686454510a89c1645aeab0bf920e624c9f453d441d4199cab1a62242c5273d596d95f
|
7
|
+
data.tar.gz: 78f2b9d88963a33e02f21ac2a66eb2233e9d16e7c52d7291407ac3383e0f5a3aed616ad9016cef3d4c1e4a6c17c31d48aac548ed1635b9e73af0b20b8571f13d
|
data/.rubocop.yml
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
|
-
- .bundle
|
4
|
-
- .git
|
5
|
-
- .vvm_cache
|
6
|
-
- coverage
|
7
|
-
- etc
|
8
|
-
- pkg
|
9
|
-
- vendor
|
3
|
+
- .bundle/**/*
|
4
|
+
- .git/**/*
|
5
|
+
- .vvm_cache/**/*
|
6
|
+
- coverage/**/*
|
7
|
+
- etc/**/*
|
8
|
+
- pkg/**/*
|
9
|
+
- vendor/**/*
|
10
|
+
- Rakefile
|
11
|
+
- vvm-rb.gemspec
|
10
12
|
LineLength:
|
11
|
-
Max:
|
13
|
+
Max: 90
|
12
14
|
MethodLength:
|
13
15
|
Max: 30
|
14
16
|
RedundantReturn:
|
data/Gemfile
CHANGED
@@ -3,10 +3,10 @@ source 'http://rubygems.org'
|
|
3
3
|
gem 'thor', '~> 0.19.1'
|
4
4
|
|
5
5
|
group :development do
|
6
|
-
gem 'rspec', '~>
|
7
|
-
gem 'rubocop', '~> 0.
|
8
|
-
gem 'rdoc', '~> 4.1
|
9
|
-
gem 'jeweler', '~> 2.0
|
10
|
-
gem 'simplecov', '~> 0.
|
6
|
+
gem 'rspec', '~> 3.0'
|
7
|
+
gem 'rubocop', '~> 0.25.0'
|
8
|
+
gem 'rdoc', '~> 4.1'
|
9
|
+
gem 'jeweler', '~> 2.0'
|
10
|
+
gem 'simplecov', '~> 0.9.0'
|
11
11
|
gem 'coveralls', '~> 0.7.0', require: false
|
12
12
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/bin/vvm
ADDED
data/lib/vvm/accessor.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module Vvm
|
2
|
+
module Accessor
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def get_dot_dir
|
6
|
+
File.expand_path(ENV['VVMROOT'] || '~/.vvm-rb')
|
7
|
+
end
|
8
|
+
|
9
|
+
def get_etc_dir
|
10
|
+
File.join(get_dot_dir, 'etc')
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_repos_dir
|
14
|
+
File.join(get_dot_dir, 'repos')
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_src_dir(version = '')
|
18
|
+
File.join(get_dot_dir, 'src', version)
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_vims_dir(version = '')
|
22
|
+
File.join(get_dot_dir, 'vims', version)
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_vimorg_dir
|
26
|
+
File.join(get_repos_dir, 'vimorg')
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_login_file
|
30
|
+
File.join(get_etc_dir, 'login')
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_current_dir
|
34
|
+
File.join(get_vims_dir, 'current')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/vvm/cli.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module Vvm
|
4
|
+
class Cli < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
include Validator
|
7
|
+
|
8
|
+
desc 'install [VERSION] [CONFIGURE_OPTS]', 'Install a specific version of Vim'
|
9
|
+
method_option :use, type: :boolean, aliases: '-u', banner: 'Use installed vim'
|
10
|
+
def install(version, *conf)
|
11
|
+
i = Installer.new(Version.format(version), conf)
|
12
|
+
i.checkout
|
13
|
+
i.configure
|
14
|
+
i.make_install
|
15
|
+
Installer.cp_etc
|
16
|
+
|
17
|
+
invoke :use, [version], {} if options[:use]
|
18
|
+
i.message
|
19
|
+
end
|
20
|
+
|
21
|
+
desc 'update', 'Update to latest version of Vim'
|
22
|
+
def update
|
23
|
+
current = Version.current
|
24
|
+
if current == 'system'
|
25
|
+
run 'vvm install --use latest'
|
26
|
+
run 'vvm use system' unless $?.success?
|
27
|
+
else
|
28
|
+
run 'vvm use system'
|
29
|
+
run 'vvm install --use latest'
|
30
|
+
action = $?.success? ? 'uninstall' : 'use'
|
31
|
+
run "vvm #{action} #{current}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'reinstall [VERSION] [CONFIGURE_OPTS]', 'Reinstall a specific version'
|
36
|
+
def reinstall(version, *conf)
|
37
|
+
invoke :uninstall, [version]
|
38
|
+
invoke :install, [version, *conf]
|
39
|
+
end
|
40
|
+
|
41
|
+
desc 'rebuild [VERSION] [CONFIGURE_OPTS]', 'Rebuild a specific version of Vim'
|
42
|
+
def rebuild(version, *conf)
|
43
|
+
r = Installer.new(Version.format(version), conf)
|
44
|
+
r.make_clean
|
45
|
+
r.configure
|
46
|
+
r.make_install
|
47
|
+
end
|
48
|
+
|
49
|
+
desc 'use [VERSION]', 'Use a specific version of Vim as the default one.'
|
50
|
+
def use(version)
|
51
|
+
Switcher.new(Version.format(version)).use
|
52
|
+
end
|
53
|
+
|
54
|
+
desc 'list', 'Look available versions of Vim.'
|
55
|
+
def list
|
56
|
+
puts Version.list.join("\n")
|
57
|
+
end
|
58
|
+
|
59
|
+
desc 'versions', 'Look installed versions of Vim.'
|
60
|
+
def versions
|
61
|
+
puts Version.versions.join("\n")
|
62
|
+
end
|
63
|
+
|
64
|
+
desc 'uninstall [VERSION]', 'Uninstall a specific version of Vim.'
|
65
|
+
def uninstall(version)
|
66
|
+
Uninstaller.new(Version.format(version)).uninstall
|
67
|
+
end
|
68
|
+
|
69
|
+
no_commands do
|
70
|
+
def invoke_command(command, *args)
|
71
|
+
validate_before_invoke(command.name)
|
72
|
+
Installer.pull if %w(install list).include?(command.name)
|
73
|
+
Installer.fetch unless File.exist?(get_vimorg_dir)
|
74
|
+
super
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/lib/vvm/ext/mkmf.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Vvm
|
4
|
+
class Installer
|
5
|
+
def initialize(version, conf, silent = false)
|
6
|
+
vvmopt = ENV['VVMOPT']
|
7
|
+
@silent = silent ? '> /dev/null 2>&1' : ''
|
8
|
+
@version = version
|
9
|
+
@conf = conf.flatten.empty? && vvmopt ? vvmopt.split(' ') : conf
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.fetch
|
13
|
+
FileUtils.mkdir_p(get_repos_dir)
|
14
|
+
repos_dir = get_vimorg_dir
|
15
|
+
system("hg -q clone #{VIM_URI} #{repos_dir}") unless File.exist?(repos_dir)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.pull
|
19
|
+
Dir.chdir(get_vimorg_dir) { system('hg -q pull') }
|
20
|
+
end
|
21
|
+
|
22
|
+
def checkout
|
23
|
+
src_dir = get_src_dir
|
24
|
+
FileUtils.mkdir_p(src_dir)
|
25
|
+
return if File.exist?(get_src_dir(@version))
|
26
|
+
archive = "hg archive -t tar -r #{@version} -p #{@version} -"
|
27
|
+
expand = "(cd #{src_dir} && tar xf -)"
|
28
|
+
Dir.chdir get_vimorg_dir do
|
29
|
+
system("#{archive} | #{expand} #{@silent}")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def configure
|
34
|
+
vims_dir = get_vims_dir(@version)
|
35
|
+
src_dir = get_src_dir(@version)
|
36
|
+
default = "--prefix=#{vims_dir}"
|
37
|
+
Dir.chdir src_dir do
|
38
|
+
system("./configure #{default} #{@conf.join(' ')} #{@silent}")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def make_clean
|
43
|
+
src_dir = get_src_dir(@version)
|
44
|
+
Dir.chdir src_dir do
|
45
|
+
system("make clean #{@silent}")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def make_install
|
50
|
+
src_dir = get_src_dir(@version)
|
51
|
+
Dir.chdir src_dir do
|
52
|
+
system("make all install #{@silent}")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.cp_etc
|
57
|
+
current_login = get_login_file
|
58
|
+
path = File.join(File.dirname(__FILE__), '..', '..', 'etc', 'login')
|
59
|
+
login = File.expand_path(path)
|
60
|
+
if !File.exist?(current_login)
|
61
|
+
etc_dir = get_etc_dir
|
62
|
+
FileUtils.mkdir_p(etc_dir)
|
63
|
+
FileUtils.cp(login, etc_dir)
|
64
|
+
elsif !FileUtils.compare_file(login, current_login)
|
65
|
+
FileUtils.cp(login, get_etc_dir)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def message
|
70
|
+
return if !$?.success? || @silent.empty?
|
71
|
+
print "\e[32m"
|
72
|
+
puts <<-EOS
|
73
|
+
|
74
|
+
Vim is successfully installed. For daily use,
|
75
|
+
please add the following line into your ~/.bash_login etc:
|
76
|
+
|
77
|
+
test -f ~/.vvm-rb/etc/login && source ~/.vvm-rb/etc/login
|
78
|
+
|
79
|
+
EOS
|
80
|
+
print "\e[0m"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
data/lib/vvm/switcher.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Vvm
|
4
|
+
class Switcher
|
5
|
+
def initialize(version)
|
6
|
+
@version = version
|
7
|
+
end
|
8
|
+
|
9
|
+
def use
|
10
|
+
current = get_current_dir
|
11
|
+
FileUtils.rm(current) if File.exist?(current)
|
12
|
+
return if @version == 'system'
|
13
|
+
vims_dir = get_vims_dir(@version)
|
14
|
+
abort "#{@version} is not installed." unless File.exist?(vims_dir)
|
15
|
+
FileUtils.ln_s(vims_dir, current)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Vvm
|
4
|
+
class Uninstaller
|
5
|
+
def initialize(version)
|
6
|
+
@version = version
|
7
|
+
end
|
8
|
+
|
9
|
+
def uninstall
|
10
|
+
current = get_current_dir
|
11
|
+
vims_dir = get_vims_dir(@version)
|
12
|
+
src_dir = get_src_dir(@version)
|
13
|
+
if File.exist?(current)
|
14
|
+
target = File.readlink(current)
|
15
|
+
if target == vims_dir
|
16
|
+
abort "#{@version} can not be uninstalled; it is currently used."
|
17
|
+
end
|
18
|
+
end
|
19
|
+
FileUtils.rm_rf(src_dir) if File.exist?(src_dir)
|
20
|
+
FileUtils.rm_rf(vims_dir) if File.exist?(vims_dir)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
|
3
|
+
module Vvm
|
4
|
+
module Validator
|
5
|
+
module_function
|
6
|
+
|
7
|
+
def validate_before_invoke(command)
|
8
|
+
new_version? if command == 'install'
|
9
|
+
has_version? if %w(reinstall rebuild use uninstall).include?(command)
|
10
|
+
version? if %w(install reinstall rebuild use uninstall).include?(command)
|
11
|
+
has_hg? if %w(install reinstall rebuild list).include?(command)
|
12
|
+
end
|
13
|
+
|
14
|
+
def has_hg?
|
15
|
+
unless Kernel.find_executable('hg')
|
16
|
+
abort 'mercurial is required to install.'
|
17
|
+
end
|
18
|
+
return true
|
19
|
+
end
|
20
|
+
|
21
|
+
def version?
|
22
|
+
if get_version.nil?
|
23
|
+
abort 'undefined vim version. please run [ vvm-rb list ].'
|
24
|
+
end
|
25
|
+
return true
|
26
|
+
end
|
27
|
+
|
28
|
+
def new_version?(version = get_version)
|
29
|
+
abort "#{version} is already installed." if version_include?(version)
|
30
|
+
return true
|
31
|
+
end
|
32
|
+
|
33
|
+
def has_version?(version = get_version)
|
34
|
+
abort "#{version} is not installed." unless version_include?(version)
|
35
|
+
return true
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def get_version
|
41
|
+
version_regex = /\Av7-.+\z|\A(\d\.\d(a|b){0,1}(\.\d+){0,1})\z/
|
42
|
+
regex = /(\Astart\z|\Atip\z|\Asystem\z|\Alatest\z|#{version_regex})/
|
43
|
+
version = $*.find { |v| v =~ regex }
|
44
|
+
return Version.format(version)
|
45
|
+
end
|
46
|
+
|
47
|
+
def version_include?(version)
|
48
|
+
return Version.versions.include?(version) || use_system?(version)
|
49
|
+
end
|
50
|
+
|
51
|
+
def use_system?(version)
|
52
|
+
return version == 'system' && $*.include?('use')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/vvm/version.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module Vvm
|
2
|
+
class Version
|
3
|
+
def self.list
|
4
|
+
Dir.chdir(get_vimorg_dir) do
|
5
|
+
list = `hg tags`.split.reverse
|
6
|
+
return list.values_at(* list.each_index.select { |i| i.odd? })
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.versions
|
11
|
+
output = []
|
12
|
+
vims_dir = get_vims_dir
|
13
|
+
return output unless File.exist?(vims_dir)
|
14
|
+
Dir.glob(File.join(vims_dir, 'v*')).sort.each do |d|
|
15
|
+
output << File.basename(d)
|
16
|
+
end
|
17
|
+
return output
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.latest
|
21
|
+
return list.select { |v| v =~ /\Av7-.+\z/ }.last
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.current
|
25
|
+
c = get_current_dir
|
26
|
+
return File.exist?(c) ? File.basename(File.readlink(c)) : 'system'
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.convert(version)
|
30
|
+
return "v#{version.gsub(/\./, '-')}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.format(version)
|
34
|
+
case version
|
35
|
+
when /\Alatest\z/
|
36
|
+
version = latest
|
37
|
+
when /\A(\d\.\d(a|b){0,1}(\.\d+){0,1})\z/
|
38
|
+
version = convert(version)
|
39
|
+
end
|
40
|
+
return version
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/vvm.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require_relative 'vvm/ext/mkmf'
|
2
|
+
require_relative 'vvm/constants'
|
3
|
+
require_relative 'vvm/installer'
|
4
|
+
require_relative 'vvm/uninstaller'
|
5
|
+
require_relative 'vvm/switcher'
|
6
|
+
require_relative 'vvm/validator'
|
7
|
+
require_relative 'vvm/accessor'
|
8
|
+
require_relative 'vvm/version'
|
9
|
+
|
10
|
+
include Vvm::Accessor
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Accessor' do
|
4
|
+
it 'can access vvm-rb home directory' do
|
5
|
+
expect(File.exist?(get_dot_dir)).to be_truthy
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'can access etc directory' do
|
9
|
+
expect(File.exist?(get_etc_dir)).to be_truthy
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'can access repos directory' do
|
13
|
+
expect(File.exist?(get_repos_dir)).to be_truthy
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'can access src directory' do
|
17
|
+
expect(File.exist?(get_src_dir)).to be_truthy
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'can access vims directory' do
|
21
|
+
expect(File.exist?(get_vims_dir)).to be_truthy
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'can access vimorg directory' do
|
25
|
+
expect(File.exist?(get_vimorg_dir)).to be_truthy
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'can access login file' do
|
29
|
+
expect(File.exist?(get_login_file)).to be_truthy
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'of current directory' do
|
33
|
+
before { Vvm::Switcher.new(VERSION1).use }
|
34
|
+
after { Vvm::Switcher.new('system').use }
|
35
|
+
|
36
|
+
it 'can access current directory' do
|
37
|
+
expect(File.exist?(get_current_dir)).to be_truthy
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/spec/installer_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe 'Installer', disable_cache: true do
|
|
4
4
|
before :all do
|
5
5
|
ENV['VVMOPT'] = '--enable-rubyinterp'
|
6
6
|
@version = VERSION1
|
7
|
-
@installer = Installer.new(@version, [], true)
|
7
|
+
@installer = Vvm::Installer.new(@version, [], true)
|
8
8
|
end
|
9
9
|
|
10
10
|
let(:version_src_dir) { get_src_dir(@version) }
|
@@ -13,29 +13,29 @@ describe 'Installer', disable_cache: true do
|
|
13
13
|
|
14
14
|
describe 'install' do
|
15
15
|
context 'fetch', clean: true do
|
16
|
-
before(:all) { Installer.fetch }
|
16
|
+
before(:all) { Vvm::Installer.fetch }
|
17
17
|
|
18
18
|
it 'exists vimorg dir' do
|
19
|
-
expect(File.exist?(get_vimorg_dir)).to
|
19
|
+
expect(File.exist?(get_vimorg_dir)).to be_truthy
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'success to clone' do
|
23
|
-
expect($?.success?).to
|
23
|
+
expect($?.success?).to be_truthy
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'exists configure file' do
|
27
|
-
expect(File.exist?(File.join(get_vimorg_dir, 'configure'))).to
|
27
|
+
expect(File.exist?(File.join(get_vimorg_dir, 'configure'))).to be_truthy
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
context 'pull', clean: true, vimorg: true do
|
32
32
|
before :all do
|
33
33
|
Dir.chdir(get_vimorg_dir) { system('hg rollback') }
|
34
|
-
Installer.pull
|
34
|
+
Vvm::Installer.pull
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'success to pull' do
|
38
|
-
expect($?.success?).to
|
38
|
+
expect($?.success?).to be_truthy
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'vim is uptodate' do
|
@@ -51,11 +51,12 @@ describe 'Installer', disable_cache: true do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'exists src dir' do
|
54
|
-
expect(File.exist?(version_src_dir)).to
|
54
|
+
expect(File.exist?(version_src_dir)).to be_truthy
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'exists configure file' do
|
58
|
-
|
58
|
+
configure = File.join(version_src_dir, 'configure')
|
59
|
+
expect(File.exist?(configure)).to be_truthy
|
59
60
|
end
|
60
61
|
end
|
61
62
|
|
@@ -66,11 +67,11 @@ describe 'Installer', disable_cache: true do
|
|
66
67
|
end
|
67
68
|
|
68
69
|
it 'exists vims dir' do
|
69
|
-
expect(File.exist?(version_vims_dir)).to
|
70
|
+
expect(File.exist?(version_vims_dir)).to be_truthy
|
70
71
|
end
|
71
72
|
|
72
73
|
it 'can execute vim' do
|
73
|
-
expect(system("#{vim} --version > /dev/null 2>&1")).to
|
74
|
+
expect(system("#{vim} --version > /dev/null 2>&1")).to be_truthy
|
74
75
|
end
|
75
76
|
|
76
77
|
it 'enable rubyinterp' do
|
@@ -80,27 +81,27 @@ describe 'Installer', disable_cache: true do
|
|
80
81
|
|
81
82
|
context 'cp_etc', clean: true do
|
82
83
|
context 'login file not exist' do
|
83
|
-
before(:all) { Installer.cp_etc }
|
84
|
+
before(:all) { Vvm::Installer.cp_etc }
|
84
85
|
|
85
86
|
it 'exists etc dir' do
|
86
|
-
expect(File.exist?(get_etc_dir)).to
|
87
|
+
expect(File.exist?(get_etc_dir)).to be_truthy
|
87
88
|
end
|
88
89
|
|
89
90
|
it 'exists login file' do
|
90
|
-
expect(File.exist?(get_login_file)).to
|
91
|
+
expect(File.exist?(get_login_file)).to be_truthy
|
91
92
|
end
|
92
93
|
end
|
93
94
|
|
94
95
|
context 'login file exists and it is not latest' do
|
95
|
-
before
|
96
|
-
FileUtils.
|
96
|
+
before do
|
97
|
+
allow(FileUtils).to receive(:compare_file).and_return(false)
|
97
98
|
end
|
98
99
|
|
99
100
|
it 'exists login file' do
|
100
101
|
path = File.join(File.dirname(__FILE__), '..', 'etc', 'login')
|
101
102
|
login = File.expand_path(path)
|
102
103
|
expect(FileUtils).to receive(:cp).with(login, get_etc_dir)
|
103
|
-
Installer.cp_etc
|
104
|
+
Vvm::Installer.cp_etc
|
104
105
|
end
|
105
106
|
end
|
106
107
|
end
|
@@ -114,7 +115,7 @@ describe 'Installer', disable_cache: true do
|
|
114
115
|
|
115
116
|
it 'not exists objects dir' do
|
116
117
|
path = File.join(version_src_dir, 'src', 'objects', '*')
|
117
|
-
expect(Dir[path].empty?).to
|
118
|
+
expect(Dir[path].empty?).to be_truthy
|
118
119
|
end
|
119
120
|
end
|
120
121
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,11 +14,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
14
14
|
require 'rspec'
|
15
15
|
require 'fileutils'
|
16
16
|
require 'tmpdir'
|
17
|
-
require 'vvm
|
18
|
-
include VvmRb
|
19
|
-
|
20
|
-
support = File.join(File.dirname(__FILE__), 'support', '**', '*.rb')
|
21
|
-
Dir[support].each { |f| require f }
|
17
|
+
require 'vvm'
|
22
18
|
|
23
19
|
VERSION1, VERSION2 = 'v7-4-083', 'v7-4-103'
|
24
20
|
|
@@ -30,14 +26,14 @@ RSpec.configure do |config|
|
|
30
26
|
unless File.exist?(cache_dir)
|
31
27
|
ENV['VVMROOT'] = cache_dir
|
32
28
|
FileUtils.mkdir_p(cache_dir)
|
33
|
-
Installer.fetch
|
29
|
+
Vvm::Installer.fetch
|
34
30
|
[VERSION1, VERSION2].each do |v|
|
35
31
|
i = Installer.new(v, [], true)
|
36
32
|
i.checkout
|
37
33
|
i.configure
|
38
34
|
i.make_install
|
39
35
|
end
|
40
|
-
Installer.cp_etc
|
36
|
+
Vvm::Installer.cp_etc
|
41
37
|
end
|
42
38
|
end
|
43
39
|
|
data/spec/switcher_spec.rb
CHANGED
@@ -4,24 +4,24 @@ describe 'Switcher' do
|
|
4
4
|
describe 'use' do
|
5
5
|
context 'system vim' do
|
6
6
|
before :all do
|
7
|
-
Switcher.new('system').use
|
7
|
+
Vvm::Switcher.new('system').use
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'delete current' do
|
11
|
-
expect(File.exist?(get_current_dir)).not_to
|
11
|
+
expect(File.exist?(get_current_dir)).not_to be_truthy
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
context 'different version' do
|
16
16
|
before :all do
|
17
17
|
version = VERSION1
|
18
|
-
Switcher.new(version).use
|
18
|
+
Vvm::Switcher.new(version).use
|
19
19
|
@vims_dir = get_vims_dir(version)
|
20
20
|
@current = get_current_dir
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'exist current' do
|
24
|
-
expect(File.exist?(@current)).to
|
24
|
+
expect(File.exist?(@current)).to be_truthy
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'switch current' do
|
@@ -31,7 +31,7 @@ describe 'Switcher' do
|
|
31
31
|
|
32
32
|
context 'unknown version' do
|
33
33
|
before :all do
|
34
|
-
@switcher = Switcher.new('v7-5')
|
34
|
+
@switcher = Vvm::Switcher.new('v7-5')
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'raise error' do
|