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,30 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
module BuildTool
|
4
|
+
|
5
|
+
class Version
|
6
|
+
|
7
|
+
def initialize( major, minor, patch, rc = nil )
|
8
|
+
@MAJOR_VERSION = major
|
9
|
+
@MINOR_VERSION = minor
|
10
|
+
@PATCH_LEVEL = patch
|
11
|
+
@RC = rc
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_s()
|
15
|
+
version = '%d.%d.%d' % [ @MAJOR_VERSION, @MINOR_VERSION, @PATCH_LEVEL ]
|
16
|
+
if not @RC.nil?
|
17
|
+
version += '.rc%d' % @RC
|
18
|
+
end
|
19
|
+
return version
|
20
|
+
end
|
21
|
+
|
22
|
+
# During a minor release build-tool guarantess recipe compatibility.
|
23
|
+
def recipe_version()
|
24
|
+
return '%s.%s' % [ @MAJOR_VERSION, @MINOR_VERSION ]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
VERSION = Version.new( 0, 6, 0, 1 )
|
30
|
+
end
|
data/lib/mj/error.rb
CHANGED
data/lib/mj/logging.rb
CHANGED
@@ -0,0 +1,73 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
# A mixin that implements inheriting values from a parent module. The parent object can be set in
|
4
|
+
# two ways.
|
5
|
+
#
|
6
|
+
# object.parent = parent
|
7
|
+
# object.parent = lambda { some_function_returning_parent() }
|
8
|
+
#
|
9
|
+
# Set the inherited values with
|
10
|
+
#
|
11
|
+
# class MyClass
|
12
|
+
#
|
13
|
+
# include GetValuesFromParent
|
14
|
+
#
|
15
|
+
# inheritated_attr_accessor :myattr
|
16
|
+
# inheritated_attr_accessor :myotherattr.
|
17
|
+
#
|
18
|
+
# end
|
19
|
+
|
20
|
+
module MJ module Mixins
|
21
|
+
|
22
|
+
module InheritedAttributes
|
23
|
+
|
24
|
+
# Class methods
|
25
|
+
module ClassMethods
|
26
|
+
|
27
|
+
def inherited_attr_accessor( name )
|
28
|
+
class_eval <<-EOF
|
29
|
+
|
30
|
+
attr_writer :#{name}
|
31
|
+
|
32
|
+
def #{name}
|
33
|
+
return @#{name} if @#{name}
|
34
|
+
return parent.#{name} if @parent
|
35
|
+
return nil
|
36
|
+
end
|
37
|
+
EOF
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
# Instance methods
|
43
|
+
module InstanceMethods
|
44
|
+
|
45
|
+
def initialize( *args )
|
46
|
+
@parent = nil
|
47
|
+
end
|
48
|
+
|
49
|
+
# Set the parent object.
|
50
|
+
attr_writer :parent
|
51
|
+
|
52
|
+
# Get the parent object.
|
53
|
+
def parent
|
54
|
+
return nil if not @parent
|
55
|
+
if @parent.is_a?( Proc )
|
56
|
+
@parent.call()
|
57
|
+
else
|
58
|
+
@parent
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
# Include
|
65
|
+
def self.included( receiver )
|
66
|
+
receiver.extend ClassMethods
|
67
|
+
receiver.send :include, InstanceMethods
|
68
|
+
end
|
69
|
+
|
70
|
+
end # module InheritedAttributes
|
71
|
+
|
72
|
+
end end # module MJ::InheritedAttributes
|
73
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'tempfile'
|
4
|
+
|
5
|
+
module MJ; module Tools
|
6
|
+
|
7
|
+
# A class that puts the given content in a tmpfile, opens an editor for the user to play with
|
8
|
+
# it. After the user closed the editor it will give back the new content.
|
9
|
+
class TmpFileEditor
|
10
|
+
|
11
|
+
def initialize( content )
|
12
|
+
@file = Tempfile.new( [ 'configuration', '.yaml' ] )
|
13
|
+
# First write the old content into the file
|
14
|
+
@file.write( content )
|
15
|
+
@file.close()
|
16
|
+
end
|
17
|
+
|
18
|
+
def editor()
|
19
|
+
"gvim -f"
|
20
|
+
end
|
21
|
+
|
22
|
+
def edit()
|
23
|
+
system( "#{editor()} #{@file.path}" )
|
24
|
+
return $? == 0
|
25
|
+
end
|
26
|
+
|
27
|
+
def path()
|
28
|
+
@file.path()
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
end; end # module MJ::Tools
|
data/lib/mj/tools/ssh.rb
CHANGED
data/lib/mj/tools/subprocess.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
module MJ; module Tools
|
2
4
|
|
3
5
|
module SubProcess
|
@@ -11,7 +13,6 @@ module ClassMethods
|
|
11
13
|
# Executes the given command and yields each line of output.
|
12
14
|
# Returns +$?+ .
|
13
15
|
def execute( command, wd = ENV["HOME"], env = nil )
|
14
|
-
cwd ||= Dir.getwd
|
15
16
|
logger.trace "(#{wd}) > #{command} 2>&1"
|
16
17
|
if !$noop
|
17
18
|
adjust_environment( wd, env ) {
|
data/lib/mj/vcs/git.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
require 'mj/tools/subprocess'
|
2
4
|
require 'mj/error'
|
3
5
|
|
@@ -5,6 +7,16 @@
|
|
5
7
|
#
|
6
8
|
module MJ; module VCS; module Git;
|
7
9
|
|
10
|
+
@git_available = nil
|
11
|
+
|
12
|
+
# Is the git executable available?
|
13
|
+
def self.git_available?()
|
14
|
+
return @git_available unless @git_available.nil?
|
15
|
+
%x( git --version 2>&1 )
|
16
|
+
@git_available = $?.success?
|
17
|
+
return @git_available
|
18
|
+
end
|
19
|
+
|
8
20
|
# Thrown if git signals a problem
|
9
21
|
class GitError < MJ::Error; end
|
10
22
|
|
@@ -34,12 +46,12 @@ def checkout(opts)
|
|
34
46
|
end
|
35
47
|
|
36
48
|
# Clone a repository
|
37
|
-
def clone(url)
|
49
|
+
def clone(url, branch = 'master' )
|
38
50
|
# Initialize the repository
|
39
51
|
init(url)
|
40
52
|
remote_add(url, "origin")
|
41
53
|
fetch("origin")
|
42
|
-
checkout("-b master origin
|
54
|
+
checkout("-b master origin/#{branch}")
|
43
55
|
end # def clone
|
44
56
|
|
45
57
|
# Check if the repository exists
|
data/lib/mj/visitor.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
1
3
|
module MJ;
|
2
4
|
|
3
5
|
class Visitable
|
4
6
|
|
5
7
|
def accept( visitor )
|
8
|
+
raise "#{visitor.class} is not a visitable class" if visitor.instance_of? VisitorBase
|
6
9
|
method_name = nil
|
7
10
|
klass = self.class.ancestors.find do |ancestor|
|
8
11
|
method_name = "visit_#{ancestor.name.split('::')[-1]}"
|
@@ -18,4 +21,23 @@ def accept( visitor )
|
|
18
21
|
|
19
22
|
end
|
20
23
|
|
24
|
+
|
25
|
+
# Base class for all Visitors.
|
26
|
+
class VisitorBase
|
27
|
+
|
28
|
+
# The configuration object to fill with our parse results.
|
29
|
+
attr_reader :configuration
|
30
|
+
|
31
|
+
class ArgumentsError < StandardError
|
32
|
+
end
|
33
|
+
|
34
|
+
def initialize( configuration )
|
35
|
+
@configuration = configuration
|
36
|
+
end
|
37
|
+
|
38
|
+
def visit_Object( object )
|
39
|
+
raise "#{self.class}: Not a visitor for #{object.class}!"
|
40
|
+
end
|
41
|
+
|
42
|
+
end # class VisitorBase
|
21
43
|
end
|
data/tasks/db.rake
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Tasks to work with the databases
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
namespace :db do
|
6
|
+
|
7
|
+
desc "Migrate the given database"
|
8
|
+
task :up, :database, :steps do |t, args|
|
9
|
+
database = args[:database]
|
10
|
+
steps = ( args[:steps] || 1 ).to_i
|
11
|
+
|
12
|
+
raise "No database specified" unless args[:database]
|
13
|
+
|
14
|
+
require 'active_record'
|
15
|
+
|
16
|
+
ActiveRecord::Base.establish_connection(
|
17
|
+
:adapter => 'sqlite3',
|
18
|
+
:database => args[:database] )
|
19
|
+
ActiveRecord::Migrator.forward( 'db/migrations', steps )
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Rollback the given database"
|
23
|
+
task :down, :database, :steps do |t, args|
|
24
|
+
database = args[:database]
|
25
|
+
steps = ( args[:steps] || 1 ).to_i
|
26
|
+
|
27
|
+
raise "No database specified" unless args[:database]
|
28
|
+
|
29
|
+
require 'active_record'
|
30
|
+
|
31
|
+
ActiveRecord::Base.establish_connection(
|
32
|
+
:adapter => 'sqlite3',
|
33
|
+
:database => args[:database] )
|
34
|
+
ActiveRecord::Migrator.rollback( 'db/migrations', steps )
|
35
|
+
end
|
36
|
+
end
|
data/tasks/racc.rake
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Find all racc files and generate the parser.
|
2
|
+
#
|
3
|
+
RACC_FILES = FileList[ 'lib/**/*.y'].ext( '.rb' )
|
4
|
+
|
5
|
+
|
6
|
+
namespace :bt do
|
7
|
+
|
8
|
+
desc "Generate parser with racc"
|
9
|
+
task :racc => RACC_FILES
|
10
|
+
rule '.rb' => '.y' do |target|
|
11
|
+
sh "racc -g #{target.source} -o #{target.name}"
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/tasks/rdoc.rake
ADDED
data/tasks/rexical.rake
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Find all racc files and generate the parser.
|
2
|
+
#
|
3
|
+
REXICAL_FILES = FileList[ 'lib/**/*.rex'].ext( '.rb' )
|
4
|
+
|
5
|
+
namespace :bt do
|
6
|
+
|
7
|
+
desc "Generate lexer with rexical"
|
8
|
+
task :rexical => REXICAL_FILES
|
9
|
+
rule '.rb' => '.rex' do |target|
|
10
|
+
sh "rex #{target.source} -o #{target.name}"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
data/tasks/test.rake
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rake/testtask'
|
2
|
+
|
3
|
+
Rake::TestTask.new('test') do |t|
|
4
|
+
t.pattern = 'test/**/*_test.rb'
|
5
|
+
t.ruby_opts=[ "-Itest" ]
|
6
|
+
end
|
7
|
+
task 'test' => 'bt:genall'
|
8
|
+
|
9
|
+
|
10
|
+
Rake::TestTask.new('test:unit') do |t|
|
11
|
+
t.pattern = 'test/unit/*_test.rb'
|
12
|
+
t.ruby_opts=[ "-Itest" ]
|
13
|
+
end
|
14
|
+
task 'test:unit' => 'bt:genall'
|
15
|
+
|
16
|
+
Rake::TestTask.new('test:integration') do |t|
|
17
|
+
t.pattern = 'test/integration/*_test.rb'
|
18
|
+
t.ruby_opts=[ "-Itest" ]
|
19
|
+
end
|
20
|
+
task 'test:integration' => 'bt:genall'
|
21
|
+
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'test_helper.rb'
|
2
|
+
|
3
|
+
setup_database()
|
4
|
+
|
5
|
+
require 'build-tool/model/command_log'
|
6
|
+
require 'build-tool/model/module'
|
7
|
+
|
8
|
+
class HistoryTest < ActiveSupport::TestCase
|
9
|
+
|
10
|
+
test "Module/Command Logs successfully created" do
|
11
|
+
|
12
|
+
# Create some modules.
|
13
|
+
kdelibs = BuildTool::Module.new( :name => 'KDE/kdelibs' )
|
14
|
+
kdelibs.save!()
|
15
|
+
|
16
|
+
kdebase_runtime = BuildTool::Module.new( :name => 'KDE/kdebase/runtime' )
|
17
|
+
kdebase_runtime.save!()
|
18
|
+
|
19
|
+
kdebase_workspace = BuildTool::Module.new( :name => 'KDE/kdebase/workspace' )
|
20
|
+
kdebase_workspace.save!()
|
21
|
+
|
22
|
+
# Create a command history touching alls three modules.
|
23
|
+
cmd = BuildTool::History::CommandLog.new(
|
24
|
+
:command => 'first_command',
|
25
|
+
:logdir => '/home/build-tool/log')
|
26
|
+
cmd.started()
|
27
|
+
|
28
|
+
assert( cmd.id )
|
29
|
+
assert( kdelibs.id )
|
30
|
+
|
31
|
+
cmd.module_logs.build(
|
32
|
+
:module => kdelibs,
|
33
|
+
:event => "build",
|
34
|
+
:logfile => "build.log" )
|
35
|
+
|
36
|
+
cmd.module_logs.build(
|
37
|
+
:module => kdebase_runtime,
|
38
|
+
:event => "fetch",
|
39
|
+
:logfile => "fetch.log" )
|
40
|
+
|
41
|
+
cmd.module_logs.build(
|
42
|
+
:module => kdebase_runtime,
|
43
|
+
:event => "build",
|
44
|
+
:logfile => "build.log" )
|
45
|
+
|
46
|
+
cmd.module_logs.build(
|
47
|
+
:module => kdebase_workspace,
|
48
|
+
:event => "build",
|
49
|
+
:logfile => "build.log" )
|
50
|
+
|
51
|
+
cmd.finished( BuildTool::History::CommandLog::FINISHED_SUCCESSFUL )
|
52
|
+
cmd = nil
|
53
|
+
|
54
|
+
# Check all module logs are found
|
55
|
+
cmd = BuildTool::History::CommandLog.where( :command => 'first_command' ).first()
|
56
|
+
assert( cmd )
|
57
|
+
assert_equal( 4, cmd.module_logs.count() )
|
58
|
+
assert_equal( 'KDE/kdelibs', cmd.module_logs[0].module.name )
|
59
|
+
assert_equal( 'KDE/kdebase/runtime', cmd.module_logs[1].module.name )
|
60
|
+
assert_equal( 'KDE/kdebase/runtime', cmd.module_logs[2].module.name )
|
61
|
+
assert_equal( 'KDE/kdebase/workspace', cmd.module_logs[3].module.name )
|
62
|
+
|
63
|
+
# Now check from the module site.
|
64
|
+
mod = BuildTool::Module.where( :name => 'KDE/kdebase/runtime' ).first
|
65
|
+
assert( mod )
|
66
|
+
assert_equal( 'KDE/kdebase/runtime', mod.name )
|
67
|
+
assert_equal( 2, mod.module_logs.count() )
|
68
|
+
|
69
|
+
# Delete the module and check it takes the modules logs with it.
|
70
|
+
mod.destroy()
|
71
|
+
mod = nil
|
72
|
+
|
73
|
+
# Check all module logs are found but the kdebase/runtime ones.
|
74
|
+
cmd = BuildTool::History::CommandLog.where( :command => 'first_command' ).first()
|
75
|
+
assert( cmd )
|
76
|
+
assert_equal( 2, cmd.module_logs.count() )
|
77
|
+
assert_equal( 'KDE/kdelibs', cmd.module_logs[0].module.name )
|
78
|
+
assert_equal( 'KDE/kdebase/workspace', cmd.module_logs[1].module.name )
|
79
|
+
|
80
|
+
# Now delete the command log and check all module and command logs are gone
|
81
|
+
cmd.destroy()
|
82
|
+
assert_equal( 0, BuildTool::History::ModuleLog::count() )
|
83
|
+
assert_equal( 0, BuildTool::History::CommandLog::count() )
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end # HistoryTest
|
88
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
setup_database()
|
4
|
+
|
5
|
+
require 'build-tool/application'
|
6
|
+
require 'build-tool/recipe'
|
7
|
+
|
8
|
+
class TestParser < ActiveSupport::TestCase
|
9
|
+
|
10
|
+
def setup
|
11
|
+
create_parser()
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_parser
|
15
|
+
@configuration = BuildTool::Configuration.new()
|
16
|
+
@configuration.truncate()
|
17
|
+
@configuration.add_setting( BuildTool::Setting.new( :name => 'BUILD_PREFIX', :value => '$HOME/bld' ) )
|
18
|
+
@configuration.add_setting( BuildTool::Setting.new( :name => 'PREFIX', :value => '/opt' ) )
|
19
|
+
|
20
|
+
@recipe = BuildTool::Recipe.new( 'test', find = false )
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
test "Substitutes settings" do
|
25
|
+
assert_nothing_raised() do
|
26
|
+
@recipe.load_from_string( <<-EOF, @configuration )
|
27
|
+
log-directory "<%= settings['BUILD_PREFIX'] %>/log"
|
28
|
+
EOF
|
29
|
+
end
|
30
|
+
|
31
|
+
assert_equal( "#{ENV['HOME']}/bld/log", @configuration.log_directory().to_s() )
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|