vvm-rb 0.2.2 → 1.0.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.
- 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
|