require 'test_helper' require 'build-tool/repository' class Server def initialize( name ) @name = name @url = url end # The Servers name attr_reader :name attr_accessor :sshkey attr_accessor :path attr_accessor :user def url( user = nil ) if user "git://#{user}@gitorious.org/prefix" else "git://@gitorious.org/prefix" end end end class TestRepository < ActiveSupport::TestCase test 'A name is required.' do # :CHECKME: Change the thrown exception assert_raise( StandardError ) { BuildTool::Repository.new( nil ) } end test 'Constructor works.' do repo = nil assert_nothing_raised do repo = BuildTool::Repository.new( 'test_repo' ) end assert_equal( 'test_repo', repo.name ) end test 'The url is correctly build.' do repo = BuildTool::Repository.new( 'test_repo' ) server = Server.new( 'gitorious.org' ) repo.server = server # Add a user repo.user = 'mjansen' assert_equal( 'git://mjansen@gitorious.org/prefix', repo.url ) # Set a path repo.path = 'qt/qt' assert_equal( 'git://mjansen@gitorious.org/prefix/qt/qt', repo.url ) end test 'Repository inheritance.' do repo1 = BuildTool::Repository.new( 'repo1' ) repo1.server = Server.new( 'anongit.gitorious.org' ) repo2 = BuildTool::Repository.new( 'repo2' ) assert_nil( repo2.server ) # Assign it directly repo2.parent = repo1 assert_equal( repo2.server, repo1.server ) # Assign it with a lambda repo2.parent = lambda { repo1 } assert_equal( repo2.server, repo1.server ) # Check the name property assert_equal( 'repo2', repo2.name ) # Check the user property assert_nil( repo2.user ) repo1.user = 'mjansen' assert_equal( 'mjansen', repo2.user ) # Check the path property assert_nil( repo2.path ) repo1.path = '/kde/trunk' assert_equal( '/kde/trunk', repo2.path ) # Check the sshkey property (should be class but string works here too) assert_nil( repo2.sshkey ) repo1.sshkey = '/kde/trunk' assert_equal( '/kde/trunk', repo2.sshkey ) # Remove the parent and check everything is back to nil. repo2.parent = nil assert_nil( repo2.server ) assert_nil( repo2.user ) assert_nil( repo2.path ) assert_nil( repo2.sshkey ) # Set the parent again and check the values from repo2 have precedence repo2.parent = repo1 repo2.server = Server.new( 'git.kde.org' ) assert_equal( 'git.kde.org', repo2.server.name ) repo2.user = 'kdedevel' assert_equal( 'kdedevel', repo2.user ) repo2.path = '/tmp' assert_equal( '/tmp', repo2.path ) repo2.sshkey = 'invalid' assert_equal( 'invalid', repo2.sshkey ) end end