motiro 0.6.3
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/LICENSE +280 -0
- data/README +28 -0
- data/README.en +175 -0
- data/README.pt-br +175 -0
- data/Rakefile +10 -0
- data/app/controllers/account_controller.rb +62 -0
- data/app/controllers/application.rb +72 -0
- data/app/controllers/edition_controller.rb +13 -0
- data/app/controllers/javascript_controller.rb +21 -0
- data/app/controllers/report_controller.rb +79 -0
- data/app/controllers/root_controller.rb +7 -0
- data/app/controllers/wiki_controller.rb +102 -0
- data/app/core/cache_reporter.rb +53 -0
- data/app/core/cache_reporter_fetcher.rb +33 -0
- data/app/core/chief_editor.rb +69 -0
- data/app/core/reporter.rb +105 -0
- data/app/core/reporter_driver.rb +36 -0
- data/app/core/reporter_fetcher.rb +39 -0
- data/app/core/settings.rb +43 -0
- data/app/core/version.rb +1 -0
- data/app/core/wiki_page_not_found.rb +33 -0
- data/app/core/wiki_reporter.rb +83 -0
- data/app/helpers/account_helper.rb +2 -0
- data/app/helpers/application_helper.rb +68 -0
- data/app/helpers/default_page_provider.rb +28 -0
- data/app/helpers/report_helper.rb +2 -0
- data/app/helpers/root_helper.rb +2 -0
- data/app/helpers/wiki_helper.rb +3 -0
- data/app/models/change.rb +96 -0
- data/app/models/diff_table_builder.rb +285 -0
- data/app/models/event.rb +18 -0
- data/app/models/headline.rb +109 -0
- data/app/models/page.rb +114 -0
- data/app/models/page_sweeper.rb +26 -0
- data/app/models/user.rb +85 -0
- data/app/ports/chdir_runner.rb +36 -0
- data/app/ports/reporter_loader.rb +9 -0
- data/app/ports/runner.rb +64 -0
- data/app/reporters/darcs_connection.rb +54 -0
- data/app/reporters/darcs_reporter.rb +104 -0
- data/app/reporters/darcs_settings.rb +9 -0
- data/app/reporters/darcs_temp_repo.rb +40 -0
- data/app/reporters/events_reporter.rb +28 -0
- data/app/reporters/features_reporter.rb +24 -0
- data/app/reporters/subversion_reporter.rb +203 -0
- data/app/reporters/svn_connection.rb +62 -0
- data/app/reporters/svn_settings.rb +40 -0
- data/app/views/account/_authorization.rhtml +54 -0
- data/app/views/account/_availability.rhtml +5 -0
- data/app/views/account/availability.rhtml +1 -0
- data/app/views/account/login.rhtml +22 -0
- data/app/views/account/logout.rhtml +10 -0
- data/app/views/javascript/motiro.rjs +132 -0
- data/app/views/javascript/niftycube.rjs +300 -0
- data/app/views/layouts/_bottom.rhtml +5 -0
- data/app/views/layouts/_header.rhtml +7 -0
- data/app/views/layouts/_top.rhtml +25 -0
- data/app/views/layouts/application.rhtml +3 -0
- data/app/views/layouts/scaffold.rhtml +13 -0
- data/app/views/layouts/wiki_edit.rhtml +26 -0
- data/app/views/report/list.rhtml +32 -0
- data/app/views/report/older.rhtml +26 -0
- data/app/views/report/rss.rxml +29 -0
- data/app/views/report/show.rhtml +20 -0
- data/app/views/root/index.rhtml +33 -0
- data/app/views/wiki/_editbar.rhtml +26 -0
- data/app/views/wiki/_properties_edit.rhtml +5 -0
- data/app/views/wiki/_properties_show.rhtml +5 -0
- data/app/views/wiki/edit.rhtml +56 -0
- data/app/views/wiki/properties_edit.rhtml +1 -0
- data/app/views/wiki/show.rhtml +9 -0
- data/bin/motiro +44 -0
- data/config/boot.rb +19 -0
- data/config/database.yml +14 -0
- data/config/environment.rb +64 -0
- data/config/environments/development.rb +20 -0
- data/config/environments/production.rb +19 -0
- data/config/environments/test.rb +19 -0
- data/config/motiro.yml +43 -0
- data/config/routes.rb +79 -0
- data/db/migrate/005_globalize_migration.rb +11363 -0
- data/db/migrate/006_remove_headline_title.rb +14 -0
- data/db/migrate/007_stretch_rid.rb +11 -0
- data/db/migrate/008_add_page_editors.rb +12 -0
- data/db/migrate/009_add_page_original_author.rb +12 -0
- data/db/migrate/010_remove_empty_string_defaults_from_pages.rb +17 -0
- data/db/migrate/011_add_title_and_kind_to_pages.rb +13 -0
- data/db/migrate/012_page_modification_info.rb +13 -0
- data/db/migrate/013_nullify_initial_page_attributes.rb +21 -0
- data/db/migrate/014_events_are_wiki_pages.rb +13 -0
- data/db/migrate/015_migrate_previous_event_data.rb +23 -0
- data/db/migrate/1_initial_structure.rb +36 -0
- data/db/migrate/2_add_authentication.rb +12 -0
- data/db/migrate/3_drop_articles.rb +26 -0
- data/db/migrate/4_add_page_editing.rb +14 -0
- data/db/motirodb.sqlite.initial +0 -0
- data/db/schema_version +1 -0
- data/db/translation/pt-BR.rb +76 -0
- data/doc/README_FOR_APP +2 -0
- data/installer/rails_installer_defaults.yml +5 -0
- data/lib/import_translations.rb +154 -0
- data/lib/login_system.rb +89 -0
- data/lib/relative_time.rb +48 -0
- data/lib/string_extensions.rb +10 -0
- data/lib/stub_hash.rb +22 -0
- data/lib/tasks/packaging.rake +93 -0
- data/lib/tasks/testing.rake +32 -0
- data/lib/tick_daemon.rb +41 -0
- data/lib/translator.rb +67 -0
- data/lib/wiki_renderer.rb +42 -0
- data/lib/wiki_url_generator.rb +29 -0
- data/log/.keepdir +0 -0
- data/public/404.html +8 -0
- data/public/500.html +8 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +24 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/calendar.png +0 -0
- data/public/images/rss.png +0 -0
- data/public/javascripts/controls.js +750 -0
- data/public/javascripts/dragdrop.js +584 -0
- data/public/javascripts/effects.js +854 -0
- data/public/javascripts/prototype.js +1785 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/motiro.css +269 -0
- data/public/stylesheets/niftyCorners.css +35 -0
- data/public/stylesheets/scaffold.css +74 -0
- data/script/about +3 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/destroy +3 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/process/spinner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/script/ticker +29 -0
- data/test/acceptance/account_test.rb +186 -0
- data/test/acceptance/darcs_test.rb +62 -0
- data/test/acceptance/events_test.rb +47 -0
- data/test/acceptance/main_page_test.rb +92 -0
- data/test/acceptance/subversion_test.rb +319 -0
- data/test/acceptance/ts_all_suites.rb +27 -0
- data/test/acceptance/wiki_test.rb +202 -0
- data/test/contract/darcs_test.rb +51 -0
- data/test/contract/remote_darcs_test.rb +61 -0
- data/test/contract/svn_test.rb +53 -0
- data/test/fixtures/changes.yml +25 -0
- data/test/fixtures/headlines.yml +45 -0
- data/test/fixtures/pages.yml +98 -0
- data/test/fixtures/users.yml +31 -0
- data/test/functional/account_controller_test.rb +96 -0
- data/test/functional/report_controller_test.rb +113 -0
- data/test/functional/report_features_test.rb +38 -0
- data/test/functional/report_subversion_test.rb +79 -0
- data/test/functional/root_controller_test.rb +127 -0
- data/test/functional/wiki_controller_test.rb +280 -0
- data/test/lib/acceptance_test_case.rb +43 -0
- data/test/lib/configuration.rb +53 -0
- data/test/lib/darcs_excerpts.rb +181 -0
- data/test/lib/darcs_repo.rb +77 -0
- data/test/lib/live_mode_test.rb +51 -0
- data/test/lib/local_svn.rb +157 -0
- data/test/lib/netutils.rb +42 -0
- data/test/lib/platform_thread.rb +62 -0
- data/test/lib/repoutils.rb +23 -0
- data/test/lib/selenium_extensions.rb +32 -0
- data/test/lib/stubio.rb +37 -0
- data/test/lib/svn_excerpts.rb +288 -0
- data/test/lib/test_configuration.rb +14 -0
- data/test/lib/webserver.rb +71 -0
- data/test/meta/configuration_test.rb +72 -0
- data/test/meta/darcs_repo_test.rb +118 -0
- data/test/meta/local_svn_test.rb +125 -0
- data/test/meta/platform_thread_test.rb +46 -0
- data/test/meta/stubio_test.rb +44 -0
- data/test/mocks/headline.rb +34 -0
- data/test/mocks/svn_reporter.rb +29 -0
- data/test/stubs/svn_settings.rb +19 -0
- data/test/stubs/url_generator.rb +24 -0
- data/test/test_helper.rb +36 -0
- data/test/unit/cache_reporter_fetcher_test.rb +46 -0
- data/test/unit/cache_reporter_test.rb +97 -0
- data/test/unit/caching_test.rb +78 -0
- data/test/unit/change_test.rb +152 -0
- data/test/unit/chdir_runner_test.rb +77 -0
- data/test/unit/chief_editor_test.rb +234 -0
- data/test/unit/darcs_connection_test.rb +109 -0
- data/test/unit/darcs_reporter_test.rb +146 -0
- data/test/unit/darcs_settings_test.rb +37 -0
- data/test/unit/darcs_temp_repo_test.rb +51 -0
- data/test/unit/default_page_provider_test.rb +46 -0
- data/test/unit/diff_table_builder_test.rb +602 -0
- data/test/unit/headline_test.rb +259 -0
- data/test/unit/page_test.rb +145 -0
- data/test/unit/relative_time_test.rb +56 -0
- data/test/unit/reporter_driver_test.rb +85 -0
- data/test/unit/reporter_fetcher_test.rb +31 -0
- data/test/unit/reporter_test.rb +81 -0
- data/test/unit/runner_test.rb +93 -0
- data/test/unit/settings_test.rb +55 -0
- data/test/unit/string_extensions_test.rb +10 -0
- data/test/unit/svn_connection_test.rb +183 -0
- data/test/unit/svn_reporter_interaction_test.rb +38 -0
- data/test/unit/svn_reporter_test.rb +286 -0
- data/test/unit/svn_settings_test.rb +86 -0
- data/test/unit/translator_test.rb +96 -0
- data/test/unit/user_test.rb +125 -0
- data/test/unit/wiki_renderer_test.rb +87 -0
- data/test/unit/wiki_reporter_test.rb +94 -0
- data/test/unit/wiki_url_generator_test.rb +31 -0
- data/vendor/motiro-installer.rb +159 -0
- data/vendor/plugins/globalize/LICENSE +9 -0
- data/vendor/plugins/globalize/README +49 -0
- data/vendor/plugins/globalize/data/country_data.csv +240 -0
- data/vendor/plugins/globalize/data/language_data.csv +188 -0
- data/vendor/plugins/globalize/data/translation_data.csv +3421 -0
- data/vendor/plugins/globalize/generators/globalize/USAGE +10 -0
- data/vendor/plugins/globalize/generators/globalize/globalize_generator.rb +42 -0
- data/vendor/plugins/globalize/generators/globalize/templates/migration.rb.gz +0 -0
- data/vendor/plugins/globalize/generators/globalize/templates/tiny_migration.rb.gz +0 -0
- data/vendor/plugins/globalize/init.rb +30 -0
- data/vendor/plugins/globalize/lib/globalize/localization/core_ext.rb +170 -0
- data/vendor/plugins/globalize/lib/globalize/localization/core_ext_hooks.rb +33 -0
- data/vendor/plugins/globalize/lib/globalize/localization/db_translate.rb +494 -0
- data/vendor/plugins/globalize/lib/globalize/localization/db_view_translator.rb +152 -0
- data/vendor/plugins/globalize/lib/globalize/localization/locale.rb +173 -0
- data/vendor/plugins/globalize/lib/globalize/localization/rfc_3066.rb +40 -0
- data/vendor/plugins/globalize/lib/globalize/models/country.rb +24 -0
- data/vendor/plugins/globalize/lib/globalize/models/currency.rb +188 -0
- data/vendor/plugins/globalize/lib/globalize/models/language.rb +84 -0
- data/vendor/plugins/globalize/lib/globalize/models/model_translation.rb +4 -0
- data/vendor/plugins/globalize/lib/globalize/models/translation.rb +9 -0
- data/vendor/plugins/globalize/lib/globalize/models/view_translation.rb +14 -0
- data/vendor/plugins/globalize/lib/globalize/rails/action_mailer.rb +125 -0
- data/vendor/plugins/globalize/lib/globalize/rails/action_view.rb +79 -0
- data/vendor/plugins/globalize/lib/globalize/rails/active_record.rb +129 -0
- data/vendor/plugins/globalize/lib/globalize/rails/active_record_helper.rb +33 -0
- data/vendor/plugins/globalize/populators/pop_dates.rb +81 -0
- data/vendor/plugins/globalize/populators/pop_migration.rb +18 -0
- data/vendor/plugins/globalize/populators/pop_pluralization.rb +26 -0
- data/vendor/plugins/globalize/populators/pop_seps.rb +32 -0
- data/vendor/plugins/globalize/tasks/data.rake +130 -0
- data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.en-US.plain.text.rhtml +1 -0
- data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.en.plain.text.rhtml +1 -0
- data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.he.plain.text.rhtml +1 -0
- data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.plain.text.rhtml +1 -0
- data/vendor/plugins/globalize/test/action_mailer_test.rb +54 -0
- data/vendor/plugins/globalize/test/config/database.yml.default +16 -0
- data/vendor/plugins/globalize/test/config/database.yml.example +22 -0
- data/vendor/plugins/globalize/test/core_ext_test.rb +61 -0
- data/vendor/plugins/globalize/test/currency_test.rb +141 -0
- data/vendor/plugins/globalize/test/date_helper_test.rb +634 -0
- data/vendor/plugins/globalize/test/db/schema.rb +90 -0
- data/vendor/plugins/globalize/test/db_translation_test.rb +374 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_categories.yml +7 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_categories_products.yml +7 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_countries.yml +41 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_languages.yml +64 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_manufacturers.yml +5 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_products.yml +29 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_simples.yml +5 -0
- data/vendor/plugins/globalize/test/fixtures/globalize_translations.yml +354 -0
- data/vendor/plugins/globalize/test/locale_test.rb +27 -0
- data/vendor/plugins/globalize/test/mime_responds_test.rb +358 -0
- data/vendor/plugins/globalize/test/model_test.rb +17 -0
- data/vendor/plugins/globalize/test/standard_data_test_helper.rb +33 -0
- data/vendor/plugins/globalize/test/test_helper.rb +19 -0
- data/vendor/plugins/globalize/test/test_standard_data.rb +54 -0
- data/vendor/plugins/globalize/test/validation_test.rb +29 -0
- data/vendor/plugins/globalize/test/view_picking_test.rb +49 -0
- data/vendor/plugins/globalize/test/view_translation_test.rb +237 -0
- data/vendor/plugins/globalize/test/views/layouts/standard.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/all_types_with_layout.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/all_types_with_layout.rjs +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.en.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.en.rjs +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.en.rxml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.fr.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.fr.rjs +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.fr.rxml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.rjs +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults.rxml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.en.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.en.rjs +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.en.rxml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.fr.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.fr.rjs +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.fr.rxml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.rjs +1 -0
- data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.rxml +1 -0
- data/vendor/plugins/globalize/test/views/test.he-IL.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/test.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/test2.he.rhtml +1 -0
- data/vendor/plugins/globalize/test/views/test2.rhtml +1 -0
- data/vendor/plugins/test_xml/MIT-LICENSE +20 -0
- data/vendor/plugins/test_xml/README +20 -0
- data/vendor/plugins/test_xml/Rakefile +22 -0
- data/vendor/plugins/test_xml/init.rb +7 -0
- data/vendor/plugins/test_xml/lib/xml_assertions.rb +22 -0
- data/vendor/plugins/test_xml/test/test_xml_test.rb +40 -0
- metadata +505 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Motiro - A project tracking tool
|
|
2
|
+
# Copyright (C) 2006-2007 Thiago Arrais
|
|
3
|
+
#
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
# any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program; if not, write to the Free Software
|
|
16
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17
|
+
|
|
18
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
19
|
+
|
|
20
|
+
class ChangeTest < Test::Unit::TestCase
|
|
21
|
+
|
|
22
|
+
def test_render_diff_with_unset_diff
|
|
23
|
+
change = Change.new(:summary => 'A /directory', :diff => nil)
|
|
24
|
+
|
|
25
|
+
assert_equal '', change.render_diff
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_render_diff_with_empty_diff
|
|
29
|
+
change = Change.new(:summary => 'A /directory', :diff => '')
|
|
30
|
+
|
|
31
|
+
assert_equal '', change.render_diff
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_render_diff_with_non_empty_diff
|
|
35
|
+
diff_output = "@@ -0,0 +1 @@\n" +
|
|
36
|
+
"+These are the file_contents"
|
|
37
|
+
change = Change.new(:summary => 'A /a_file.txt', :diff => diff_output)
|
|
38
|
+
|
|
39
|
+
actual_rendered_output = change.render_diff
|
|
40
|
+
|
|
41
|
+
md = actual_rendered_output.match /\A<div id='((\w|\d|-)+)' class='diff-window'><center><h2>Changes to a_file.txt<\/h2>/
|
|
42
|
+
|
|
43
|
+
assert_not_nil md
|
|
44
|
+
|
|
45
|
+
remain = md.post_match
|
|
46
|
+
|
|
47
|
+
md = remain.match /<\/div>\Z/
|
|
48
|
+
|
|
49
|
+
assert_not_nil md
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_passes_lines_numbers_to_differ
|
|
53
|
+
FlexMock.use do |differ|
|
|
54
|
+
differ.should_receive(:start_line).once.with(22, 34)
|
|
55
|
+
differ.should_receive(:render_diff_table).once.
|
|
56
|
+
and_return('rendered table')
|
|
57
|
+
differ.should_ignore_missing
|
|
58
|
+
|
|
59
|
+
change = Change.new(:summary => 'A /a_file.txt',
|
|
60
|
+
:diff => "@@ -22,0 +34 @@\n" +
|
|
61
|
+
"+These are the file_contents")
|
|
62
|
+
|
|
63
|
+
change.use_differ(differ)
|
|
64
|
+
assert_equal 'rendered table', change.render_diff_table
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_render_summary_with_unset_diff
|
|
69
|
+
change = Change.new(:summary => 'A /directory', :diff => nil)
|
|
70
|
+
|
|
71
|
+
assert_equal 'A /directory', change.render_summary
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_render_summary_with_non_empty_diff
|
|
75
|
+
diff_output = "@@ -0,0 +1 @@\n" +
|
|
76
|
+
"+These are the file_contents"
|
|
77
|
+
change = Change.new(:summary => 'A /a_file.txt', :diff => diff_output)
|
|
78
|
+
|
|
79
|
+
actual_rendered_output = change.render_summary
|
|
80
|
+
|
|
81
|
+
md = actual_rendered_output.match /\A<a href='\#' onClick="showOnly\('((\w|\d|-)+)'\)">A \/a_file.txt<\/a>\Z/
|
|
82
|
+
|
|
83
|
+
assert_not_nil md
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_renders_summary_and_diff_using_the_same_ref
|
|
87
|
+
diff_output = "@@ -0,0 +1 @@\n" +
|
|
88
|
+
"+These are the file_contents"
|
|
89
|
+
change = Change.new(:summary => 'A /a_file.txt', :diff => diff_output)
|
|
90
|
+
|
|
91
|
+
md = change.render_summary.match /\A<a href='\#' onClick="showOnly\('((\w|\d|-)+)'\)/
|
|
92
|
+
summary_ref = md[1]
|
|
93
|
+
|
|
94
|
+
md = change.render_diff.match /\A<div id='((\w|\d|-)+)'/
|
|
95
|
+
diff_ref = md[1]
|
|
96
|
+
|
|
97
|
+
assert_equal summary_ref, diff_ref
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_simple_prefixed_qualified_resource_name
|
|
101
|
+
change = Change.new(:summary => 'A /a_file.txt')
|
|
102
|
+
assert_equal '/a_file.txt', change.qualified_resource_name
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_complex_prefixed_qualified_resource_name
|
|
106
|
+
change = Change.new(:summary => 'A /subdir/fileC.txt (from /fileA.txt:2)')
|
|
107
|
+
assert_equal '/subdir/fileC.txt', change.qualified_resource_name
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def test_simple_pure_qualified_resource_name
|
|
111
|
+
change = Change.new(:summary => '/directory/a_file.txt')
|
|
112
|
+
assert_equal '/directory/a_file.txt', change.qualified_resource_name
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_complex_resource_name
|
|
116
|
+
change = Change.new(:summary => 'A /subdir/fileC.txt (from /fileA.txt:2)')
|
|
117
|
+
assert_equal 'fileC.txt', change.resource_name
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def test_file_not_filled
|
|
121
|
+
change = Change.new(:summary => 'A /subdir/fileC.txt',
|
|
122
|
+
:resource_kind => 'file',
|
|
123
|
+
:diff => nil)
|
|
124
|
+
|
|
125
|
+
assert !change.filled?
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def test_file_filled
|
|
129
|
+
change = Change.new(:summary => 'A /subdir/fileC.txt',
|
|
130
|
+
:resource_kind => 'file',
|
|
131
|
+
:diff => '+file change')
|
|
132
|
+
|
|
133
|
+
assert change.filled?
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def test_directory_always_filled
|
|
137
|
+
change = Change.new(:summary => 'A /subdir',
|
|
138
|
+
:resource_kind => 'dir',
|
|
139
|
+
:diff => nil)
|
|
140
|
+
|
|
141
|
+
assert change.filled?
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_unknown_always_not_filled
|
|
145
|
+
change = Change.new(:summary => 'A /subdir/fileC.txt',
|
|
146
|
+
:resource_kind => nil,
|
|
147
|
+
:diff => '+file change')
|
|
148
|
+
|
|
149
|
+
assert ! change.filled?
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Motiro - A project tracking tool
|
|
2
|
+
# Copyright (C) 2006-2007 Thiago Arrais
|
|
3
|
+
#
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
# any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program; if not, write to the Free Software
|
|
16
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17
|
+
|
|
18
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
19
|
+
|
|
20
|
+
require 'ports/chdir_runner'
|
|
21
|
+
|
|
22
|
+
class ChdirRunnerTest < Test::Unit::TestCase
|
|
23
|
+
|
|
24
|
+
def setup
|
|
25
|
+
@prevdir = Dir.pwd
|
|
26
|
+
assert_not_equal(TEMP_DIR, @prevdir)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_changes_dir_before_command_and_rollsback_after
|
|
30
|
+
FlexMock.use do |runner|
|
|
31
|
+
runner.should_receive(:run).with('my_command', '', {}).once.
|
|
32
|
+
returns { assert_equal(e(TEMP_DIR), e(Dir.pwd)) }
|
|
33
|
+
|
|
34
|
+
prevdir = Dir.pwd
|
|
35
|
+
|
|
36
|
+
cdrunner = ChdirRunner.new(TEMP_DIR, runner)
|
|
37
|
+
cdrunner.run('my_command')
|
|
38
|
+
|
|
39
|
+
assert_equal(prevdir, Dir.pwd)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_rollsback_dir_even_on_error
|
|
44
|
+
FlexMock.use do |runner|
|
|
45
|
+
runner.should_receive(:run).with('my_command', '', {}).once.
|
|
46
|
+
returns { raise 'fatal error' }
|
|
47
|
+
|
|
48
|
+
prevdir = Dir.pwd
|
|
49
|
+
|
|
50
|
+
begin
|
|
51
|
+
cdrunner = ChdirRunner.new(TEMP_DIR, runner)
|
|
52
|
+
cdrunner.run('my_command')
|
|
53
|
+
rescue
|
|
54
|
+
#just ignore the expected error
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
assert_equal(prevdir, Dir.pwd)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def test_returns_inner_runner_result
|
|
62
|
+
FlexMock.use do |runner|
|
|
63
|
+
runner.should_receive(:run).with('my_command', '', {}).once.
|
|
64
|
+
returns('expectedd output')
|
|
65
|
+
|
|
66
|
+
cdrunner = ChdirRunner.new(TEMP_DIR, runner)
|
|
67
|
+
assert_equal 'expectedd output', cdrunner.run('my_command')
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def teardown
|
|
72
|
+
Dir.chdir @prevdir
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def e(path); File.expand_path(path); end
|
|
76
|
+
|
|
77
|
+
end
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Motiro - A project tracking tool
|
|
2
|
+
# Copyright (C) 2006-2007 Thiago Arrais
|
|
3
|
+
#
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
# any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program; if not, write to the Free Software
|
|
16
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17
|
+
|
|
18
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
19
|
+
|
|
20
|
+
require 'rubygems'
|
|
21
|
+
|
|
22
|
+
require 'flexmock'
|
|
23
|
+
|
|
24
|
+
require 'core/chief_editor'
|
|
25
|
+
|
|
26
|
+
require 'stub_hash'
|
|
27
|
+
require 'stubs/svn_settings'
|
|
28
|
+
require 'mocks/headline'
|
|
29
|
+
|
|
30
|
+
require 'mocks/svn_reporter'
|
|
31
|
+
|
|
32
|
+
class Class
|
|
33
|
+
include Test::Unit::Assertions
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
class Headline
|
|
37
|
+
@@old_latest = self.method(:latest)
|
|
38
|
+
|
|
39
|
+
def self.old_latest(num, reporter)
|
|
40
|
+
@@old_latest.call(num, reporter)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
class ChiefEditorTest < Test::Unit::TestCase
|
|
45
|
+
|
|
46
|
+
fixtures :headlines, :changes
|
|
47
|
+
|
|
48
|
+
@@log = ''
|
|
49
|
+
|
|
50
|
+
def self.append_to_log(txt)
|
|
51
|
+
@@log << txt
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_reads_package_size
|
|
55
|
+
def Headline.latest(num, reporter)
|
|
56
|
+
assert_equal 6, num
|
|
57
|
+
ChiefEditorTest.append_to_log('latest')
|
|
58
|
+
return Array.new.fill(MockHeadline.new, 6)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
FlexMock.use('1', '2') do |reporter, fetcher|
|
|
62
|
+
fetcher.should_receive(:active_reporters).and_return([reporter]).once
|
|
63
|
+
reporter.should_receive(:cache?).and_return(true)
|
|
64
|
+
reporter.should_receive(:name).and_return('mock_subversion')
|
|
65
|
+
settings = StubConnectionSettingsProvider.new(:package_size => 6)
|
|
66
|
+
|
|
67
|
+
ChiefEditor.new(settings, fetcher).latest_news_from 'mock_subversion'
|
|
68
|
+
|
|
69
|
+
assert_equal 'latest', @@log
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def Headline.latest(num, reporter)
|
|
73
|
+
old_latest(num, reporter)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_refetches_latest_news_on_every_call_when_in_development_mode
|
|
78
|
+
FlexMock.use do |reporter|
|
|
79
|
+
settings = StubConnectionSettingsProvider.new(:update_interval => 0)
|
|
80
|
+
fetcher = { :active_reporters => [reporter] }
|
|
81
|
+
svn_demo_headline = headlines('svn_demo_headline')
|
|
82
|
+
|
|
83
|
+
reporter.should_receive(:name).returns('subversion')
|
|
84
|
+
reporter.should_receive(:latest_headlines).once.
|
|
85
|
+
returns([].fill(MockHeadline.new, 0, 3))
|
|
86
|
+
|
|
87
|
+
ChiefEditor.new(settings, fetcher).latest_news_from('subversion')
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_refetches_news_on_every_call_when_in_development_mode
|
|
92
|
+
FlexMock.use do |reporter|
|
|
93
|
+
settings = StubConnectionSettingsProvider.new(:update_interval => 0)
|
|
94
|
+
fetcher = { :active_reporters => [reporter] }
|
|
95
|
+
svn_demo_headline = headlines('svn_demo_headline')
|
|
96
|
+
|
|
97
|
+
reporter.should_receive(:name).returns('subversion')
|
|
98
|
+
reporter.should_receive(:headlines).once.
|
|
99
|
+
returns([svn_demo_headline])
|
|
100
|
+
|
|
101
|
+
ChiefEditor.new(settings, fetcher).news_from('subversion')
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_does_not_ask_reporter_in_production_mode
|
|
106
|
+
FlexMock.use('1', '2') do |fetcher, reporter|
|
|
107
|
+
reporter.should_receive(:cache?).and_return(true)
|
|
108
|
+
reporter.should_receive(:name).and_return('mock_subversion')
|
|
109
|
+
reporter.should_receive(:latest_headlines).never
|
|
110
|
+
fetcher.should_receive(:active_reporters).and_return([reporter]).once
|
|
111
|
+
|
|
112
|
+
settings = StubConnectionSettingsProvider.new(:update_interval => 6)
|
|
113
|
+
|
|
114
|
+
ChiefEditor.new(settings, fetcher).latest_news_from 'mock_subversion'
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def test_asks_reporter_for_headline_in_development_mode
|
|
119
|
+
FlexMock.use do |reporter|
|
|
120
|
+
settings = StubConnectionSettingsProvider.new(:update_interval => 0)
|
|
121
|
+
fetcher = { :active_reporters => [reporter] }
|
|
122
|
+
svn_demo_headline = headlines('svn_demo_headline')
|
|
123
|
+
|
|
124
|
+
reporter.should_receive(:name).
|
|
125
|
+
returns('subversion')
|
|
126
|
+
|
|
127
|
+
reporter.should_receive(:headline).
|
|
128
|
+
with(svn_demo_headline.rid).
|
|
129
|
+
returns(svn_demo_headline).
|
|
130
|
+
once
|
|
131
|
+
|
|
132
|
+
chief_editor = ChiefEditor.new(settings, fetcher)
|
|
133
|
+
|
|
134
|
+
chief_editor.headline_with(svn_demo_headline.reported_by,
|
|
135
|
+
svn_demo_headline.rid)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def test_fetches_cached_headlines_in_production_mode
|
|
140
|
+
FlexMock.use('1', '2') do |reporter, fetcher|
|
|
141
|
+
fetcher.should_receive(:active_reporters).and_return([reporter])
|
|
142
|
+
reporter.should_receive(:cache?).returns(true)
|
|
143
|
+
reporter.should_receive(:name).returns('subversion')
|
|
144
|
+
reporter.should_receive(:headline).never
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
settings = StubConnectionSettingsProvider.new(:update_interval => 8)
|
|
148
|
+
|
|
149
|
+
chief_editor = ChiefEditor.new(settings, fetcher)
|
|
150
|
+
|
|
151
|
+
svn_demo_headline = headlines('svn_demo_headline')
|
|
152
|
+
|
|
153
|
+
headline = chief_editor.headline_with(svn_demo_headline.reported_by,
|
|
154
|
+
svn_demo_headline.rid)
|
|
155
|
+
|
|
156
|
+
reporter.mock_verify
|
|
157
|
+
|
|
158
|
+
assert_equal svn_demo_headline.description, headline.description
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def test_fetches_reporter_title
|
|
163
|
+
settings = StubConnectionSettingsProvider.new
|
|
164
|
+
title = 'Latest news from the mail list'
|
|
165
|
+
reporter = { :name => 'mail_list', :channel_title => title }
|
|
166
|
+
fetcher = { :active_reporters => [reporter]}
|
|
167
|
+
|
|
168
|
+
chief_editor = ChiefEditor.new(settings, fetcher)
|
|
169
|
+
|
|
170
|
+
assert_equal title, chief_editor.title_for('mail_list')
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def test_fetches_title_from_cached_reporter
|
|
174
|
+
settings = StubConnectionSettingsProvider.new
|
|
175
|
+
title = 'Latest news from the mail list'
|
|
176
|
+
reporter = { :name => 'mail_list',
|
|
177
|
+
:channel_title => title,
|
|
178
|
+
:cache? => true }
|
|
179
|
+
fetcher = { :active_reporters => [reporter]}
|
|
180
|
+
|
|
181
|
+
chief_editor = ChiefEditor.new(settings, fetcher)
|
|
182
|
+
|
|
183
|
+
assert_equal title, chief_editor.title_for('mail_list')
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def test_retrieves_headlines_from_correct_reporter_on_cached_mode
|
|
187
|
+
FlexMock.use('1', '2', '3') do |events_reporter, svn_reporter, fetcher|
|
|
188
|
+
settings = StubConnectionSettingsProvider.new(:update_interval => 8)
|
|
189
|
+
|
|
190
|
+
events_reporter.should_receive(:name).returns('events')
|
|
191
|
+
events_reporter.should_receive(:cache?).returns(true)
|
|
192
|
+
svn_reporter.should_receive(:name).returns('subversion')
|
|
193
|
+
svn_reporter.should_receive(:cache?).returns(true)
|
|
194
|
+
fetcher.should_receive(:active_reporters).
|
|
195
|
+
and_return([events_reporter, svn_reporter]).
|
|
196
|
+
once
|
|
197
|
+
|
|
198
|
+
chief_editor = ChiefEditor.new(settings, fetcher)
|
|
199
|
+
|
|
200
|
+
events_news = chief_editor.latest_news_from 'events'
|
|
201
|
+
|
|
202
|
+
assert_equal 1, events_news.size
|
|
203
|
+
|
|
204
|
+
subversion_news = chief_editor.latest_news_from 'subversion'
|
|
205
|
+
|
|
206
|
+
assert_equal 3, subversion_news.size
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def test_asks_fetcher_for_reporters_to_employ
|
|
211
|
+
FlexMock.use('1', '2') do |fetcher, reporter|
|
|
212
|
+
settings = StubConnectionSettingsProvider.new
|
|
213
|
+
|
|
214
|
+
fetcher.should_receive(:active_reporters).once.
|
|
215
|
+
returns([reporter, reporter])
|
|
216
|
+
|
|
217
|
+
reporter.should_receive(:name).returns('fake_reporter').twice
|
|
218
|
+
reporter.should_receive(:cache?).returns(true).twice
|
|
219
|
+
|
|
220
|
+
editor = ChiefEditor.new(settings, fetcher)
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def test_returns_reporter
|
|
225
|
+
settings = StubConnectionSettingsProvider.new
|
|
226
|
+
reporter = {:name => 'stub', :cache? => false}
|
|
227
|
+
fetcher = {:active_reporters => [reporter]}
|
|
228
|
+
|
|
229
|
+
editor = ChiefEditor.new(settings, fetcher)
|
|
230
|
+
assert_equal reporter, editor.reporter_with('stub')
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
#TODO should signal when the reporter is not registered
|
|
234
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Motiro - A project tracking tool
|
|
2
|
+
# Copyright (C) 2006-2007 Thiago Arrais
|
|
3
|
+
#
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
# any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program; if not, write to the Free Software
|
|
16
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17
|
+
|
|
18
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
19
|
+
|
|
20
|
+
require 'fileutils'
|
|
21
|
+
|
|
22
|
+
require 'reporters/darcs_connection'
|
|
23
|
+
|
|
24
|
+
class DarcsConnectionTest < Test::Unit::TestCase
|
|
25
|
+
|
|
26
|
+
TMP = TEMP_DIR + '/tmprepo'
|
|
27
|
+
|
|
28
|
+
def setup
|
|
29
|
+
FileUtils.mkdir_p(TMP)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_reads_settings
|
|
33
|
+
FlexMock.use('1', '2') do |runner, repo_dir|
|
|
34
|
+
settings = StubConnectionSettingsProvider.new(
|
|
35
|
+
:repo => 'http://motiro.sf.net/darcsrepo/trunk',
|
|
36
|
+
:package_size => 7)
|
|
37
|
+
repo_dir.should_receive(:path).once.
|
|
38
|
+
returns(TMP)
|
|
39
|
+
runner.should_receive(:run).once.
|
|
40
|
+
with('darcs changes --xml --last=7', '', {}).
|
|
41
|
+
returns('')
|
|
42
|
+
|
|
43
|
+
connection = DarcsConnection.new(settings, runner, repo_dir)
|
|
44
|
+
|
|
45
|
+
connection.changes
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_provides_full_change_log
|
|
50
|
+
FlexMock.use('1', '2') do |runner, repo_dir|
|
|
51
|
+
settings = StubConnectionSettingsProvider.new
|
|
52
|
+
repo_dir.should_receive(:path).once.returns(TMP)
|
|
53
|
+
runner.should_receive(:run).once.
|
|
54
|
+
with("darcs changes --xml", '', {}).returns('')
|
|
55
|
+
|
|
56
|
+
DarcsConnection.new(settings, runner, repo_dir).changes(:all)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_changes_with_hashcode_parameter_asks_for_only_one_patch
|
|
61
|
+
FlexMock.use('1', '2') do |runner, repo_dir|
|
|
62
|
+
hashcode = '20060717200939-49d33-c04fbb63892ae64cd96d1ad8f1ad2dd0a6e8e7da.gz'
|
|
63
|
+
settings = StubConnectionSettingsProvider.new(
|
|
64
|
+
:repo => 'http://motiro.sf.net/darcsrepo/trunk')
|
|
65
|
+
repo_dir.should_receive(:path).once.
|
|
66
|
+
returns(TMP)
|
|
67
|
+
runner.should_receive(:run).once.
|
|
68
|
+
with('darcs changes --xml' +
|
|
69
|
+
" --from-match=\"hash #{hashcode}\"" +
|
|
70
|
+
" --to-match=\"hash #{hashcode}\"", '', {}).
|
|
71
|
+
returns('')
|
|
72
|
+
|
|
73
|
+
connection = DarcsConnection.new(settings, runner, repo_dir)
|
|
74
|
+
|
|
75
|
+
connection.changes(hashcode)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_pulling
|
|
80
|
+
FlexMock.use('1', '2') do |runner, repo_dir|
|
|
81
|
+
settings = StubConnectionSettingsProvider.new(
|
|
82
|
+
:repo => 'http://motiro.sf.net/darcsrepo/trunk')
|
|
83
|
+
repo_dir.should_receive(:path).once.returns(TMP)
|
|
84
|
+
runner.should_receive(:run).once.
|
|
85
|
+
with('darcs pull -a http://motiro.sf.net/darcsrepo/trunk', '', {}).
|
|
86
|
+
returns('')
|
|
87
|
+
|
|
88
|
+
DarcsConnection.new(settings, runner, repo_dir).pull
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_diffing
|
|
93
|
+
FlexMock.use('1', '2') do |runner, repo_dir|
|
|
94
|
+
hashcode = '20060717200939-49d33-c04fbb63892ae64cd96d1ad8f1ad2dd0a6e8e7da.gz'
|
|
95
|
+
settings = StubConnectionSettingsProvider.new
|
|
96
|
+
repo_dir.should_receive(:path).once.returns(TMP)
|
|
97
|
+
runner.should_receive(:run).once.
|
|
98
|
+
with("darcs diff -u --match \"hash #{hashcode}\"", '', {}).
|
|
99
|
+
returns('')
|
|
100
|
+
|
|
101
|
+
DarcsConnection.new(settings, runner, repo_dir).diff(hashcode)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def teardown
|
|
106
|
+
FileUtils.rm_rf(TMP)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|