diff --git a/test/fixtures/repositories/subversion_repository.dump b/test/fixtures/repositories/subversion_repository.dump new file mode 100644 index 0000000000000000000000000000000000000000..322f0c102387af341c5e98f19bf6bd675ea9fbfd GIT binary patch literal 15812 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 DODc6R literal 0 Hc$@ @project, :url => "file:///#{REPOSITORY_PATH}") + end + + if File.directory?(REPOSITORY_PATH) + def test_fetch_changesets_from_scratch + @repository.fetch_changesets + @repository.reload + + assert_equal 8, @repository.changesets.count + assert_equal 16, @repository.changes.count + assert_equal 'Initial import.', @repository.changesets.find_by_revision(1).comments + end + + def test_fetch_changesets_incremental + @repository.fetch_changesets + # Remove changesets with revision > 5 + @repository.changesets.find(:all, :conditions => 'revision > 5').each(&:destroy) + @repository.reload + assert_equal 5, @repository.changesets.count + + @repository.fetch_changesets + assert_equal 8, @repository.changesets.count + end + else + puts "Subversion test repository NOT FOUND. Skipping tests !!!" + def test_fake; assert false end + end +end