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.
Files changed (133) hide show
  1. data/.gitignore +1 -0
  2. data/.rvmrc +1 -0
  3. data/.yardopts +1 -0
  4. data/Gemfile +5 -0
  5. data/Gemfile.lock +56 -0
  6. data/History.txt +64 -0
  7. data/README.txt +0 -7
  8. data/Rakefile +8 -56
  9. data/bin/build-tool +4 -1
  10. data/build-tool.gemspec +62 -0
  11. data/db/migrations/20110703074000_add_command_logs.rb +17 -0
  12. data/db/migrations/20110703075000_add_module_logs.rb +20 -0
  13. data/db/migrations/20110815170000_add_features.rb +17 -0
  14. data/db/migrations/20120103204700_add_modules.rb +17 -0
  15. data/db/migrations/20120106181200_add_settings.rb +18 -0
  16. data/lib/build-tool.rb +3 -4
  17. data/lib/build-tool/application.rb +127 -37
  18. data/lib/build-tool/build-system/autoconf.rb +2 -8
  19. data/lib/build-tool/build-system/base.rb +12 -4
  20. data/lib/build-tool/build-system/cmake.rb +2 -0
  21. data/lib/build-tool/build-system/custom.rb +2 -0
  22. data/lib/build-tool/build-system/kdel10n.rb +2 -0
  23. data/lib/build-tool/build-system/make.rb +2 -0
  24. data/lib/build-tool/build-system/none.rb +2 -0
  25. data/lib/build-tool/build-system/qmake.rb +2 -0
  26. data/lib/build-tool/build-system/qt.rb +4 -0
  27. data/lib/build-tool/cfg/lexer.rex +40 -8
  28. data/lib/build-tool/cfg/lexer_base.rb +3 -1
  29. data/lib/build-tool/cfg/node.rb +17 -1
  30. data/lib/build-tool/cfg/parser.y +92 -10
  31. data/lib/build-tool/cfg/visitor.rb +202 -78
  32. data/lib/build-tool/command_actions.rb +26 -10
  33. data/lib/build-tool/commands.rb +289 -197
  34. data/lib/build-tool/commands/build.rb +13 -9
  35. data/lib/build-tool/commands/configuration.rb +25 -0
  36. data/lib/build-tool/commands/configuration/edit.rb +42 -0
  37. data/lib/build-tool/commands/configuration/list.rb +48 -0
  38. data/lib/build-tool/commands/configure.rb +9 -5
  39. data/lib/build-tool/commands/ctags.rb +8 -3
  40. data/lib/build-tool/commands/environments.rb +2 -4
  41. data/lib/build-tool/commands/environments/list.rb +13 -10
  42. data/lib/build-tool/commands/environments/set.rb +5 -1
  43. data/lib/build-tool/commands/features.rb +24 -0
  44. data/lib/build-tool/commands/features/disable.rb +70 -0
  45. data/lib/build-tool/commands/features/enable.rb +66 -0
  46. data/lib/build-tool/commands/features/list.rb +92 -0
  47. data/lib/build-tool/commands/fetch.rb +9 -3
  48. data/lib/build-tool/commands/files.rb +9 -5
  49. data/lib/build-tool/commands/gc.rb +48 -15
  50. data/lib/build-tool/commands/history.rb +21 -16
  51. data/lib/build-tool/commands/info.rb +16 -13
  52. data/lib/build-tool/commands/install.rb +8 -4
  53. data/lib/build-tool/commands/modules.rb +2 -4
  54. data/lib/build-tool/commands/modules/cleanup.rb +52 -0
  55. data/lib/build-tool/commands/modules/disable.rb +95 -0
  56. data/lib/build-tool/commands/modules/enable.rb +52 -0
  57. data/lib/build-tool/commands/modules/info.rb +44 -35
  58. data/lib/build-tool/commands/modules/list.rb +67 -15
  59. data/lib/build-tool/commands/modules/shell.rb +8 -2
  60. data/lib/build-tool/commands/rebase.rb +15 -7
  61. data/lib/build-tool/commands/recipes.rb +2 -4
  62. data/lib/build-tool/commands/recipes/add.rb +16 -2
  63. data/lib/build-tool/commands/recipes/edit.rb +72 -0
  64. data/lib/build-tool/commands/recipes/incoming.rb +11 -7
  65. data/lib/build-tool/commands/recipes/info.rb +12 -8
  66. data/lib/build-tool/commands/recipes/install.rb +37 -42
  67. data/lib/build-tool/commands/recipes/list.rb +6 -2
  68. data/lib/build-tool/configuration.rb +88 -3
  69. data/lib/build-tool/environment.rb +2 -0
  70. data/lib/build-tool/errors.rb +5 -0
  71. data/lib/build-tool/history.rb +3 -181
  72. data/lib/build-tool/model/command_log.rb +93 -0
  73. data/lib/build-tool/model/feature.rb +80 -0
  74. data/lib/build-tool/{module.rb → model/module.rb} +110 -29
  75. data/lib/build-tool/model/module_log.rb +64 -0
  76. data/lib/build-tool/model/setting.rb +84 -0
  77. data/lib/build-tool/recipe.rb +40 -18
  78. data/lib/build-tool/repository.rb +39 -33
  79. data/lib/build-tool/server.rb +27 -3
  80. data/lib/build-tool/singleton.rb +2 -0
  81. data/lib/build-tool/sshkey.rb +2 -0
  82. data/lib/build-tool/state_helper.rb +64 -0
  83. data/lib/build-tool/vcs/archive.rb +3 -1
  84. data/lib/build-tool/vcs/base.rb +13 -0
  85. data/lib/build-tool/vcs/git-svn.rb +36 -14
  86. data/lib/build-tool/vcs/git.rb +180 -44
  87. data/lib/build-tool/vcs/mercurial.rb +25 -13
  88. data/lib/build-tool/vcs/svn.rb +20 -15
  89. data/lib/build-tool/version.rb +30 -0
  90. data/lib/mj/error.rb +2 -0
  91. data/lib/mj/logging.rb +2 -0
  92. data/lib/mj/mixins/inherited_attributes.rb +73 -0
  93. data/lib/mj/tools/editor.rb +34 -0
  94. data/lib/mj/tools/ssh.rb +2 -0
  95. data/lib/mj/tools/subprocess.rb +2 -1
  96. data/lib/mj/vcs/git.rb +14 -2
  97. data/lib/mj/visitor.rb +22 -0
  98. data/tasks/db.rake +36 -0
  99. data/tasks/racc.rake +14 -0
  100. data/tasks/rdoc.rake +8 -0
  101. data/tasks/rexical.rake +14 -0
  102. data/tasks/test.rake +21 -0
  103. data/test/integration/history_test.rb +88 -0
  104. data/test/integration/parser_configuration.rb +36 -0
  105. data/test/integration/parser_environment_parser.rb +156 -0
  106. data/test/integration/parser_feature_test.rb +75 -0
  107. data/test/integration/parser_git-svn_test.rb +92 -0
  108. data/test/integration/parser_git_test.rb +97 -0
  109. data/test/integration/parser_mercurial_test.rb +77 -0
  110. data/test/integration/parser_module_test.rb +103 -0
  111. data/test/integration/parser_svn_test.rb +92 -0
  112. data/test/integration/parser_test.rb +73 -0
  113. data/test/test_helper.rb +61 -0
  114. data/test/unit/configuration_test.rb +36 -0
  115. data/test/unit/git_configuration_test.rb +163 -0
  116. data/test/unit/git_svn_configuration_test.rb +240 -0
  117. data/test/unit/mercurial_configuration_test.rb +64 -0
  118. data/test/unit/model/command_log_test.rb +103 -0
  119. data/test/unit/model/feature_test.rb +29 -0
  120. data/test/unit/model/module_log_test.rb +70 -0
  121. data/test/unit/model/module_test.rb +32 -0
  122. data/test/unit/repository_test.rb +110 -0
  123. data/test/unit/server_test.rb +66 -0
  124. data/test/unit/svn_configuration_test.rb +90 -0
  125. metadata +134 -93
  126. data/Manifest.txt +0 -80
  127. data/db/migrations/001_command_histories.rb +0 -20
  128. data/db/migrations/002_module_events.rb +0 -24
  129. data/db/migrations/003_command_histories_add_logfile.rb +0 -19
  130. data/lib/build-tool/GUI.rb +0 -360
  131. data/lib/build-tool/commands/help.rb +0 -22
  132. data/lib/build-tool/commands/lsfeatures.rb +0 -76
  133. data/lib/build-tool/feature.rb +0 -47
