build-tool 0.5.7 → 0.6.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.rvmrc +1 -0
- data/.yardopts +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +56 -0
- data/History.txt +64 -0
- data/README.txt +0 -7
- data/Rakefile +8 -56
- data/bin/build-tool +4 -1
- data/build-tool.gemspec +62 -0
- data/db/migrations/20110703074000_add_command_logs.rb +17 -0
- data/db/migrations/20110703075000_add_module_logs.rb +20 -0
- data/db/migrations/20110815170000_add_features.rb +17 -0
- data/db/migrations/20120103204700_add_modules.rb +17 -0
- data/db/migrations/20120106181200_add_settings.rb +18 -0
- data/lib/build-tool.rb +3 -4
- data/lib/build-tool/application.rb +127 -37
- data/lib/build-tool/build-system/autoconf.rb +2 -8
- data/lib/build-tool/build-system/base.rb +12 -4
- data/lib/build-tool/build-system/cmake.rb +2 -0
- data/lib/build-tool/build-system/custom.rb +2 -0
- data/lib/build-tool/build-system/kdel10n.rb +2 -0
- data/lib/build-tool/build-system/make.rb +2 -0
- data/lib/build-tool/build-system/none.rb +2 -0
- data/lib/build-tool/build-system/qmake.rb +2 -0
- data/lib/build-tool/build-system/qt.rb +4 -0
- data/lib/build-tool/cfg/lexer.rex +40 -8
- data/lib/build-tool/cfg/lexer_base.rb +3 -1
- data/lib/build-tool/cfg/node.rb +17 -1
- data/lib/build-tool/cfg/parser.y +92 -10
- data/lib/build-tool/cfg/visitor.rb +202 -78
- data/lib/build-tool/command_actions.rb +26 -10
- data/lib/build-tool/commands.rb +289 -197
- data/lib/build-tool/commands/build.rb +13 -9
- data/lib/build-tool/commands/configuration.rb +25 -0
- data/lib/build-tool/commands/configuration/edit.rb +42 -0
- data/lib/build-tool/commands/configuration/list.rb +48 -0
- data/lib/build-tool/commands/configure.rb +9 -5
- data/lib/build-tool/commands/ctags.rb +8 -3
- data/lib/build-tool/commands/environments.rb +2 -4
- data/lib/build-tool/commands/environments/list.rb +13 -10
- data/lib/build-tool/commands/environments/set.rb +5 -1
- data/lib/build-tool/commands/features.rb +24 -0
- data/lib/build-tool/commands/features/disable.rb +70 -0
- data/lib/build-tool/commands/features/enable.rb +66 -0
- data/lib/build-tool/commands/features/list.rb +92 -0
- data/lib/build-tool/commands/fetch.rb +9 -3
- data/lib/build-tool/commands/files.rb +9 -5
- data/lib/build-tool/commands/gc.rb +48 -15
- data/lib/build-tool/commands/history.rb +21 -16
- data/lib/build-tool/commands/info.rb +16 -13
- data/lib/build-tool/commands/install.rb +8 -4
- data/lib/build-tool/commands/modules.rb +2 -4
- data/lib/build-tool/commands/modules/cleanup.rb +52 -0
- data/lib/build-tool/commands/modules/disable.rb +95 -0
- data/lib/build-tool/commands/modules/enable.rb +52 -0
- data/lib/build-tool/commands/modules/info.rb +44 -35
- data/lib/build-tool/commands/modules/list.rb +67 -15
- data/lib/build-tool/commands/modules/shell.rb +8 -2
- data/lib/build-tool/commands/rebase.rb +15 -7
- data/lib/build-tool/commands/recipes.rb +2 -4
- data/lib/build-tool/commands/recipes/add.rb +16 -2
- data/lib/build-tool/commands/recipes/edit.rb +72 -0
- data/lib/build-tool/commands/recipes/incoming.rb +11 -7
- data/lib/build-tool/commands/recipes/info.rb +12 -8
- data/lib/build-tool/commands/recipes/install.rb +37 -42
- data/lib/build-tool/commands/recipes/list.rb +6 -2
- data/lib/build-tool/configuration.rb +88 -3
- data/lib/build-tool/environment.rb +2 -0
- data/lib/build-tool/errors.rb +5 -0
- data/lib/build-tool/history.rb +3 -181
- data/lib/build-tool/model/command_log.rb +93 -0
- data/lib/build-tool/model/feature.rb +80 -0
- data/lib/build-tool/{module.rb → model/module.rb} +110 -29
- data/lib/build-tool/model/module_log.rb +64 -0
- data/lib/build-tool/model/setting.rb +84 -0
- data/lib/build-tool/recipe.rb +40 -18
- data/lib/build-tool/repository.rb +39 -33
- data/lib/build-tool/server.rb +27 -3
- data/lib/build-tool/singleton.rb +2 -0
- data/lib/build-tool/sshkey.rb +2 -0
- data/lib/build-tool/state_helper.rb +64 -0
- data/lib/build-tool/vcs/archive.rb +3 -1
- data/lib/build-tool/vcs/base.rb +13 -0
- data/lib/build-tool/vcs/git-svn.rb +36 -14
- data/lib/build-tool/vcs/git.rb +180 -44
- data/lib/build-tool/vcs/mercurial.rb +25 -13
- data/lib/build-tool/vcs/svn.rb +20 -15
- data/lib/build-tool/version.rb +30 -0
- data/lib/mj/error.rb +2 -0
- data/lib/mj/logging.rb +2 -0
- data/lib/mj/mixins/inherited_attributes.rb +73 -0
- data/lib/mj/tools/editor.rb +34 -0
- data/lib/mj/tools/ssh.rb +2 -0
- data/lib/mj/tools/subprocess.rb +2 -1
- data/lib/mj/vcs/git.rb +14 -2
- data/lib/mj/visitor.rb +22 -0
- data/tasks/db.rake +36 -0
- data/tasks/racc.rake +14 -0
- data/tasks/rdoc.rake +8 -0
- data/tasks/rexical.rake +14 -0
- data/tasks/test.rake +21 -0
- data/test/integration/history_test.rb +88 -0
- data/test/integration/parser_configuration.rb +36 -0
- data/test/integration/parser_environment_parser.rb +156 -0
- data/test/integration/parser_feature_test.rb +75 -0
- data/test/integration/parser_git-svn_test.rb +92 -0
- data/test/integration/parser_git_test.rb +97 -0
- data/test/integration/parser_mercurial_test.rb +77 -0
- data/test/integration/parser_module_test.rb +103 -0
- data/test/integration/parser_svn_test.rb +92 -0
- data/test/integration/parser_test.rb +73 -0
- data/test/test_helper.rb +61 -0
- data/test/unit/configuration_test.rb +36 -0
- data/test/unit/git_configuration_test.rb +163 -0
- data/test/unit/git_svn_configuration_test.rb +240 -0
- data/test/unit/mercurial_configuration_test.rb +64 -0
- data/test/unit/model/command_log_test.rb +103 -0
- data/test/unit/model/feature_test.rb +29 -0
- data/test/unit/model/module_log_test.rb +70 -0
- data/test/unit/model/module_test.rb +32 -0
- data/test/unit/repository_test.rb +110 -0
- data/test/unit/server_test.rb +66 -0
- data/test/unit/svn_configuration_test.rb +90 -0
- metadata +134 -93
- data/Manifest.txt +0 -80
- data/db/migrations/001_command_histories.rb +0 -20
- data/db/migrations/002_module_events.rb +0 -24
- data/db/migrations/003_command_histories_add_logfile.rb +0 -19
- data/lib/build-tool/GUI.rb +0 -360
- data/lib/build-tool/commands/help.rb +0 -22
- data/lib/build-tool/commands/lsfeatures.rb +0 -76
- data/lib/build-tool/feature.rb +0 -47
@@ -0,0 +1,240 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
require 'build-tool/vcs/git-svn'
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
class GitSvnConfigurationTest < ActiveSupport::TestCase
|
8
|
+
|
9
|
+
#######################
|
10
|
+
# THE GIT FUNCTIONALITY
|
11
|
+
#
|
12
|
+
test 'Constructor.' do
|
13
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new()
|
14
|
+
cfg.vcs( ModuleMock.new( 'test' ) )
|
15
|
+
assert_equal( 'git-svn', cfg.name )
|
16
|
+
assert_equal( {}, cfg.remote )
|
17
|
+
assert_equal( {}, cfg.global_options )
|
18
|
+
assert_equal( {}, cfg.options )
|
19
|
+
assert_equal( 'remotes/git-svn', cfg.track )
|
20
|
+
assert_raise( BuildTool::ConfigurationError ) { cfg.repository }
|
21
|
+
end
|
22
|
+
|
23
|
+
test 'Track is correctly split.' do
|
24
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
25
|
+
assert_equal( 'remotes', cfg.track_remote )
|
26
|
+
assert_equal( 'git-svn', cfg.track_branch )
|
27
|
+
cfg.track = 'myremote/mybranch'
|
28
|
+
assert_equal( 'myremote', cfg.track_remote )
|
29
|
+
assert_equal( 'mybranch', cfg.track_branch )
|
30
|
+
end
|
31
|
+
|
32
|
+
test 'Vcs() returns a git-svn instance.' do
|
33
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
34
|
+
# :TODO:
|
35
|
+
# assert( cfg.vcs.is_a?( BuildTool::VCS::Git ), "vcs() returns a instance of Git." )
|
36
|
+
end
|
37
|
+
|
38
|
+
test 'track() accessor works.' do
|
39
|
+
cfg = create_configuration
|
40
|
+
assert_equal( 'myremote/mybranch', cfg.track )
|
41
|
+
end
|
42
|
+
|
43
|
+
test 'track() accessor works with inheritance.' do
|
44
|
+
parent = create_configuration
|
45
|
+
# Create a empty object with a parent
|
46
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
47
|
+
cfg.parent = parent
|
48
|
+
# Value is taken from parent
|
49
|
+
assert_equal( 'myremote/mybranch', cfg.track )
|
50
|
+
# Unless we set it locally
|
51
|
+
cfg.track = 'repo1/test'
|
52
|
+
assert_equal( 'repo1/test', cfg.track )
|
53
|
+
# After a reset
|
54
|
+
cfg.track = nil
|
55
|
+
assert_equal( 'myremote/mybranch', cfg.track )
|
56
|
+
end
|
57
|
+
|
58
|
+
test 'options() accessor works.' do
|
59
|
+
cfg = create_configuration
|
60
|
+
assert_equal( 'option 1', cfg.options[:option1] )
|
61
|
+
assert_equal( 'option 2', cfg.options[:option2] )
|
62
|
+
assert_nil( cfg.options[:option3] )
|
63
|
+
end
|
64
|
+
|
65
|
+
test 'options() accessor works with inheritance.' do
|
66
|
+
parent = create_configuration
|
67
|
+
# Create a empty object with a parent
|
68
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
69
|
+
cfg.parent = parent
|
70
|
+
# Options are not merged.
|
71
|
+
assert_nil( cfg.options[:option1] )
|
72
|
+
assert_nil( cfg.options[:option2] )
|
73
|
+
assert_nil( cfg.options[:option3] )
|
74
|
+
# Merged_options is merged with the parent.
|
75
|
+
assert_equal( 'option 1', cfg.merged_options[:option1] )
|
76
|
+
assert_equal( 'option 2', cfg.merged_options[:option2] )
|
77
|
+
assert_nil( cfg.merged_options[:option3] )
|
78
|
+
# But ours have priority
|
79
|
+
cfg.options[:option1] = 'overwritten'
|
80
|
+
assert_equal( 'overwritten', cfg.merged_options[:option1] )
|
81
|
+
end
|
82
|
+
|
83
|
+
test 'options() accessor works with global configuration.' do
|
84
|
+
cfg = create_configuration
|
85
|
+
create_global_configuration
|
86
|
+
assert_equal( 'option 1', cfg.merged_options[:option1] )
|
87
|
+
assert_equal( 'option 2', cfg.merged_options[:option2] )
|
88
|
+
assert_equal( 'option 3(set globally)', cfg.merged_options[:option3] )
|
89
|
+
end
|
90
|
+
|
91
|
+
test 'options() accessor works with global configuration and inheritance.' do
|
92
|
+
parent = create_configuration
|
93
|
+
# Create a empty object with a parent
|
94
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
95
|
+
cfg.parent = parent
|
96
|
+
cfg.options[:option1] = 'overwritten'
|
97
|
+
# Merged_options is merged with the parent and global
|
98
|
+
create_global_configuration
|
99
|
+
assert_equal( 'overwritten', cfg.merged_options[:option1] )
|
100
|
+
assert_equal( 'option 2', cfg.merged_options[:option2] )
|
101
|
+
assert_equal( 'option 3(set globally)', cfg.merged_options[:option3] )
|
102
|
+
# And we can reset them
|
103
|
+
cfg.options.delete(:option1)
|
104
|
+
assert_equal( 'option 1', cfg.merged_options[:option1] )
|
105
|
+
end
|
106
|
+
|
107
|
+
test 'global_options() works.' do
|
108
|
+
cfg = create_configuration
|
109
|
+
assert_equal( {}, cfg.global_options )
|
110
|
+
end
|
111
|
+
|
112
|
+
test 'global_options() works with global configuration.' do
|
113
|
+
cfg = create_configuration
|
114
|
+
create_global_configuration
|
115
|
+
assert_equal( 'global option 1', cfg.merged_global_options[:globaloption1] )
|
116
|
+
assert_equal( 'global option 2', cfg.merged_global_options[:globaloption2] )
|
117
|
+
end
|
118
|
+
|
119
|
+
test 'remote() accessor works.' do
|
120
|
+
cfg = create_configuration
|
121
|
+
assert_equal( 'GitRemoteObject 1', cfg.remote['origin'] )
|
122
|
+
assert_equal( 'GitRemoteObject 1', cfg.merged_remote['origin'] )
|
123
|
+
end
|
124
|
+
|
125
|
+
test 'remote() accessor works with inheritance.' do
|
126
|
+
parent = create_configuration
|
127
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
128
|
+
cfg.parent = parent
|
129
|
+
cfg.remote['other'] = 'other'
|
130
|
+
assert_nil( cfg.remote['origin'] )
|
131
|
+
assert_equal( 'GitRemoteObject 1', cfg.merged_remote['origin'] )
|
132
|
+
assert_equal( 'other', cfg.merged_remote['other'] )
|
133
|
+
cfg.remote['origin'] = 'test'
|
134
|
+
assert_equal( 'test', cfg.merged_remote['origin'] )
|
135
|
+
assert_equal( 'other', cfg.merged_remote['other'] )
|
136
|
+
end
|
137
|
+
|
138
|
+
#######################
|
139
|
+
# THE GIT-SVN FUNCTIONALITY
|
140
|
+
#
|
141
|
+
test 'Constructor Git-SVN.' do
|
142
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
143
|
+
assert_equal( {}, cfg.externals )
|
144
|
+
assert_equal( {}, cfg.merged_externals )
|
145
|
+
end
|
146
|
+
|
147
|
+
test 'external() accessor works.' do
|
148
|
+
cfg = create_configuration
|
149
|
+
assert_equal( 'svn+ssh@user@example.com/remote/path', cfg.externals[ 'local/path' ] )
|
150
|
+
end
|
151
|
+
|
152
|
+
test 'external() accessor works with inheritance.' do
|
153
|
+
parent = create_configuration
|
154
|
+
# Create a empty object with a parent
|
155
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
156
|
+
cfg.parent = parent
|
157
|
+
# Value is taken from parent
|
158
|
+
assert_equal( 'svn+ssh@user@example.com/remote/path', cfg.merged_externals[ 'local/path' ] )
|
159
|
+
# Unless we set it locally
|
160
|
+
cfg.externals['local/path'] ='svn+ssh@user@example.com/remote/other/path'
|
161
|
+
assert_equal( 'svn+ssh@user@example.com/remote/other/path', cfg.merged_externals[ 'local/path' ] )
|
162
|
+
# After a reset
|
163
|
+
cfg.externals.delete( 'local/path' )
|
164
|
+
assert_equal( 'svn+ssh@user@example.com/remote/path', cfg.merged_externals[ 'local/path' ] )
|
165
|
+
end
|
166
|
+
|
167
|
+
test 'repository() accessor works.' do
|
168
|
+
cfg = create_configuration
|
169
|
+
assert_equal( 'repo', cfg.repository.name )
|
170
|
+
end
|
171
|
+
|
172
|
+
test 'repository() accessor works with inheritance.' do
|
173
|
+
parent = create_configuration
|
174
|
+
# Create a empty object with a parent
|
175
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
176
|
+
cfg.parent = parent
|
177
|
+
# Value is taken from parent
|
178
|
+
assert_equal( 'repo', cfg.repository.name )
|
179
|
+
# Unless we set it locally
|
180
|
+
cfg.repository = RepositoryMock.new( 'repo2' )
|
181
|
+
assert_equal( 'repo2', cfg.repository.name )
|
182
|
+
# After a reset
|
183
|
+
cfg.repository = nil
|
184
|
+
assert_equal( 'repo', cfg.repository.name )
|
185
|
+
end
|
186
|
+
|
187
|
+
test 'accessor remote_path() works.' do
|
188
|
+
cfg = create_configuration
|
189
|
+
assert_equal( 'remote/path', cfg.remote_path )
|
190
|
+
end
|
191
|
+
|
192
|
+
test 'accessor remote_path() works with inheritance.' do
|
193
|
+
parent = create_configuration
|
194
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
195
|
+
cfg.vcs( ModuleMock.new( 'test' ) )
|
196
|
+
cfg.parent = parent
|
197
|
+
# We get the value from the parent
|
198
|
+
assert_equal( 'remote/path', cfg.remote_path )
|
199
|
+
# Unless we override it
|
200
|
+
cfg.remote_path = 'remote/other_path'
|
201
|
+
assert_equal( 'remote/other_path', cfg.remote_path )
|
202
|
+
# And we can reset it
|
203
|
+
cfg.remote_path = nil
|
204
|
+
assert_equal( 'remote/path', cfg.remote_path )
|
205
|
+
end
|
206
|
+
|
207
|
+
|
208
|
+
private
|
209
|
+
|
210
|
+
def create_configuration
|
211
|
+
# Reset global configuration
|
212
|
+
BuildTool::VCS::GitConfiguration.global_config = nil
|
213
|
+
# Create a configuration object
|
214
|
+
cfg = BuildTool::VCS::GitSvnConfiguration.new
|
215
|
+
cfg.track = 'myremote/mybranch'
|
216
|
+
cfg.options = {
|
217
|
+
:option1 => "option 1",
|
218
|
+
:option2 => "option 2" }
|
219
|
+
cfg.remote['origin'] = 'GitRemoteObject 1'
|
220
|
+
cfg.remote['private'] = 'GitRemoteObject 2'
|
221
|
+
cfg.externals['local/path'] ='svn+ssh@user@example.com/remote/path'
|
222
|
+
cfg.repository = RepositoryMock.new( 'repo' )
|
223
|
+
cfg.remote_path = 'remote/path'
|
224
|
+
cfg
|
225
|
+
end
|
226
|
+
|
227
|
+
def create_global_configuration
|
228
|
+
# Add a global configuration object
|
229
|
+
global = BuildTool::VCS::GitConfiguration.new
|
230
|
+
BuildTool::VCS::GitConfiguration.global_config = global
|
231
|
+
global.options = {
|
232
|
+
:option1 => "option 1(set globally)",
|
233
|
+
:option3 => "option 3(set globally)" }
|
234
|
+
global.global_options = {
|
235
|
+
:globaloption1 => "global option 1",
|
236
|
+
:globaloption2 => "global option 2" }
|
237
|
+
global
|
238
|
+
end
|
239
|
+
|
240
|
+
end # class GitSvnConfigurationTest
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
require 'build-tool/vcs/mercurial'
|
4
|
+
|
5
|
+
class MercurialConfigurationTest < ActiveSupport::TestCase
|
6
|
+
|
7
|
+
test 'Constructor' do
|
8
|
+
cfg = BuildTool::VCS::MercurialConfiguration.new
|
9
|
+
cfg.vcs( ModuleMock.new( 'mercurial/test' ) )
|
10
|
+
assert_equal( cfg.name, 'mercurial' )
|
11
|
+
assert_nil( cfg.url )
|
12
|
+
assert_equal( 'default', cfg.track )
|
13
|
+
end
|
14
|
+
|
15
|
+
test 'accessor url() works.' do
|
16
|
+
cfg = create_configuration
|
17
|
+
assert_equal( 'some_branch', cfg.track )
|
18
|
+
end
|
19
|
+
|
20
|
+
test 'accessor url() works with inheritance.' do
|
21
|
+
parent = create_configuration
|
22
|
+
cfg = BuildTool::VCS::MercurialConfiguration.new
|
23
|
+
cfg.parent = parent
|
24
|
+
# We get the value from the parent
|
25
|
+
assert_equal( 'some_url', cfg.url )
|
26
|
+
# Unless we have it overriden
|
27
|
+
cfg.url = 'different_url'
|
28
|
+
assert_equal( 'different_url', cfg.url )
|
29
|
+
# But we can reset it
|
30
|
+
cfg.url = nil
|
31
|
+
assert_equal( 'some_url', cfg.url )
|
32
|
+
end
|
33
|
+
|
34
|
+
test 'accessor branch() works.' do
|
35
|
+
cfg = create_configuration
|
36
|
+
assert_equal( 'some_branch', cfg.track )
|
37
|
+
end
|
38
|
+
|
39
|
+
test 'accessor branch() works with inheritance.' do
|
40
|
+
parent = create_configuration
|
41
|
+
cfg = BuildTool::VCS::MercurialConfiguration.new
|
42
|
+
cfg.parent = parent
|
43
|
+
# We get the value from the parent
|
44
|
+
assert_equal( 'some_branch', cfg.track )
|
45
|
+
# Unless we have it overriden
|
46
|
+
cfg.track = 'different_branch'
|
47
|
+
assert_equal( 'different_branch', cfg.track )
|
48
|
+
# But we can reset it
|
49
|
+
cfg.track = nil
|
50
|
+
assert_equal( 'some_branch', cfg.track )
|
51
|
+
end
|
52
|
+
|
53
|
+
#######
|
54
|
+
private
|
55
|
+
#######
|
56
|
+
|
57
|
+
def create_configuration
|
58
|
+
cfg = BuildTool::VCS::MercurialConfiguration.new
|
59
|
+
cfg.url = 'some_url'
|
60
|
+
cfg.track = 'some_branch'
|
61
|
+
cfg
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
setup_database()
|
4
|
+
|
5
|
+
require 'build-tool/history'
|
6
|
+
|
7
|
+
class TestCommandLog < ActiveSupport::TestCase
|
8
|
+
|
9
|
+
test 'Constructor works' do
|
10
|
+
cmd = nil
|
11
|
+
|
12
|
+
# The constructor does not save
|
13
|
+
assert_no_difference( 'BuildTool::History::CommandLog.count', 'new() does not save the object' ) do
|
14
|
+
|
15
|
+
cmd = BuildTool::History::CommandLog.new(
|
16
|
+
:command => 'my_special_command',
|
17
|
+
:logdir => '/home/build-tool/log')
|
18
|
+
|
19
|
+
# Check the initial values
|
20
|
+
assert_nil( cmd.started_at, 'started_at is initialized with nil.' )
|
21
|
+
assert_nil( cmd.finished_at, 'finished_at is initialized with nil.' )
|
22
|
+
assert_equal( BuildTool::History::CommandLog::STARTED, cmd.state, 'STARTED is the initial state.' )
|
23
|
+
assert_equal( '-----', cmd.duration, '"-----" is not yet feasible.' )
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
# Now save it
|
28
|
+
cmd.save
|
29
|
+
|
30
|
+
# And check we can load it back from the db
|
31
|
+
id = cmd.id
|
32
|
+
cmd = nil
|
33
|
+
cmd = BuildTool::History::CommandLog.find( id )
|
34
|
+
|
35
|
+
# Same values as before
|
36
|
+
assert_nil( cmd.started_at, 'started_at is initialized with nil.' )
|
37
|
+
assert_nil( cmd.finished_at, 'finished_at is initialized with nil.' )
|
38
|
+
assert_equal( BuildTool::History::CommandLog::STARTED, cmd.state, 'STARTED is the initial state.' )
|
39
|
+
assert_equal( '-----', cmd.duration, '"-----" is not yet feasible.' )
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
test 'Workflow works' do
|
45
|
+
|
46
|
+
cmd = BuildTool::History::CommandLog.new(
|
47
|
+
:command => 'my_other_command',
|
48
|
+
:logdir => '/home/build-tool/log')
|
49
|
+
|
50
|
+
assert_difference( 'BuildTool::History::CommandLog.count', 1, 'started() saves the object' ) do
|
51
|
+
cmd.started()
|
52
|
+
end
|
53
|
+
|
54
|
+
# Started sets started_at and state, duration is not yet calculable
|
55
|
+
assert_equal( BuildTool::History::CommandLog::STARTED, cmd.state )
|
56
|
+
assert_not_nil( cmd.started_at, 'CommandLog.started_at is set.' )
|
57
|
+
assert_equal( '-----', cmd.duration )
|
58
|
+
|
59
|
+
# Started sets started_at and state, duration is calculable
|
60
|
+
cmd.finished( BuildTool::History::CommandLog::FINISHED_WITH_ERRORS )
|
61
|
+
assert_equal( BuildTool::History::CommandLog::FINISHED_WITH_ERRORS, cmd.state )
|
62
|
+
assert_not_nil( cmd.finished_at , 'CommandLog.finished_at is set.' )
|
63
|
+
assert_match( /[0-9][0-9]:[0-9][0-9]/, cmd.duration )
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
test 'last() returns the last n entries.' do
|
70
|
+
|
71
|
+
cmds = BuildTool::History::CommandLog.last( 1 )
|
72
|
+
assert_equal( 1, cmds.count, 'one element is returned' )
|
73
|
+
assert_equal( 'my_other_command', cmds[0].command )
|
74
|
+
|
75
|
+
cmds = BuildTool::History::CommandLog.last( 2 )
|
76
|
+
assert_equal( 2, cmds.count, 'two element are returned' )
|
77
|
+
assert_equal( 'my_special_command', cmds[1].command )
|
78
|
+
assert_equal( 'my_other_command', cmds[0].command )
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
test 'older_than() returns all modules older that 10 days.' do
|
85
|
+
|
86
|
+
# :TODO: Create a real test
|
87
|
+
cmds = BuildTool::History::CommandLog.older_than()
|
88
|
+
assert_equal( 0, cmds.count, 'no element is returned' )
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
test 'last_by_module() returns the last n entries per module.' do
|
95
|
+
|
96
|
+
# :TODO: Create a real test
|
97
|
+
cmds = BuildTool::History::CommandLog.last_by_module( 'kdelibs' )
|
98
|
+
assert_equal( 0, cmds.count, 'no element is returned' )
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
setup_database()
|
4
|
+
|
5
|
+
require 'build-tool/model/feature'
|
6
|
+
|
7
|
+
class FeatureTest < ActiveSupport::TestCase
|
8
|
+
|
9
|
+
test 'Constructor' do
|
10
|
+
feat = BuildTool::Feature.new
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'Active logic' do
|
14
|
+
feat = BuildTool::Feature.new
|
15
|
+
assert( feat.default_active?, 'By default all features are active' )
|
16
|
+
assert( feat.active?, 'By default all features are active' )
|
17
|
+
feat.default_active = false
|
18
|
+
assert( !feat.default_active? )
|
19
|
+
assert( !feat.active?, 'By default active? uses default_active?' )
|
20
|
+
feat.active = true
|
21
|
+
assert( !feat.default_active? )
|
22
|
+
assert( feat.active? )
|
23
|
+
feat.active = nil
|
24
|
+
assert( !feat.default_active? )
|
25
|
+
assert( !feat.active? )
|
26
|
+
end
|
27
|
+
|
28
|
+
end # class FeatureTest
|
29
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
setup_database()
|
4
|
+
|
5
|
+
require 'build-tool/history'
|
6
|
+
|
7
|
+
class TestModuleLog < ActiveSupport::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@cmd = BuildTool::History::CommandLog.new(
|
11
|
+
:command => 'my_special_command',
|
12
|
+
:logdir => '/home/build-tool/log')
|
13
|
+
@modA = BuildTool::Module.new( :name => 'modA' )
|
14
|
+
@modB = BuildTool::Module.new( :name => 'modB' )
|
15
|
+
@cmd.started
|
16
|
+
@cmd.finished( BuildTool::History::ModuleLog::FINISHED_SUCCESSFUL )
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
test 'Constructor works' do
|
22
|
+
|
23
|
+
mod = nil
|
24
|
+
|
25
|
+
# The constructor does not save
|
26
|
+
assert_no_difference( 'BuildTool::History::ModuleLog.count', 'new() does not save the object' ) do
|
27
|
+
|
28
|
+
mod = @cmd.module_logs.build(
|
29
|
+
:module => @modA,
|
30
|
+
:event => 'compile',
|
31
|
+
:logfile => '10_kdelibs_compile.log' )
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
assert_nil( mod.started_at, 'started_at is initialized with nil.' )
|
36
|
+
assert_nil( mod.finished_at, 'finished_at is initialized with nil.' )
|
37
|
+
assert_equal( BuildTool::History::ModuleLog::STARTED, mod.state )
|
38
|
+
assert_equal( '-----', mod.duration )
|
39
|
+
assert_equal( 'modA', mod.module.name )
|
40
|
+
assert_equal( 'compile', mod.event )
|
41
|
+
assert_equal( '10_kdelibs_compile.log', mod.logfile )
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
test 'Workflow works' do
|
47
|
+
|
48
|
+
mod = @cmd.module_logs.build(
|
49
|
+
:module => @modB,
|
50
|
+
:event => 'install',
|
51
|
+
:logfile => '50_kdebase-runtime_install.log' )
|
52
|
+
|
53
|
+
# Started sets started_at and state, duration is not yet calculable
|
54
|
+
assert_difference( 'BuildTool::History::ModuleLog.count', 1, 'started() saves the object' ) do
|
55
|
+
mod.started()
|
56
|
+
end
|
57
|
+
assert_equal( BuildTool::History::ModuleLog::STARTED, mod.state )
|
58
|
+
assert_not_nil( mod.started_at, 'ModuleLog.started_at is set.' )
|
59
|
+
assert_equal( '-----', mod.duration )
|
60
|
+
|
61
|
+
# Started sets started_at and state, duration is calculable
|
62
|
+
mod.finished( BuildTool::History::ModuleLog::FINISHED_WITH_ERRORS )
|
63
|
+
assert_equal( BuildTool::History::ModuleLog::FINISHED_WITH_ERRORS, mod.state )
|
64
|
+
assert_not_nil( mod.finished_at , 'ModuleLog.finished_at is set.' )
|
65
|
+
assert_match( /[0-9][0-9]:[0-9][0-9]/, mod.duration )
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|