revolt 0.5.1
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.
- data/README +150 -0
- data/Rakefile +197 -0
- data/bin/rv_find_levels.rb +186 -0
- data/bin/rv_install_level_urls.rb +191 -0
- data/bin/rv_install_levels.rb +76 -0
- data/examples/find_rv_track.rb +17 -0
- data/examples/install_rv_track.rb +28 -0
- data/lib/revolt/args.rb +46 -0
- data/lib/revolt/config.rb +5 -0
- data/lib/revolt/exceptions.rb +34 -0
- data/lib/revolt/fetcher/file_system.rb +31 -0
- data/lib/revolt/fetcher/www.rb +117 -0
- data/lib/revolt/fetcher.rb +30 -0
- data/lib/revolt/info.rb +40 -0
- data/lib/revolt/level.rb +298 -0
- data/lib/revolt/levels.rb +362 -0
- data/lib/revolt/logger.rb +24 -0
- data/lib/revolt/package/archive/analyzer/normalized.rb +50 -0
- data/lib/revolt/package/archive/analyzer/troubled.rb +97 -0
- data/lib/revolt/package/archive/analyzer.rb +34 -0
- data/lib/revolt/package/archive/zip/browser.rb +44 -0
- data/lib/revolt/package/archive.rb +35 -0
- data/lib/revolt/package/exe.rb +10 -0
- data/lib/revolt/package/installer/archive.rb +105 -0
- data/lib/revolt/package/installer/exe.rb +10 -0
- data/lib/revolt/package.rb +64 -0
- data/lib/revolt/util/fs_browser.rb +30 -0
- data/lib/revolt/util.rb +20 -0
- data/lib/revolt.rb +12 -0
- data/test/common.rb +78 -0
- data/test/fixtures/files/nodirs_track.zip +0 -0
- data/test/fixtures/files/readme.txt +1 -0
- data/test/fixtures/files/rickyd_track.zip +0 -0
- data/test/fixtures/files/standard_multi.zip +0 -0
- data/test/fixtures/files/standard_rev_track.zip +0 -0
- data/test/fixtures/files/standard_track.zip +0 -0
- data/test/fixtures/files/zips_inside.zip +0 -0
- data/test/fixtures/rv/gfx/levid.bmp +1 -0
- data/test/fixtures/rv/gfx/levid.bmq +1 -0
- data/test/fixtures/rv/gfx/levidrev.bmp +1 -0
- data/test/fixtures/rv/gfx/levidrev.bmq +1 -0
- data/test/fixtures/rv/gfx/tEsT Level.bmp +1 -0
- data/test/fixtures/rv/levels/levid/levid.inf +1 -0
- data/test/fixtures/rv/levels/levid/levid.w +1 -0
- data/test/fixtures/rv/levels/levid/levida.bmp +1 -0
- data/test/fixtures/rv/levels/levid/readme.txt +1 -0
- data/test/fixtures/rv/levels/levidrev/levidrev.inf +1 -0
- data/test/fixtures/rv/levels/levidrev/levidrev.w +1 -0
- data/test/fixtures/rv/levels/levidrev/levidreva.bmp +1 -0
- data/test/fixtures/rv/levels/levidrev/readme.txt +1 -0
- data/test/fixtures/rv/levels/levidrev/reversed/levidrev.cam +1 -0
- data/test/fixtures/rv/levels/levidrev/reversed/levidrev.fan +1 -0
- data/test/fixtures/rv/levels/levidrev/reversed/levidrev.fin +1 -0
- data/test/fixtures/rv/levels/test lEveL/TEst level.inf +4 -0
- data/test/fixtures/rv/levels/test lEveL/TeST level.w +1 -0
- data/test/fixtures/rv/levels/test lEveL/readme.txt +1 -0
- data/test/fixtures/rv/levels/test lEveL/reversed/TEst level.inf +1 -0
- data/test/fixtures/rv/levels/test lEveL/reversed/TeST level.w +1 -0
- data/test/fixtures/rv/levels/test lEveL/reversed/readme.txt +1 -0
- data/test/fixtures/rv/levels/test lEveL/reversed/test LEVELa.bmp +1 -0
- data/test/fixtures/rv/levels/test lEveL/test LEVELa.bmp +1 -0
- data/test/tc_archive_analyzer.rb +185 -0
- data/test/tc_args.rb +55 -0
- data/test/tc_args_external.rb +55 -0
- data/test/tc_file_system_fetcher.rb +26 -0
- data/test/tc_info.rb +23 -0
- data/test/tc_level.rb +182 -0
- data/test/tc_level_installer.rb +88 -0
- data/test/tc_level_installer_external.rb +124 -0
- data/test/tc_levels.rb +68 -0
- data/test/tc_package_track_installer.rb +174 -0
- data/test/ts_base.rb +14 -0
- data/test/ts_external.rb +7 -0
- metadata +133 -0
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1,185 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/revolt')
|
4
|
+
require File.join(File.dirname(__FILE__), 'common')
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
class ArchiveAnalyzer < Test::Unit::TestCase
|
8
|
+
include ReVolt::Test
|
9
|
+
|
10
|
+
def open_browser(file, &block)
|
11
|
+
ReVolt::Package::Archive::open(file, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def track_analysis_of(browser)
|
15
|
+
analyzer = ReVolt::Package::Archive::Analyzer::for_track(browser)
|
16
|
+
analyzer.track_files(browser)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_standard_zip
|
20
|
+
open_browser(get_test_file(ZIPS[:standard])) do |browser|
|
21
|
+
result = track_analysis_of(browser)
|
22
|
+
expect = {
|
23
|
+
:level => {
|
24
|
+
'levid' => [
|
25
|
+
'levels/levid/levid.inf',
|
26
|
+
'levels/levid/levida.bmp',
|
27
|
+
'levels/levid/levid.w',
|
28
|
+
'levels/levid/readme.txt'
|
29
|
+
],
|
30
|
+
},
|
31
|
+
:inf => {
|
32
|
+
'levid' => 'levels/levid/levid.inf'
|
33
|
+
},
|
34
|
+
:gfx => {
|
35
|
+
'levid' => ['gfx/levid.bmp', 'gfx/levid.bmq']
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
assert_equal(stringify_and_order_structure(expect),
|
40
|
+
stringify_and_order_structure(result))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_standard_rev_zip
|
45
|
+
open_browser(get_test_file(ZIPS[:standard_rev])) do |browser|
|
46
|
+
result = track_analysis_of(browser)
|
47
|
+
expect = {
|
48
|
+
:level => {
|
49
|
+
'levidrev' => [
|
50
|
+
'levels/levidrev/levidrev.inf',
|
51
|
+
'levels/levidrev/levidreva.bmp',
|
52
|
+
'levels/levidrev/levidrev.w',
|
53
|
+
'levels/levidrev/readme.txt',
|
54
|
+
],
|
55
|
+
},
|
56
|
+
:reversed => {
|
57
|
+
'levidrev' => [
|
58
|
+
'levels/levidrev/reversed/levidrev.cam',
|
59
|
+
'levels/levidrev/reversed/levidrev.fan',
|
60
|
+
'levels/levidrev/reversed/levidrev.fin'
|
61
|
+
],
|
62
|
+
},
|
63
|
+
:inf => {
|
64
|
+
'levidrev' => 'levels/levidrev/levidrev.inf'
|
65
|
+
},
|
66
|
+
:gfx => {
|
67
|
+
'levidrev' => ['gfx/levidrev.bmp', 'gfx/levidrev.bmq']
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
assert_equal(stringify_and_order_structure(expect),
|
72
|
+
stringify_and_order_structure(result))
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_standard_multi_zip
|
77
|
+
open_browser(get_test_file(ZIPS[:standard_multi])) do |browser|
|
78
|
+
result = track_analysis_of(browser)
|
79
|
+
expect = {
|
80
|
+
:level => {
|
81
|
+
'levidrev' => [
|
82
|
+
'levels/levidrev/levidrev.inf',
|
83
|
+
'levels/levidrev/levidreva.bmp',
|
84
|
+
'levels/levidrev/levidrev.w',
|
85
|
+
'levels/levidrev/readme.txt',
|
86
|
+
],
|
87
|
+
'levid' => [
|
88
|
+
'levels/levid/levid.inf',
|
89
|
+
'levels/levid/levida.bmp',
|
90
|
+
'levels/levid/levid.w',
|
91
|
+
'levels/levid/readme.txt'
|
92
|
+
],
|
93
|
+
},
|
94
|
+
:reversed => {
|
95
|
+
'levidrev' => [
|
96
|
+
'levels/levidrev/reversed/levidrev.cam',
|
97
|
+
'levels/levidrev/reversed/levidrev.fan',
|
98
|
+
'levels/levidrev/reversed/levidrev.fin'
|
99
|
+
],
|
100
|
+
},
|
101
|
+
:inf => {
|
102
|
+
'levidrev' => 'levels/levidrev/levidrev.inf',
|
103
|
+
'levid' => 'levels/levid/levid.inf'
|
104
|
+
},
|
105
|
+
:gfx => {
|
106
|
+
'levidrev' => ['gfx/levidrev.bmp', 'gfx/levidrev.bmq'],
|
107
|
+
'levid' => ['gfx/levid.bmp', 'gfx/levid.bmq']
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
assert_equal(stringify_and_order_structure(expect),
|
112
|
+
stringify_and_order_structure(result))
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_rickyd_zip
|
117
|
+
open_browser(get_test_file(ZIPS[:rickyd_style])) do |browser|
|
118
|
+
result = track_analysis_of(browser)
|
119
|
+
expect = {
|
120
|
+
:level => {
|
121
|
+
'levidrev' => [
|
122
|
+
'levidrev/levidreva.bmp',
|
123
|
+
'levidrev/levidrev.inf',
|
124
|
+
'levidrev/levidrev.w',
|
125
|
+
'levidrev/readme.txt'
|
126
|
+
],
|
127
|
+
},
|
128
|
+
:reversed => {
|
129
|
+
'levidrev' => [
|
130
|
+
'levidrev/reversed/levidrev.cam',
|
131
|
+
'levidrev/reversed/levidrev.fan',
|
132
|
+
'levidrev/reversed/levidrev.fin'
|
133
|
+
],
|
134
|
+
},
|
135
|
+
:inf => {
|
136
|
+
'levidrev' => 'levidrev/levidrev.inf'
|
137
|
+
},
|
138
|
+
:gfx => {
|
139
|
+
'levidrev' => ['levidrev/gfx/levidrev.bmp', 'levidrev/gfx/levidrev.bmq']
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
143
|
+
assert_equal(stringify_and_order_structure(expect),
|
144
|
+
stringify_and_order_structure(result))
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_nodirs_zip
|
149
|
+
open_browser(get_test_file(ZIPS[:nodirs_style])) do |browser|
|
150
|
+
result = track_analysis_of(browser)
|
151
|
+
expect = {
|
152
|
+
:level => {
|
153
|
+
'levid' => [
|
154
|
+
'levid.inf',
|
155
|
+
'levida.bmp',
|
156
|
+
'levid.w',
|
157
|
+
'readme.txt'
|
158
|
+
],
|
159
|
+
},
|
160
|
+
:inf => {
|
161
|
+
'levid' => 'levid.inf'
|
162
|
+
},
|
163
|
+
:gfx => {
|
164
|
+
'levid' => ['levid.bmp', 'levid.bmq']
|
165
|
+
}
|
166
|
+
}
|
167
|
+
|
168
|
+
assert_equal(stringify_and_order_structure(expect),
|
169
|
+
stringify_and_order_structure(result))
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_zips_inside_package
|
174
|
+
open_browser(get_test_file(ZIPS[:zips_inside])) do |browser|
|
175
|
+
result = track_analysis_of(browser)
|
176
|
+
expect = {
|
177
|
+
:possible => ['standard_track.zip', 'standard_rev_track.zip']
|
178
|
+
}
|
179
|
+
|
180
|
+
assert_equal(stringify_and_order_structure(expect),
|
181
|
+
stringify_and_order_structure(result))
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
end
|
data/test/tc_args.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/revolt')
|
4
|
+
require File.join(File.dirname(__FILE__), 'common')
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
class ArgsTest < Test::Unit::TestCase
|
8
|
+
include ReVolt::Test
|
9
|
+
|
10
|
+
def setup
|
11
|
+
super
|
12
|
+
ReVolt::global_args = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_global_args
|
16
|
+
ReVolt::global_args = { :test1 => 'test1', :test2 => 'test2' }
|
17
|
+
assert_equal(ReVolt::global_args[:test1], 'test1')
|
18
|
+
assert_equal(ReVolt::global_args[:test2], 'test2')
|
19
|
+
assert_equal(ReVolt::global_args[:test3], nil)
|
20
|
+
assert_equal(ReVolt::arg(:test1), 'test1')
|
21
|
+
assert_equal(ReVolt::arg(:test2), 'test2')
|
22
|
+
assert_equal(ReVolt::arg(:test3), nil)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_local_args
|
26
|
+
a = { :test1 => 'test1', :test2 => 'test2' }
|
27
|
+
assert_equal(ReVolt::arg(:test1, a), 'test1')
|
28
|
+
assert_equal(ReVolt::arg(:test2, a), 'test2')
|
29
|
+
assert_equal(ReVolt::arg(:test3, a), nil)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_local_global_args
|
33
|
+
ReVolt::global_args = { :test1 => 'test1', :test2 => 'test2' }
|
34
|
+
a = { :test1 => 'ltest1' }
|
35
|
+
assert_equal(ReVolt::arg(:test1, a), 'ltest1')
|
36
|
+
assert_equal(ReVolt::arg(:test2, a), 'test2')
|
37
|
+
assert_equal(ReVolt::arg(:test3, a), nil)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_arg_install_url
|
41
|
+
testurl = 'http://www.test.com/dohdah.zip'
|
42
|
+
levels = ReVolt::Levels.at(get_test_output_dir('rvtmp'))
|
43
|
+
called = false
|
44
|
+
a = {
|
45
|
+
ReVolt::ARG_INSTALL_URL => lambda {|url|
|
46
|
+
called = true
|
47
|
+
assert_equal(testurl, url)
|
48
|
+
nil
|
49
|
+
}
|
50
|
+
}
|
51
|
+
ReVolt::global_args = a
|
52
|
+
levels.install_urls(testurl, a)
|
53
|
+
assert(called)
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/revolt')
|
4
|
+
require File.join(File.dirname(__FILE__), 'common')
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
class ArgsTest < Test::Unit::TestCase
|
8
|
+
include ReVolt::Test
|
9
|
+
|
10
|
+
def setup
|
11
|
+
super
|
12
|
+
ReVolt::global_args = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_global_args
|
16
|
+
ReVolt::global_args = { :test1 => 'test1', :test2 => 'test2' }
|
17
|
+
assert_equal(ReVolt::global_args[:test1], 'test1')
|
18
|
+
assert_equal(ReVolt::global_args[:test2], 'test2')
|
19
|
+
assert_equal(ReVolt::global_args[:test3], nil)
|
20
|
+
assert_equal(ReVolt::arg(:test1), 'test1')
|
21
|
+
assert_equal(ReVolt::arg(:test2), 'test2')
|
22
|
+
assert_equal(ReVolt::arg(:test3), nil)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_local_args
|
26
|
+
a = { :test1 => 'test1', :test2 => 'test2' }
|
27
|
+
assert_equal(ReVolt::arg(:test1, a), 'test1')
|
28
|
+
assert_equal(ReVolt::arg(:test2, a), 'test2')
|
29
|
+
assert_equal(ReVolt::arg(:test3, a), nil)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_local_global_args
|
33
|
+
ReVolt::global_args = { :test1 => 'test1', :test2 => 'test2' }
|
34
|
+
a = { :test1 => 'ltest1' }
|
35
|
+
assert_equal(ReVolt::arg(:test1, a), 'ltest1')
|
36
|
+
assert_equal(ReVolt::arg(:test2, a), 'test2')
|
37
|
+
assert_equal(ReVolt::arg(:test3, a), nil)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_arg_install_url
|
41
|
+
testurl = 'http://www.test.com/dohdah.zip'
|
42
|
+
levels = ReVolt::Levels.at(get_test_output_dir('rvtmp'))
|
43
|
+
called = false
|
44
|
+
a = {
|
45
|
+
ReVolt::ARG_INSTALL_URL => lambda {|url|
|
46
|
+
called = true
|
47
|
+
assert_equal(testurl, url)
|
48
|
+
nil
|
49
|
+
}
|
50
|
+
}
|
51
|
+
ReVolt::global_args = a
|
52
|
+
levels.install_urls(testurl, a)
|
53
|
+
assert(called)
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/revolt')
|
4
|
+
require File.join(File.dirname(__FILE__), 'common')
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
class FileSystemFetcher < Test::Unit::TestCase
|
8
|
+
include ReVolt::Package
|
9
|
+
include ReVolt::Test
|
10
|
+
|
11
|
+
def test_fetcher_success
|
12
|
+
source = get_test_file(ZIPS[:standard])
|
13
|
+
STDERR.puts("Source: #{source}")
|
14
|
+
f = ReVolt::Fetcher.for(source)
|
15
|
+
f.run
|
16
|
+
assert_equal(source, f.target.to_s)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_fetcher_non_exists
|
20
|
+
source = get_test_file('this_one_doesnt_exist.zip')
|
21
|
+
f = ReVolt::Fetcher.for(source)
|
22
|
+
assert_raise(ReVolt::FileNotFoundError) do
|
23
|
+
f.run
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/test/tc_info.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/revolt')
|
4
|
+
require File.join(File.dirname(__FILE__), 'common')
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
class InfoTest < Test::Unit::TestCase
|
8
|
+
include ReVolt::Test
|
9
|
+
|
10
|
+
def test_exe_path
|
11
|
+
path = ReVolt::Info::exe_path
|
12
|
+
|
13
|
+
assert_not_nil(path, 'Could not get Re-Volt exe path!')
|
14
|
+
assert(path.file?, "Re-Volt not found from returned path #{path}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_path
|
18
|
+
path = ReVolt::Info::path
|
19
|
+
|
20
|
+
assert_not_nil(path, 'Could not get Re-Volt exe path!')
|
21
|
+
assert(path.directory?, "Re-Volt directory from returned path #{path}")
|
22
|
+
end
|
23
|
+
end
|
data/test/tc_level.rb
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/revolt')
|
4
|
+
require File.join(File.dirname(__FILE__), 'common')
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
class LevelTest < Test::Unit::TestCase
|
8
|
+
include ReVolt::Test
|
9
|
+
|
10
|
+
ID, NAME = 'test level'.to_sym, 'Test Level'
|
11
|
+
RVPATH = File.join(File.dirname(__FILE__), 'fixtures/rv')
|
12
|
+
|
13
|
+
STOCK_TRACKS = [
|
14
|
+
:nhood1,
|
15
|
+
:market2,
|
16
|
+
:muse2,
|
17
|
+
:garden1,
|
18
|
+
:toylite,
|
19
|
+
:wild_west1,
|
20
|
+
:toy2,
|
21
|
+
:ship1,
|
22
|
+
:nhood2,
|
23
|
+
:muse1,
|
24
|
+
:market1,
|
25
|
+
:wild_west2,
|
26
|
+
:ship2,
|
27
|
+
]
|
28
|
+
|
29
|
+
def setup
|
30
|
+
super
|
31
|
+
|
32
|
+
@levels = ReVolt::Levels.new RVPATH
|
33
|
+
@level = ReVolt::Level.new ID, { :name => NAME }
|
34
|
+
@level.parent = @levels
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_name
|
38
|
+
@level.parent = nil # name should work even without parent levels
|
39
|
+
assert_equal NAME, @level.name
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_id
|
43
|
+
@level.parent = nil # id should work even without parent levels
|
44
|
+
assert_equal ID, @level.id
|
45
|
+
assert_equal ID.to_s, @level.id.to_s
|
46
|
+
assert_equal ReVolt::Level.new(ID.to_s).id, @level.id
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_load_level
|
50
|
+
@level = ReVolt::Level.new('test level', :parent => @levels)
|
51
|
+
assert_equal false, @level.loaded?
|
52
|
+
assert_not_nil @level.inf
|
53
|
+
pp @level.inf
|
54
|
+
assert_equal 'Test Level', @level.inf[:name]
|
55
|
+
assert_equal 'Test Level', @level.name
|
56
|
+
assert_equal '3', @level.inf[:startgrid]
|
57
|
+
assert_equal true, @level.loaded?
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_reversed
|
61
|
+
target = ReVolt::Levels.new(get_test_output_dir('revolt'))
|
62
|
+
target.create_dir_structure
|
63
|
+
@level.copy_to(target)
|
64
|
+
level = target[ID]
|
65
|
+
assert_not_nil(level)
|
66
|
+
assert(level.reverse?)
|
67
|
+
|
68
|
+
rpath = level.path + 'reversed'
|
69
|
+
assert(rpath.exist?)
|
70
|
+
assert(Dir[rpath + '*'].size > 0)
|
71
|
+
|
72
|
+
# Delete the reversed directory
|
73
|
+
rpath.rmtree
|
74
|
+
assert(level.reverse? == false)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_dirs_and_files
|
78
|
+
(dirs, files) = @level.dirs_and_files
|
79
|
+
dirs_expect = ['levels/test level/emptydir',
|
80
|
+
'levels/test level/reversed']
|
81
|
+
fils_expect = ['levels/test level/test level.inf',
|
82
|
+
'levels/test level/test level.w',
|
83
|
+
'levels/test level/test levela.bmp',
|
84
|
+
'levels/test level/readme.txt',
|
85
|
+
'levels/test level/reversed/test level.inf',
|
86
|
+
'levels/test level/reversed/test level.w',
|
87
|
+
'levels/test level/reversed/test levela.bmp',
|
88
|
+
'levels/test level/reversed/readme.txt',
|
89
|
+
'gfx/test level.bmp'
|
90
|
+
]
|
91
|
+
assert_equal(strdowncase_and_order_structure(fils_expect),
|
92
|
+
strdowncase_and_order_structure(files))
|
93
|
+
assert_equal(strdowncase_and_order_structure(dirs_expect),
|
94
|
+
strdowncase_and_order_structure(dirs))
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_copy_level
|
98
|
+
target = ReVolt::Levels.new(get_test_output_dir('revolt'))
|
99
|
+
target.create_dir_structure
|
100
|
+
STDERR.puts("Target dir: #{target.path}")
|
101
|
+
expect = @levels[@level].files
|
102
|
+
@level.copy_to(target)
|
103
|
+
result = target[@level.id].files
|
104
|
+
assert_not_nil(target[ID])
|
105
|
+
assert_not_nil(@levels[ID])
|
106
|
+
assert_equal(stringify_and_order_structure(expect),
|
107
|
+
stringify_and_order_structure(result))
|
108
|
+
assert_equal(stringify_and_order_structure(expect),
|
109
|
+
stringify_and_order_structure(@levels[@level].files))
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_move_level
|
113
|
+
source = ReVolt::Levels.new(get_test_output_dir('revolt_from'))
|
114
|
+
target = ReVolt::Levels.new(get_test_output_dir('revolt_to'))
|
115
|
+
source.create_dir_structure
|
116
|
+
target.create_dir_structure
|
117
|
+
STDERR.puts("Target dir: #{target.path}")
|
118
|
+
expect = @levels[@level].files
|
119
|
+
@level.copy_to(source)
|
120
|
+
|
121
|
+
assert(source.member?(@level) == true)
|
122
|
+
source.move_level_to(source[@level], target)
|
123
|
+
|
124
|
+
assert(target.member?(@level) == true)
|
125
|
+
assert(source.include?(@level) == false)
|
126
|
+
assert((target.path + @level.id.to_s).exist? == true)
|
127
|
+
assert((source.path + @level.id.to_s).exist? == false)
|
128
|
+
result = target[@level.id].files
|
129
|
+
assert_equal(stringify_and_order_structure(expect),
|
130
|
+
stringify_and_order_structure(result))
|
131
|
+
assert_nil(source[@level])
|
132
|
+
assert_equal(stringify_and_order_structure(expect),
|
133
|
+
stringify_and_order_structure(@levels[@level].files))
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_delete_level
|
137
|
+
source = ReVolt::Levels.new(get_test_output_dir('revolt_delete'))
|
138
|
+
source.create_dir_structure
|
139
|
+
|
140
|
+
assert_nil(source[@level.id])
|
141
|
+
@level.copy_to(source)
|
142
|
+
tlevel = source[@level.id]
|
143
|
+
tlevel_dir = source.path + @level.id.to_s
|
144
|
+
tlevel_files = tlevel.files
|
145
|
+
assert(tlevel_dir.exist? == true)
|
146
|
+
|
147
|
+
assert(tlevel.files != 0)
|
148
|
+
tlevel_files.each do |f|
|
149
|
+
fullpath = source.base_path + f
|
150
|
+
assert(fullpath.exist? == true, "Path don't exist: #{fullpath}")
|
151
|
+
end
|
152
|
+
tlevel.delete
|
153
|
+
assert(tlevel_dir.exist? == false)
|
154
|
+
assert_nil(tlevel.parent)
|
155
|
+
tlevel_files.each do |f|
|
156
|
+
fullpath = source.base_path + f
|
157
|
+
assert(fullpath.exist? == false, "Path exists: #{fullpath}")
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_inf_file_missing
|
162
|
+
@level = ReVolt::Level.new 'inf_missing_level', :parent => @levels
|
163
|
+
assert_raise(ReVolt::InfFileNotFoundError) { @level.reload }
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_load_level_no_parent
|
167
|
+
@level.parent = nil
|
168
|
+
assert_raise(RuntimeError) { @level.reload }
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_stock
|
172
|
+
STOCK_TRACKS.each do |stock_id|
|
173
|
+
level = ReVolt::Level.new stock_id
|
174
|
+
assert(level.stock?, 'level id #{stock_id} not stock')
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_custom
|
179
|
+
assert(@level.custom?, 'level id #{@level.id} not custom')
|
180
|
+
end
|
181
|
+
|
182
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '../lib/revolt')
|
4
|
+
require File.join(File.dirname(__FILE__), 'common')
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
class LevelInstaller < Test::Unit::TestCase
|
10
|
+
include ReVolt::Test
|
11
|
+
include ReVolt::Package
|
12
|
+
|
13
|
+
RVZT_URL = 'http://revolt.speedweek.net/main/dload.php?trackname=Rickyd%27s+Garden'
|
14
|
+
|
15
|
+
def setup
|
16
|
+
super
|
17
|
+
|
18
|
+
@rv_base_dir = Pathname.new(get_test_output_dir('rv'))# @output_dir + 'rv';
|
19
|
+
|
20
|
+
# Create the levels structure so that levels can
|
21
|
+
# be installed
|
22
|
+
@levels = ReVolt::Levels.new(@rv_base_dir)
|
23
|
+
@levels.create_dir_structure
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
# clean_working_dir
|
28
|
+
end
|
29
|
+
|
30
|
+
def installed_tracks
|
31
|
+
dir = ReVolt::Util::FsBrowser.new(@rv_base_dir)
|
32
|
+
dir.map {|f| Pathname.new(f).relative_path_from(@rv_base_dir).to_s}
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_install_local_zip
|
36
|
+
zip_id = :standard
|
37
|
+
ids = @levels.install(get_test_file(ZIPS[zip_id]), @output_dir)
|
38
|
+
result = installed_tracks
|
39
|
+
expect = %w(
|
40
|
+
gfx
|
41
|
+
gfx/levid.bmp
|
42
|
+
gfx/levid.bmq
|
43
|
+
levels
|
44
|
+
levels/levid
|
45
|
+
levels/levid/levid.inf
|
46
|
+
levels/levid/levid.w
|
47
|
+
levels/levid/levida.bmp
|
48
|
+
levels/levid/readme.txt
|
49
|
+
)
|
50
|
+
|
51
|
+
assert_equal(stringify_and_order_structure(expect),
|
52
|
+
stringify_and_order_structure(result))
|
53
|
+
assert_equal(stringify_and_order_structure(ids),
|
54
|
+
stringify_and_order_structure(ZIPS_IDS[zip_id]))
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_install_local_zip_overwrite
|
58
|
+
test_install_local_zip
|
59
|
+
test_install_local_zip
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_install_local_zip_nl
|
63
|
+
zip_id = :standard
|
64
|
+
f = get_test_file(ZIPS[zip_id])
|
65
|
+
# This tests that installing works easily even
|
66
|
+
# when the file name is read from for example STDIN.each
|
67
|
+
f = f.to_s + "\n"
|
68
|
+
ids = @levels.install(f, @output_dir)
|
69
|
+
result = installed_tracks
|
70
|
+
expect = %w(
|
71
|
+
gfx
|
72
|
+
gfx/levid.bmp
|
73
|
+
gfx/levid.bmq
|
74
|
+
levels
|
75
|
+
levels/levid
|
76
|
+
levels/levid/levid.inf
|
77
|
+
levels/levid/levid.w
|
78
|
+
levels/levid/levida.bmp
|
79
|
+
levels/levid/readme.txt
|
80
|
+
)
|
81
|
+
|
82
|
+
assert_equal(stringify_and_order_structure(expect),
|
83
|
+
stringify_and_order_structure(result))
|
84
|
+
assert_equal(stringify_and_order_structure(ids),
|
85
|
+
stringify_and_order_structure(ZIPS_IDS[zip_id]))
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|