@@ -0,0 +1,156 @@
1
+ require 'test_helper'
2
+
3
+ setup_database()
4
+
5
+ require 'build-tool/cfg/parser'
6
+
7
+ class TestParser < ActiveSupport::TestCase
8
+
9
+ def setup
10
+ create_parser()
11
+ end
12
+
13
+ def create_parser
14
+ @configuration = BuildTool::Configuration.new()
15
+ @configuration.truncate()
16
+ @parser = BuildTool::Cfg::Parser.new( @configuration )
17
+ @localparser = BuildTool::Cfg::Parser.new( @configuration, false )
18
+ end
19
+
20
+ test "Parses an empty environment" do
21
+ assert_nothing_raised() do
22
+ @parser.parse_string <<-EOF
23
+ environment empty
24
+ end
25
+ EOF
26
+ end
27
+
28
+ assert( @configuration.environment( 'empty' ) )
29
+ empty = @configuration.environment( 'empty' )
30
+ assert_equal( 'empty', empty.name )
31
+ assert_nil( empty.parent )
32
+
33
+ end
34
+
35
+ test "Parses inheritance" do
36
+ assert_nothing_raised() do
37
+ @parser.parse_string <<-EOF
38
+ environment empty
39
+ end
40
+ environment based_on_empty < empty
41
+ end
42
+ EOF
43
+ end
44
+
45
+ assert( @configuration.environment( 'empty' ) )
46
+ empty = @configuration.environment( 'empty' )
47
+ assert_equal( 'empty', empty.name )
48
+ assert_nil( empty.parent )
49
+
50
+ assert( @configuration.environment( 'based_on_empty' ) )
51
+ based_on_empty = @configuration.environment( 'based_on_empty' )
52
+ assert_equal( 'based_on_empty', based_on_empty.name )
53
+ assert_equal( empty, based_on_empty.parent )
54
+ end
55
+
56
+ test "Handles environment correctly" do
57
+ assert_nothing_raised() do
58
+ @parser.parse_string <<-EOF
59
+ environment base
60
+ var PATH "/usr/bin"
61
+ var MANPATH set "/usr/man"
62
+ var LD_LIBRARY_PATH append "/usr/lib"
63
+ var PKG_CONFIG_PATH prepend "/usr/lib/pkgconfig"
64
+ end
65
+ EOF
66
+ end
67
+
68
+ env = @configuration.environment( 'base' )
69
+ assert_equal( '/usr/bin', env['PATH'] )
70
+ assert_equal( '/usr/man', env['MANPATH'] )
71
+ assert_equal( '/usr/lib', env['LD_LIBRARY_PATH'] )
72
+ assert_equal( '/usr/lib/pkgconfig', env['PKG_CONFIG_PATH'] )
73
+
74
+ end
75
+
76
+ test "Handles environment with parent correctly" do
77
+ assert_nothing_raised() do
78
+ @parser.parse_string <<-EOF
79
+ environment base
80
+ var PATH "/usr/bin"
81
+ var MANPATH set "/usr/man"
82
+ var LD_LIBRARY_PATH append "/usr/lib"
83
+ var PKG_CONFIG_PATH prepend "/usr/lib/pkgconfig"
84
+ end
85
+ environment child < base
86
+ var PATH "/bin"
87
+ var MANPATH set "/man"
88
+ var LD_LIBRARY_PATH append "/lib"
89
+ var PKG_CONFIG_PATH prepend "/lib/pkgconfig"
90
+ end
91
+ EOF
92
+
93
+ end
94
+
95
+ env = @configuration.environment( 'base' )
96
+ assert_equal( '/usr/bin', env['PATH'] )
97
+ assert_equal( '/usr/man', env['MANPATH'] )
98
+ assert_equal( '/usr/lib', env['LD_LIBRARY_PATH'] )
99
+ assert_equal( '/usr/lib/pkgconfig', env['PKG_CONFIG_PATH'] )
100
+
101
+ env = @configuration.environment( 'child' )
102
+ assert_equal( '/bin', env['PATH'] )
103
+ assert_equal( '/man', env['MANPATH'] )
104
+ assert_equal( '/usr/lib:/lib', env['LD_LIBRARY_PATH'] )
105
+ assert_equal( '/lib/pkgconfig:/usr/lib/pkgconfig', env['PKG_CONFIG_PATH'] )
106
+
107
+ env = @configuration.environment( 'base' )
108
+ assert_equal( '/usr/bin', env['PATH'] )
109
+ assert_equal( '/usr/man', env['MANPATH'] )
110
+
111
+ end
112
+
113
+ test "Handles environment in respect to features correctly" do
114
+ assert_nothing_raised() do
115
+ @parser.parse_string <<-EOF
116
+ feature "test"
117
+ environment test1
118
+ end
119
+ feature "test-child"
120
+ end
121
+ end
122
+
123
+ feature "test"
124
+ feature "test-child"
125
+ environment "test-child"
126
+ end
127
+ end
128
+ environment test2
129
+ end
130
+ end
131
+ environment outer
132
+ end
133
+ EOF
134
+
135
+ end
136
+
137
+ env = @configuration.environment( 'test1' )
138
+ assert( env.feature )
139
+ assert_equal( 'test', env.feature.name )
140
+
141
+ env = @configuration.environment( 'test2' )
142
+ assert( env.feature )
143
+ assert_equal( 'test', env.feature.name )
144
+
145
+ env = @configuration.environment( 'test-child' )
146
+ assert( env.feature )
147
+ assert_equal( 'test-child', env.feature.name )
148
+ assert_equal( 'test/test-child', env.feature.path )
149
+
150
+ env = @configuration.environment( 'outer' )
151
+ assert_nil( env.feature )
152
+
153
+ end
154
+
155
+ end
156
+
@@ -0,0 +1,75 @@
1
+ require 'test_helper'
2
+
3
+ setup_database()
4
+
5
+ require 'build-tool/cfg/parser'
6
+
7
+ class ParserFeatureTest < ActiveSupport::TestCase
8
+
9
+ def setup
10
+ @configuration = BuildTool::Configuration.new()
11
+ @configuration.truncate()
12
+ @parser = BuildTool::Cfg::Parser.new( @configuration )
13
+ @localparser = BuildTool::Cfg::Parser.new( @configuration, false )
14
+ end
15
+
16
+ test 'Parses a valid feature declaration' do
17
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
18
+ feature "test_default"
19
+ end
20
+ feature "test_disabled"
21
+ end
22
+ disable feature "test_disabled"
23
+ EOF
24
+ # Now check the parsed configuration
25
+ assert( @configuration.feature( 'test_default' ).default_active? )
26
+ assert( @configuration.feature( 'test_default' ).active? )
27
+ assert( !@configuration.feature( 'test_disabled' ).default_active? )
28
+ assert( !@configuration.feature( 'test_disabled' ).active? )
29
+
30
+ # Parse a local config file
31
+ @localparser.parse_string <<-EOF
32
+ disable feature "test_default"
33
+ enable feature "test_disabled"
34
+ EOF
35
+
36
+ # Now check the parsed configuration
37
+ assert( !@configuration.feature( 'test_default' ).active? )
38
+ assert( @configuration.feature( 'test_disabled' ).active? )
39
+ # But the defaults are the same
40
+ assert( @configuration.feature( 'test_default' ).default_active? )
41
+ assert( !@configuration.feature( 'test_disabled' ).default_active? )
42
+ @configuration.save()
43
+ end
44
+
45
+ test 'Keeps settings over reloads' do
46
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
47
+ feature "test_default"
48
+ end
49
+ feature "test_disabled"
50
+ end
51
+ disable feature "test_disabled"
52
+ EOF
53
+ @configuration.feature( 'test_disabled' ).active = true
54
+ @configuration.feature( 'test_default' ).active = false
55
+ @configuration.save()
56
+
57
+ @configuration = BuildTool::Configuration.new()
58
+ @configuration.load()
59
+ @parser = BuildTool::Cfg::Parser.new( @configuration )
60
+ @localparser = BuildTool::Cfg::Parser.new( @configuration, false )
61
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
62
+ feature "test_default"
63
+ end
64
+ feature "test_disabled"
65
+ end
66
+ disable feature "test_disabled"
67
+ EOF
68
+
69
+ # Now check the parsed configuration.
70
+ assert( !@configuration.feature( 'test_default' ).active? )
71
+ assert( @configuration.feature( 'test_disabled' ).active? )
72
+
73
+ end
74
+
75
+ end # class TestParserFeatureTest
@@ -0,0 +1,92 @@
1
+ require 'test_helper'
2
+
3
+ setup_database()
4
+
5
+ require 'build-tool/cfg/parser'
6
+
7
+ class TestParserGitSvn < ActiveSupport::TestCase
8
+
9
+ def setup
10
+ @configuration = BuildTool::Configuration.new()
11
+ @configuration.truncate()
12
+ @parser = BuildTool::Cfg::Parser.new( @configuration )
13
+ end
14
+
15
+ test "Parses a valid git-svn repository declation." do
16
+ @configuration.add_server( BuildTool::Server.new( 'svn.kde.org', 'svn://anonsvn.kde.org/home/kde' ) )
17
+ @configuration.add_repository( BuildTool::Repository.new( 'kde' ) )
18
+ @configuration.repository( 'kde' ).server = @configuration.server( 'svn.kde.org' )
19
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
20
+ module "oxygen-icons"
21
+ vcs git-svn
22
+ remote-path "kdesupport/oxygen"
23
+ use repository "kde"
24
+ end # vcs
25
+ end # module
26
+ EOF
27
+ # Now check the parsed configuration
28
+ assert_not_nil( @configuration.module('oxygen-icons') )
29
+ assert_attributes(
30
+ @configuration.module('oxygen-icons'),
31
+ {
32
+ :vcs =>
33
+ {
34
+ :name => 'git-svn',
35
+ :config =>
36
+ {
37
+ :repository =>
38
+ {
39
+ :name => 'kde',
40
+ :url => 'svn://anonsvn.kde.org/home/kde'
41
+ },
42
+ :remote_path => "kdesupport/oxygen"
43
+ }
44
+ }
45
+
46
+ }
47
+ )
48
+ end
49
+
50
+ test "Git-SVN Repository inheritance works." do
51
+ @configuration.add_server( BuildTool::Server.new( 'svn.kde.org', 'svn://anonsvn.kde.org/home/kde' ) )
52
+ @configuration.add_repository( BuildTool::Repository.new( 'kde' ) )
53
+ @configuration.repository( 'kde' ).server = @configuration.server( 'svn.kde.org' )
54
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
55
+ module "oxygen-icons"
56
+ vcs git-svn
57
+ remote-path "kdesupport/oxygen"
58
+ use repository "kde"
59
+ end # vcs
60
+ end # module
61
+ module "oxygen-icons"
62
+ vcs git-svn <
63
+ remote-path "kdesupport/oxygen-neu"
64
+ end # vcs
65
+ end # module
66
+ EOF
67
+ # Now check the parsed configuration
68
+ assert_not_nil( @configuration.module('oxygen-icons') )
69
+ assert_attributes(
70
+ @configuration.module('oxygen-icons'),
71
+ {
72
+ :vcs =>
73
+ {
74
+ :name => 'git-svn',
75
+ :config =>
76
+ {
77
+ :repository =>
78
+ {
79
+ :name => 'kde',
80
+ :url => 'svn://anonsvn.kde.org/home/kde'
81
+ },
82
+ :remote_path => "kdesupport/oxygen-neu"
83
+ }
84
+ }
85
+
86
+ }
87
+ )
88
+ end
89
+
90
+ end
91
+
92
+
@@ -0,0 +1,97 @@
1
+ require 'test_helper'
2
+
3
+ setup_database()
4
+
5
+ require 'build-tool/cfg/parser'
6
+
7
+ class TestParserGit < ActiveSupport::TestCase
8
+
9
+ def setup
10
+ @configuration = BuildTool::Configuration.new()
11
+ @configuration.truncate()
12
+ @parser = BuildTool::Cfg::Parser.new( @configuration )
13
+ end
14
+
15
+ test "Parses a valid git repository declation." do
16
+ @configuration.add_server( BuildTool::Server.new( 'anongit.gitorious.org', 'git://gitorious.org' ) )
17
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
18
+ module "qt"
19
+ vcs git
20
+
21
+ remote "kde-qt"
22
+ url "anongit.gitorious.org" "+kde-developers/qt/kde-qt"
23
+ end
24
+
25
+ url "anongit.gitorious.org" "qt/qt"
26
+
27
+ # The remote branch we rebase against.
28
+ track "origin/4.8"
29
+ end # vcs
30
+ end # module
31
+ EOF
32
+ # Now check the parsed configuration
33
+ assert_not_nil( @configuration.module('qt') )
34
+ assert_attributes(
35
+ @configuration.module('qt'),
36
+ {
37
+ :vcs =>
38
+ {
39
+ :name => 'git',
40
+ :config => lambda { |x|
41
+ assert_not_nil( x.remote['origin'] )
42
+ assert_equal( 'git://gitorious.org/qt/qt' , x.remote['origin'].url )
43
+ assert_equal( 'origin/4.8', x.track )
44
+ }
45
+ }
46
+
47
+ }
48
+ )
49
+ end
50
+
51
+ test "Git Repository inheritance works." do
52
+ @configuration.add_server( BuildTool::Server.new( 'anongit.gitorious.org', 'git://anongit.gitorious.org' ) )
53
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
54
+ module "qt"
55
+ vcs git
56
+ remote "kde-qt"
57
+ url "anongit.gitorious.org" "+kde-developers/qt/kde-qt"
58
+ end
59
+ url "anongit.gitorious.org" "qt/qt"
60
+ # The remote branch we rebase against.
61
+ track "origin/4.8"
62
+ end # vcs
63
+ end # module
64
+
65
+ module "qt"
66
+ vcs git <
67
+ remote "qt"
68
+ url "git://myurl"
69
+ end
70
+ track "origin/4.7"
71
+ end # vcs
72
+ end # module
73
+ EOF
74
+ # Now check the parsed configuration
75
+ assert_not_nil( @configuration.module('qt') )
76
+ assert_attributes(
77
+ @configuration.module('qt'),
78
+ {
79
+ :vcs =>
80
+ {
81
+ :name => 'git'
82
+ }
83
+ }
84
+ )
85
+ config = @configuration.module('qt').vcs.config
86
+ assert_not_nil( config.parent, 'has a parent' )
87
+ assert_equal( 'origin/4.7', config.track )
88
+ assert_not_nil( config.merged_remote['origin'], 'origin still set' )
89
+ assert_equal( 'git://anongit.gitorious.org/qt/qt' , config.merged_remote['origin'].url )
90
+ assert_not_nil( config.merged_remote['kde-qt'], 'kde-qt still set' )
91
+ assert_equal( 'git://anongit.gitorious.org/+kde-developers/qt/kde-qt' , config.merged_remote['kde-qt'].url )
92
+ assert_not_nil( config.merged_remote['qt'], 'qt there too' )
93
+ assert_equal( 'git://myurl' , config.merged_remote['qt'].url )
94
+ end
95
+
96
+ end
97
+
@@ -0,0 +1,77 @@
1
+ require 'test_helper'
2
+
3
+ require 'build-tool/cfg/parser'
4
+
5
+ class TestParserMercurial < ActiveSupport::TestCase
6
+
7
+ def setup
8
+ @configuration = BuildTool::Configuration.new()
9
+ @configuration.truncate()
10
+ @parser = BuildTool::Cfg::Parser.new( @configuration )
11
+ end
12
+
13
+ test "Parses a valid mercurial repository declation." do
14
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
15
+ module "oxygen-icons"
16
+ vcs mercurial
17
+ url "https://mercurial.url/test"
18
+ track "branch"
19
+ end # vcs
20
+ end # module
21
+ EOF
22
+ # Now check the parsed configuration
23
+ assert_not_nil( @configuration.module('oxygen-icons') )
24
+ assert_attributes(
25
+ @configuration.module('oxygen-icons'),
26
+ {
27
+ :vcs =>
28
+ {
29
+ :name => 'mercurial',
30
+ :config =>
31
+ {
32
+ :url => 'https://mercurial.url/test',
33
+ :track => 'branch'
34
+ }
35
+ }
36
+
37
+ }
38
+ )
39
+ end
40
+
41
+ test "Git-SVN Repository inheritance works." do
42
+ assert_nothing_raised() { @parser.parse_string <<-EOF }
43
+ module "oxygen-icons"
44
+ vcs mercurial
45
+ url "https://mercurial.url/test"
46
+ track "branch"
47
+ end # vcs
48
+ end # module
49
+ module "oxygen-icons"
50
+ vcs mercurial <
51
+ track "other_branch"
52
+ end
53
+ end # module
54
+ EOF
55
+ # Now check the parsed configuration
56
+ assert_not_nil( @configuration.module('oxygen-icons') )
57
+ assert_attributes(
58
+ @configuration.module('oxygen-icons'),
59
+ {
60
+ :vcs =>
61
+ {
62
+ :name => 'mercurial',
63
+ :config =>
64
+ {
65
+ :url => 'https://mercurial.url/test',
66
+ :track => 'other_branch'
67
+ }
68
+ }
69
+
70
+ }
71
+ )
72
+ end
73
+
74
+ end
75
+
76
+
77
+