build-tool 0.5.7 → 0.6.0.rc1
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/.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
|
+
|