require 'test_helper.rb' require 'build-tool/cfg/parser' require 'build-tool/configuration' class TestConfiguration < ActiveSupport::TestCase def setup() @configuration = BuildTool::Configuration.new() @configuration.truncate() @parser = BuildTool::Cfg::Parser.new( @configuration ) assert_nothing_raised() { @parser.parse_string <<-EOF } log-directory "$HOME/test/log" module "toplevel1_enabled" end module "toplevel2_disabled" end disable module "toplevel2_disabled" feature "feature1" module "feature1/module1" end module "feature1/module2" end module "feature1/module3" end disable module "feature1/module2" end feature "feature2" module "feature2/module1" end module "feature2/module2" end disable module "feature2/module2" end disable feature "feature2" EOF end test '":all" works.' do assert_equal( [ 'toplevel1_enabled', 'feature1/module1', 'feature1/module3' ], @configuration.complete_modules( ":all" ).map { |m| m.name } ) end test 'selecting a active toplevel module works.' do assert_equal( [ 'toplevel1_enabled' ], @configuration.complete_modules( 'toplevel1_enabled' ).map { |m| m.name } ) end test 'selecting a inactive toplevel module works.' do assert_equal( [ 'toplevel2_disabled' ], @configuration.complete_modules( 'toplevel2_disabled' ).map { |m| m.name } ) end test 'selecting a active module works from a active feature works.' do assert_equal( [ 'feature1/module1' ], @configuration.complete_modules( 'feature1/module1' ).map { |m| m.name } ) end test 'selecting a inactive module from a active feature works.' do assert_equal( [ 'feature1/module2' ], @configuration.complete_modules( 'feature1/module2' ).map { |m| m.name } ) end test 'selecting a active module from a inactive feature works not.' do assert_raises( BuildTool::ConfigurationError ) do @configuration.complete_modules( 'feature2/module1' ) end end test 'selecting a inactive module from a inactive feature works not.' do assert_raises( BuildTool::ConfigurationError ) do @configuration.complete_modules( 'feature2/module2' ) end end test 'selecting a nonexistant module works not.' do assert_raises( BuildTool::ConfigurationError ) do @configuration.complete_modules( 'nothere' ) end end test 'selecting a group works.' do assert_equal( [ 'feature1/module1', 'feature1/module3' ], @configuration.complete_modules( 'feature1/' ).map { |m| m.name } ) end test 'selecting a group works with all = true.' do assert_equal( [ 'feature1/module1', 'feature1/module2', 'feature1/module3' ], @configuration.complete_modules( 'feature1/', false, true ).map { |m| m.name } ) end test 'selecting a group works with all = true and resume_after.' do assert_equal( [ 'feature1/module2', 'feature1/module3' ], @configuration.complete_modules( 'feature1/', false, true, nil, @configuration.complete_module( 'feature1/module1' ) ).map { |m| m.name } ) end test 'selecting a group works with all = true and resume_before.' do assert_equal( [ 'feature1/module2', 'feature1/module3' ], @configuration.complete_modules( 'feature1/', false, true, @configuration.complete_module( 'feature1/module2' ) ).map { |m| m.name } ) end test 'selecting a group works with all = true on disabled feature' do assert_equal( [ 'feature2/module1', 'feature2/module2' ], @configuration.complete_modules( 'feature2/', false, true ).map { |m| m.name } ) end end