-
Notifications
You must be signed in to change notification settings - Fork 245
/
Copy pathlist_spec.rb
86 lines (73 loc) · 2.96 KB
/
list_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
require File.expand_path('../spec_helper', __FILE__)
module XcodeInstall
describe Command::List do
before do
installer.stubs(:exists).returns(true)
end
def installer
@installer ||= Installer.new
end
def fake_xcode(name)
fixture = Pathname.new('spec/fixtures/xcode_63.json').read
xcode = Xcode.new(JSON.parse(fixture))
xcode.stubs(:name).returns(name)
xcode
end
def fake_xcodes(*names)
xcodes = names.map { |name| fake_xcode(name) }
installer.stubs(:xcodes).returns(xcodes)
end
def fake_installed_xcode(name)
installed_name = name.split(' ').join('.')
xcode_path = "/Applications/Xcode-#{installed_name}.app"
xcode_version = name.split(' ').first
xcode_version << '.0' unless name.include? '.'
installed_xcode = InstalledXcode.new(xcode_path)
installed_xcode.stubs(:version).returns(xcode_version)
installed_xcode.stubs(:bundle_version).returns(Gem::Version.new(xcode_version))
installed_xcode
end
def fake_installed_xcodes(*names)
xcodes = names.map { |name| fake_installed_xcode(name) }
installer.stubs(:installed_versions).returns(xcodes)
end
describe '#list' do
it 'lists all versions' do
fake_xcodes '1', '2.3', '2.3.1', '2.3.2', '3 some', '4 beta', '10 beta'
fake_installed_xcodes
installer.list.should == "1\n2.3\n2.3.1\n2.3.2\n3 some\n4 beta\n10 beta"
end
it 'lists all versions in the correct order' do
fake_xcodes(
'12 beta 4', '12 beta 3', '12 beta 2', '12 for macOS Universal Apps beta 2',
'12 beta', '12 for macOS Universal Apps beta', '12.0.1', '12', '12 beta 6',
'12 beta 5', '12.1 GM seed', '12.2 beta 3', '12.2 beta', '12.2 beta 2'
)
fake_installed_xcodes
versions = [
'12 beta', '12 beta 2', '12 beta 3', '12 beta 4', '12 beta 5', '12 beta 6',
'12 for macOS Universal Apps beta', '12 for macOS Universal Apps beta 2',
'12', '12.0.1', '12.1 GM seed', '12.2 beta', '12.2 beta 2', '12.2 beta 3'
]
installer.list.split("\n").should == versions
end
end
describe '#list_annotated' do
it 'lists all versions with annotations' do
fake_xcodes '1', '2.3', '2.3.1', '2.3.2', '3 some', '4.3.1 for Lion', '9.4.1', '10 beta'
fake_installed_xcodes '2.3', '4.3.1 for Lion', '10 beta'
installer.list.should == "1\n2.3 (installed)\n2.3.1\n2.3.2\n3 some\n4.3.1 for Lion (installed)\n9.4.1\n10 beta (installed)"
end
it 'distinguish between beta and official_version' do
fake_xcodes '11.4', '11.4 beta'
fake_installed_xcodes '11.4'
installer.list.should == "11.4 beta\n11.4 (installed)"
end
it 'distinguish each beta versions' do
fake_xcodes '11.4 beta 3', '11.4 beta'
fake_installed_xcodes '11.4 beta'
installer.list.should == "11.4 beta (installed)\n11.4 beta 3"
end
end
end
end