amp 0.5.2 → 0.5.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.
Files changed (232) hide show
  1. data/.gitignore +12 -0
  2. data/.hgignore +3 -0
  3. data/AUTHORS +1 -1
  4. data/Manifest.txt +99 -38
  5. data/README.md +3 -3
  6. data/Rakefile +53 -18
  7. data/SCHEDULE.markdown +5 -1
  8. data/TODO.markdown +120 -149
  9. data/ampfile.rb +3 -1
  10. data/bin/amp +4 -1
  11. data/ext/amp/bz2/extconf.rb +1 -1
  12. data/ext/amp/mercurial_patch/extconf.rb +1 -1
  13. data/ext/amp/mercurial_patch/mpatch.c +4 -3
  14. data/ext/amp/priority_queue/extconf.rb +1 -1
  15. data/ext/amp/support/extconf.rb +1 -1
  16. data/ext/amp/support/support.c +1 -1
  17. data/lib/amp.rb +125 -67
  18. data/lib/amp/commands/command.rb +12 -10
  19. data/lib/amp/commands/command_support.rb +8 -1
  20. data/lib/amp/commands/commands/help.rb +2 -20
  21. data/lib/amp/commands/commands/init.rb +14 -2
  22. data/lib/amp/commands/commands/templates.rb +6 -4
  23. data/lib/amp/commands/commands/version.rb +15 -1
  24. data/lib/amp/commands/commands/workflow.rb +3 -3
  25. data/lib/amp/commands/commands/workflows/git/add.rb +3 -3
  26. data/lib/amp/commands/commands/workflows/git/copy.rb +1 -1
  27. data/lib/amp/commands/commands/workflows/git/rm.rb +4 -2
  28. data/lib/amp/commands/commands/workflows/hg/add.rb +1 -1
  29. data/lib/amp/commands/commands/workflows/hg/addremove.rb +2 -2
  30. data/lib/amp/commands/commands/workflows/hg/annotate.rb +8 -2
  31. data/lib/amp/commands/commands/workflows/hg/bisect.rb +253 -0
  32. data/lib/amp/commands/commands/workflows/hg/branch.rb +1 -1
  33. data/lib/amp/commands/commands/workflows/hg/branches.rb +3 -3
  34. data/lib/amp/commands/commands/workflows/hg/bundle.rb +3 -3
  35. data/lib/amp/commands/commands/workflows/hg/clone.rb +4 -5
  36. data/lib/amp/commands/commands/workflows/hg/commit.rb +37 -1
  37. data/lib/amp/commands/commands/workflows/hg/copy.rb +2 -1
  38. data/lib/amp/commands/commands/workflows/hg/debug/index.rb +1 -1
  39. data/lib/amp/commands/commands/workflows/hg/diff.rb +3 -8
  40. data/lib/amp/commands/commands/workflows/hg/forget.rb +5 -4
  41. data/lib/amp/commands/commands/workflows/hg/identify.rb +6 -6
  42. data/lib/amp/commands/commands/workflows/hg/import.rb +1 -1
  43. data/lib/amp/commands/commands/workflows/hg/incoming.rb +2 -2
  44. data/lib/amp/commands/commands/workflows/hg/log.rb +5 -4
  45. data/lib/amp/commands/commands/workflows/hg/merge.rb +1 -1
  46. data/lib/amp/commands/commands/workflows/hg/move.rb +5 -3
  47. data/lib/amp/commands/commands/workflows/hg/outgoing.rb +1 -1
  48. data/lib/amp/commands/commands/workflows/hg/push.rb +6 -7
  49. data/lib/amp/commands/commands/workflows/hg/remove.rb +2 -2
  50. data/lib/amp/commands/commands/workflows/hg/resolve.rb +6 -23
  51. data/lib/amp/commands/commands/workflows/hg/root.rb +1 -2
  52. data/lib/amp/commands/commands/workflows/hg/status.rb +21 -12
  53. data/lib/amp/commands/commands/workflows/hg/tag.rb +2 -2
  54. data/lib/amp/commands/commands/workflows/hg/untrack.rb +12 -0
  55. data/lib/amp/commands/commands/workflows/hg/verify.rb +13 -3
  56. data/lib/amp/commands/commands/workflows/hg/what_changed.rb +18 -0
  57. data/lib/amp/commands/dispatch.rb +12 -13
  58. data/lib/amp/dependencies/amp_support.rb +1 -1
  59. data/lib/amp/dependencies/amp_support/ruby_amp_support.rb +1 -0
  60. data/lib/amp/dependencies/maruku.rb +136 -0
  61. data/lib/amp/dependencies/maruku/attributes.rb +227 -0
  62. data/lib/amp/dependencies/maruku/defaults.rb +71 -0
  63. data/lib/amp/dependencies/maruku/errors_management.rb +92 -0
  64. data/lib/amp/dependencies/maruku/helpers.rb +260 -0
  65. data/lib/amp/dependencies/maruku/input/charsource.rb +326 -0
  66. data/lib/amp/dependencies/maruku/input/extensions.rb +69 -0
  67. data/lib/amp/dependencies/maruku/input/html_helper.rb +189 -0
  68. data/lib/amp/dependencies/maruku/input/linesource.rb +111 -0
  69. data/lib/amp/dependencies/maruku/input/parse_block.rb +615 -0
  70. data/lib/amp/dependencies/maruku/input/parse_doc.rb +234 -0
  71. data/lib/amp/dependencies/maruku/input/parse_span_better.rb +746 -0
  72. data/lib/amp/dependencies/maruku/input/rubypants.rb +225 -0
  73. data/lib/amp/dependencies/maruku/input/type_detection.rb +147 -0
  74. data/lib/amp/dependencies/maruku/input_textile2/t2_parser.rb +163 -0
  75. data/lib/amp/dependencies/maruku/maruku.rb +33 -0
  76. data/lib/amp/dependencies/maruku/output/to_ansi.rb +223 -0
  77. data/lib/amp/dependencies/maruku/output/to_html.rb +991 -0
  78. data/lib/amp/dependencies/maruku/output/to_markdown.rb +164 -0
  79. data/lib/amp/dependencies/maruku/output/to_s.rb +56 -0
  80. data/lib/amp/dependencies/maruku/string_utils.rb +191 -0
  81. data/lib/amp/dependencies/maruku/structures.rb +167 -0
  82. data/lib/amp/dependencies/maruku/structures_inspect.rb +87 -0
  83. data/lib/amp/dependencies/maruku/structures_iterators.rb +61 -0
  84. data/lib/amp/dependencies/maruku/textile2.rb +1 -0
  85. data/lib/amp/dependencies/maruku/toc.rb +199 -0
  86. data/lib/amp/dependencies/maruku/usage/example1.rb +33 -0
  87. data/lib/amp/dependencies/maruku/version.rb +40 -0
  88. data/lib/amp/dependencies/priority_queue.rb +2 -1
  89. data/lib/amp/dependencies/python_config.rb +2 -1
  90. data/lib/amp/graphs/ancestor.rb +2 -1
  91. data/lib/amp/graphs/copies.rb +236 -233
  92. data/lib/amp/help/entries/__default__.erb +31 -0
  93. data/lib/amp/help/entries/commands.erb +6 -0
  94. data/lib/amp/help/entries/mdtest.md +35 -0
  95. data/lib/amp/help/entries/silly +3 -0
  96. data/lib/amp/help/help.rb +288 -0
  97. data/lib/amp/profiling_hacks.rb +5 -3
  98. data/lib/amp/repository/abstract/abstract_changeset.rb +97 -0
  99. data/lib/amp/repository/abstract/abstract_local_repo.rb +181 -0
  100. data/lib/amp/repository/abstract/abstract_staging_area.rb +180 -0
  101. data/lib/amp/repository/abstract/abstract_versioned_file.rb +100 -0
  102. data/lib/amp/repository/abstract/common_methods/changeset.rb +75 -0
  103. data/lib/amp/repository/abstract/common_methods/local_repo.rb +277 -0
  104. data/lib/amp/repository/abstract/common_methods/staging_area.rb +233 -0
  105. data/lib/amp/repository/abstract/common_methods/versioned_file.rb +71 -0
  106. data/lib/amp/repository/generic_repo_picker.rb +78 -0
  107. data/lib/amp/repository/git/repo_format/changeset.rb +336 -0
  108. data/lib/amp/repository/git/repo_format/staging_area.rb +192 -0
  109. data/lib/amp/repository/git/repo_format/versioned_file.rb +119 -0
  110. data/lib/amp/repository/git/repositories/local_repository.rb +164 -0
  111. data/lib/amp/repository/git/repository.rb +41 -0
  112. data/lib/amp/repository/mercurial/encoding/mercurial_diff.rb +382 -0
  113. data/lib/amp/repository/mercurial/encoding/mercurial_patch.rb +1 -0
  114. data/lib/amp/repository/mercurial/encoding/patch.rb +294 -0
  115. data/lib/amp/repository/mercurial/encoding/pure_ruby/ruby_mercurial_patch.rb +124 -0
  116. data/lib/amp/repository/mercurial/merging/merge_ui.rb +327 -0
  117. data/lib/amp/repository/mercurial/merging/simple_merge.rb +452 -0
  118. data/lib/amp/repository/mercurial/repo_format/branch_manager.rb +266 -0
  119. data/lib/amp/repository/mercurial/repo_format/changeset.rb +768 -0
  120. data/lib/amp/repository/mercurial/repo_format/dir_state.rb +716 -0
  121. data/lib/amp/repository/mercurial/repo_format/journal.rb +218 -0
  122. data/lib/amp/repository/mercurial/repo_format/lock.rb +210 -0
  123. data/lib/amp/repository/mercurial/repo_format/merge_state.rb +228 -0
  124. data/lib/amp/repository/mercurial/repo_format/staging_area.rb +367 -0
  125. data/lib/amp/repository/mercurial/repo_format/store.rb +487 -0
  126. data/lib/amp/repository/mercurial/repo_format/tag_manager.rb +322 -0
  127. data/lib/amp/repository/mercurial/repo_format/updatable.rb +543 -0
  128. data/lib/amp/repository/mercurial/repo_format/updater.rb +848 -0
  129. data/lib/amp/repository/mercurial/repo_format/verification.rb +433 -0
  130. data/lib/amp/repository/mercurial/repositories/bundle_repository.rb +216 -0
  131. data/lib/amp/repository/mercurial/repositories/http_repository.rb +386 -0
  132. data/lib/amp/repository/mercurial/repositories/local_repository.rb +2034 -0
  133. data/lib/amp/repository/mercurial/repository.rb +119 -0
  134. data/lib/amp/repository/mercurial/revlogs/bundle_revlogs.rb +249 -0
  135. data/lib/amp/repository/mercurial/revlogs/changegroup.rb +217 -0
  136. data/lib/amp/repository/mercurial/revlogs/changelog.rb +339 -0
  137. data/lib/amp/repository/mercurial/revlogs/file_log.rb +152 -0
  138. data/lib/amp/repository/mercurial/revlogs/index.rb +500 -0
  139. data/lib/amp/repository/mercurial/revlogs/manifest.rb +201 -0
  140. data/lib/amp/repository/mercurial/revlogs/node.rb +20 -0
  141. data/lib/amp/repository/mercurial/revlogs/revlog.rb +1026 -0
  142. data/lib/amp/repository/mercurial/revlogs/revlog_support.rb +129 -0
  143. data/lib/amp/repository/mercurial/revlogs/versioned_file.rb +597 -0
  144. data/lib/amp/repository/repository.rb +11 -88
  145. data/lib/amp/server/extension/amp_extension.rb +3 -3
  146. data/lib/amp/server/fancy_http_server.rb +1 -1
  147. data/lib/amp/server/fancy_views/_browser.haml +1 -1
  148. data/lib/amp/server/fancy_views/_diff_file.haml +1 -8
  149. data/lib/amp/server/fancy_views/changeset.haml +2 -2
  150. data/lib/amp/server/fancy_views/file.haml +1 -1
  151. data/lib/amp/server/fancy_views/file_diff.haml +1 -1
  152. data/lib/amp/support/amp_ui.rb +13 -29
  153. data/lib/amp/support/generator.rb +1 -1
  154. data/lib/amp/support/loaders.rb +1 -2
  155. data/lib/amp/support/logger.rb +10 -16
  156. data/lib/amp/support/match.rb +18 -4
  157. data/lib/amp/support/mercurial/ignore.rb +151 -0
  158. data/lib/amp/support/openers.rb +8 -3
  159. data/lib/amp/support/support.rb +91 -46
  160. data/lib/amp/templates/{blank.commit.erb → mercurial/blank.commit.erb} +0 -0
  161. data/lib/amp/templates/{blank.log.erb → mercurial/blank.log.erb} +0 -0
  162. data/lib/amp/templates/{default.commit.erb → mercurial/default.commit.erb} +0 -0
  163. data/lib/amp/templates/{default.log.erb → mercurial/default.log.erb} +0 -0
  164. data/lib/amp/templates/template.rb +18 -18
  165. data/man/amp.1 +51 -0
  166. data/site/src/about/commands.haml +1 -1
  167. data/site/src/css/amp.css +1 -1
  168. data/site/src/index.haml +3 -3
  169. data/tasks/man.rake +39 -0
  170. data/tasks/stats.rake +1 -10
  171. data/tasks/yard.rake +1 -50
  172. data/test/dirstate_tests/test_dir_state.rb +10 -8
  173. data/test/functional_tests/annotate.out +31 -0
  174. data/test/functional_tests/test_functional.rb +155 -63
  175. data/test/localrepo_tests/ampfile.rb +12 -0
  176. data/test/localrepo_tests/test_local_repo.rb +56 -57
  177. data/test/manifest_tests/test_manifest.rb +3 -5
  178. data/test/merge_tests/test_merge.rb +3 -3
  179. data/test/revlog_tests/test_revlog.rb +14 -6
  180. data/test/store_tests/test_fncache_store.rb +19 -19
  181. data/test/test_19_compatibility.rb +46 -0
  182. data/test/test_base85.rb +2 -2
  183. data/test/test_bdiff.rb +2 -2
  184. data/test/test_changegroup.rb +59 -0
  185. data/test/test_commands.rb +2 -2
  186. data/test/test_difflib.rb +2 -2
  187. data/test/test_generator.rb +34 -0
  188. data/test/test_ignore.rb +203 -0
  189. data/test/test_journal.rb +18 -13
  190. data/test/test_match.rb +2 -2
  191. data/test/test_mdiff.rb +3 -3
  192. data/test/test_mpatch.rb +3 -3
  193. data/test/test_multi_io.rb +40 -0
  194. data/test/test_support.rb +18 -2
  195. data/test/test_templates.rb +38 -0
  196. data/test/test_ui.rb +79 -0
  197. data/test/testutilities.rb +56 -0
  198. metadata +168 -49
  199. data/ext/amp/bz2/mkmf.log +0 -38
  200. data/lib/amp/encoding/mercurial_diff.rb +0 -378
  201. data/lib/amp/encoding/mercurial_patch.rb +0 -1
  202. data/lib/amp/encoding/patch.rb +0 -292
  203. data/lib/amp/encoding/pure_ruby/ruby_mercurial_patch.rb +0 -123
  204. data/lib/amp/merges/merge_state.rb +0 -164
  205. data/lib/amp/merges/merge_ui.rb +0 -322
  206. data/lib/amp/merges/simple_merge.rb +0 -450
  207. data/lib/amp/repository/branch_manager.rb +0 -234
  208. data/lib/amp/repository/dir_state.rb +0 -950
  209. data/lib/amp/repository/journal.rb +0 -203
  210. data/lib/amp/repository/lock.rb +0 -207
  211. data/lib/amp/repository/repositories/bundle_repository.rb +0 -214
  212. data/lib/amp/repository/repositories/http_repository.rb +0 -377
  213. data/lib/amp/repository/repositories/local_repository.rb +0 -2661
  214. data/lib/amp/repository/store.rb +0 -485
  215. data/lib/amp/repository/tag_manager.rb +0 -319
  216. data/lib/amp/repository/updatable.rb +0 -532
  217. data/lib/amp/repository/verification.rb +0 -431
  218. data/lib/amp/repository/versioned_file.rb +0 -475
  219. data/lib/amp/revlogs/bundle_revlogs.rb +0 -246
  220. data/lib/amp/revlogs/changegroup.rb +0 -217
  221. data/lib/amp/revlogs/changelog.rb +0 -338
  222. data/lib/amp/revlogs/changeset.rb +0 -521
  223. data/lib/amp/revlogs/file_log.rb +0 -165
  224. data/lib/amp/revlogs/index.rb +0 -493
  225. data/lib/amp/revlogs/manifest.rb +0 -195
  226. data/lib/amp/revlogs/node.rb +0 -18
  227. data/lib/amp/revlogs/revlog.rb +0 -1045
  228. data/lib/amp/revlogs/revlog_support.rb +0 -126
  229. data/lib/amp/support/ignore.rb +0 -144
  230. data/site/Rakefile +0 -38
  231. data/test/test_amp.rb +0 -9
  232. data/test/test_helper.rb +0 -15
@@ -1,8 +1,8 @@
1
- require "test/unit"
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
2
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
3
3
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp/commands/command.rb"))
4
4
 
5
- class TestCommmands < Test::Unit::TestCase
5
+ class TestCommmands < AmpTestCase
6
6
  include Amp
7
7
  include Amp::KernelMethods
8
8
  extend Amp::KernelMethods
@@ -1,8 +1,8 @@
1
- require "test/unit"
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
2
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
3
3
 
4
4
 
5
- class TestDifflib < Test::Unit::TestCase
5
+ class TestDifflib < AmpTestCase
6
6
  include Amp::Diffs
7
7
  def test_one_match
8
8
  matcher = SequenceMatcher.new("hi there my name is mike i hope you like me",
@@ -0,0 +1,34 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
+ require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp/support/generator"))
3
+
4
+ class FibonacciGeneratorTester < Generator
5
+ def generator_loop
6
+ a, b = 0, 1
7
+ while true
8
+ yield_gen b
9
+ a, b = b, a + b
10
+ end
11
+ end
12
+ end
13
+
14
+ class TestGenerator < AmpTestCase
15
+ def setup
16
+ @generator = FibonacciGeneratorTester.new
17
+ end
18
+
19
+ def test_next
20
+ assert_equal 1, @generator.next
21
+ assert_equal 1, @generator.next
22
+ assert_equal 2, @generator.next
23
+ assert_equal 3, @generator.next
24
+ assert_equal 5, @generator.next
25
+ end
26
+
27
+ def test_reset
28
+ 10.times { @generator.next }
29
+ #reset it, first num should be 1
30
+ @generator.reset
31
+ assert_equal 1, @generator.next
32
+ end
33
+
34
+ end
@@ -0,0 +1,203 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
+ require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
3
+
4
+ class TestIgnore < AmpTestCase
5
+ include Amp::Mercurial::Ignore
6
+
7
+ def setup
8
+ super
9
+ @ignore_path = self.write_file "ignore" do |io|
10
+ io << "syntax: glob\n" << "test/**/test_*.rb\n" << "doc/*\n"
11
+ io << "syntax: regexp\n\.DS_Store\n"
12
+ end
13
+ end
14
+
15
+ #### parse_line #############
16
+
17
+ def test_parse_line_no_sym
18
+ assert_nil parse_line(nil, "doc/*")
19
+ end
20
+
21
+ def test_parse_line_regexp
22
+ expected = /doc\/(\d\d\d)/
23
+ assert_regexp_equal expected, parse_line(:regexp, "doc/(\\d\\d\\d)")
24
+ end
25
+
26
+ def test_parse_line_glob_one_star
27
+ input = "test/*/test_*.rb"
28
+ expected = /^test\/[^\/]*\/test_[^\/]*\.rb/
29
+ result = parse_line(:glob, input)
30
+ assert_regexp_equal expected, result
31
+ end
32
+
33
+ def test_glob_one_star_matches
34
+ input = "test/*/test_*.rb"
35
+ result = parse_line(:glob, input)
36
+ assert_match(result, "test/silly/test_crazy.rb")
37
+ end
38
+
39
+ def test_glob_one_star_is_not_relative
40
+ input = "test/*/test_*.rb"
41
+ result = parse_line(:glob, input)
42
+ refute_match(result, "some/test/silly/test_crazy.rb")
43
+ end
44
+
45
+ def test_parse_line_relglob_one_star
46
+ input = "test/*/test_*.rb"
47
+ expected = /test\/[^\/]*\/test_[^\/]*\.rb/
48
+ result = parse_line(:relglob, input)
49
+ assert_regexp_equal expected, result
50
+ end
51
+
52
+ def test_relglob_one_star_matches
53
+ input = "test/*/test_*.rb"
54
+ result = parse_line(:relglob, input)
55
+ assert_match(result, "test/silly/test_crazy.rb")
56
+ end
57
+
58
+ def test_relglob_one_star_also_relative
59
+ input = "test/*/test_*.rb"
60
+ result = parse_line(:relglob, input)
61
+ assert_match(result, "some/test/silly/test_crazy.rb")
62
+ end
63
+
64
+ def test_parse_line_glob_two_star
65
+ input = "test/**/test_*.rb"
66
+ expected = /^test\/(?:.*\/)*test_[^\/]*\.rb/
67
+ result = parse_line(:glob, input)
68
+ assert_regexp_equal expected, result
69
+ end
70
+
71
+ def test_glob_two_star_matches_subdirs
72
+ input = "test/**/test_*.rb"
73
+ result = parse_line(:glob, input)
74
+ assert_match(result, "test/first/second/third/fourth/test_filez.rb")
75
+ end
76
+
77
+ def test_glob_two_star_matches_no_subdirs
78
+ input = "test/**/test_*.rb"
79
+ result = parse_line(:glob, input)
80
+ assert_match(result, "test/test_filez.rb")
81
+ end
82
+
83
+ #### matcher_for_string #############
84
+
85
+ # defaults to regexp
86
+ def test_matcher_for_string_nilcase
87
+ expected = /doc\/(\d\d\d)/
88
+ result = matcher_for_string("doc/(\\d\\d\\d)")
89
+ assert_regexp_equal expected, result
90
+ end
91
+
92
+ def test_matcher_for_string_glob
93
+ input = "glob: test/**/test_*.rb"
94
+ expected = /^test\/(?:.*\/)*test_[^\/]*\.rb/
95
+ result = matcher_for_string(input)
96
+ assert_regexp_equal expected, result
97
+ end
98
+
99
+ def test_matcher_for_string_relglob
100
+ input = "relglob: test/**/test_*.rb"
101
+ expected = /test\/(?:.*\/)*test_[^\/]*\.rb/
102
+ result = matcher_for_string(input)
103
+ assert_regexp_equal expected, result
104
+ end
105
+
106
+ def test_matcher_for_string_regexp
107
+ expected = /doc\/(\d\d\d)/
108
+ result = matcher_for_string("regexp: doc/(\\d\\d\\d)")
109
+ assert_regexp_equal expected, result
110
+ end
111
+
112
+ #### regexps_to_proc #############
113
+
114
+ def test_regexps_to_proc_matches
115
+ prok = regexps_to_proc(/abc/, /bcd/, /a*bc/)
116
+ assert prok.call("abc")
117
+ assert prok.call("aaaaabc")
118
+ assert prok.call("bcd")
119
+ end
120
+
121
+ def test_regexps_to_proc_doesnt_match
122
+ prok = regexps_to_proc(/abc/, /bcd/, /a*bc/)
123
+ assert_false prok.call("cde")
124
+ end
125
+
126
+ #### strip_comment #############
127
+
128
+ def test_strip_comment_simple
129
+ assert_equal "", strip_comment("# hello there")
130
+ end
131
+
132
+ def test_strip_comment_other_stuff
133
+ assert_equal "hello ", strip_comment("hello # there")
134
+ end
135
+
136
+ def test_strip_comment_no_comment
137
+ assert_equal "hello there", strip_comment("hello there")
138
+ end
139
+
140
+ def test_strip_comment_escaped_hashes
141
+ assert_equal "hello # there", strip_comment("hello \\# there")
142
+ end
143
+
144
+ def test_strip_comment_complex
145
+ assert_equal "hello # there ##", strip_comment("hello \\# there \\#\\## some comment")
146
+ end
147
+
148
+ #### parse_lines #############
149
+
150
+ def test_parse_lines_simple
151
+ input = "hello\nthere\nhow\nare\nyou"
152
+ assert_equal %w[hello there how are you], parse_lines(input)
153
+ end
154
+
155
+ def test_parse_lines_strip_whitespace
156
+ input = "hello \t\nthere\t \nhow\t\t \t\nare \t\t \nyou \t\t \t"
157
+ assert_equal %w[hello there how are you], parse_lines(input)
158
+ end
159
+
160
+ def test_parse_lines_remove_empty
161
+ input = "hello\n\nthere\n\ni\n \nam\n\n\n\n\nmike"
162
+ assert_equal %w[hello there i am mike], parse_lines(input)
163
+ end
164
+
165
+ def test_parse_lines_strip_comments
166
+ input = <<-EOF
167
+ hi there # introduction
168
+ my name
169
+
170
+ is mike
171
+ EOF
172
+ expected = ["hi there", "my name", "is mike"]
173
+ assert_equal expected, parse_lines(input)
174
+ end
175
+
176
+ #### matcher_for_text #############
177
+
178
+ def test_matcher_for_text_simple
179
+ input = "syntax: regexp\n\\.DS_Store # God damn OS X files\ndoc/\\d\\d\\d.txt\n\n"
180
+ expected = [/\.DS_Store/, /doc\/\d\d\d.txt/]
181
+ result = matcher_for_text input
182
+ expected.zip(result).each {|a,b| assert_regexp_equal a,b}
183
+ end
184
+
185
+ def test_matcher_for_text_mixed
186
+ input = "syntax: regexp\n\\.DS_Store # God damn OS X files\nsyntax: glob \ntest/**/test_*.rb\n\n"
187
+ expected = [/\.DS_Store/, /^test\/(?:.*\/)*test_[^\/]*\.rb/]
188
+ result = matcher_for_text input
189
+ expected.zip(result).each {|a,b| assert_regexp_equal a,b}
190
+ end
191
+
192
+ #### parse_ignore #############
193
+
194
+ def test_parse_ignore
195
+ proc = parse_ignore File.dirname(@ignore_path), "ignore"
196
+ assert proc.call("test/some/test/dir/test_crazy.rb")
197
+ assert proc.call("test/test_crazy.rb")
198
+ assert proc.call("doc/file.html")
199
+ assert_false proc.call("dir/doc/dir/file.html")
200
+ assert proc.call(".DS_Store")
201
+ assert proc.call("some/dir/.DS_Store")
202
+ end
203
+ end
@@ -1,16 +1,15 @@
1
- require "test/unit"
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
2
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
3
3
 
4
- class TestJournal < Test::Unit::TestCase
4
+ class TestJournal < AmpTestCase
5
5
  def test_journal
6
6
  tfile = "tempjournal"
7
- j = Amp::Journal.new(Amp::StandardErrorReporter, tfile, nil)
8
- j << ["file",12345]
7
+ j = Amp::Mercurial::Journal.new(:reporter => Amp::StandardErrorReporter, :journal => tfile, :opener => simple_opener)
8
+ j << {:file => "file", :offset => 12345}
9
9
 
10
-
11
- test_open = open(tfile)
12
- assert_equal("file\0#{12345}\n", test_open.read)
13
- test_open.close
10
+ open(tfile) do |input|
11
+ assert_equal("file\0#{12345}\n", input.read)
12
+ end
14
13
  j.close
15
14
 
16
15
  assert !File.exists?(tfile)
@@ -18,12 +17,18 @@ class TestJournal < Test::Unit::TestCase
18
17
 
19
18
  def test_journal_start_mode
20
19
  tfile = "tempjournal"
21
- Amp::Journal.start tfile do |j|
22
- j << ["file",12345]
23
- test_open = open(tfile)
24
- assert_equal("file\0#{12345}\n", test_open.read)
25
- test_open.close
20
+ Amp::Mercurial::Journal.start(tfile, :opener => simple_opener) do |j|
21
+ j << {:file => "file", :offset => 12345}
22
+ open(tfile) do |input|
23
+ assert_equal("file\0#{12345}\n", input.read)
24
+ end
26
25
  end
27
26
  assert !File.exists?(tfile)
28
27
  end
28
+
29
+ def simple_opener
30
+ opener = Amp::Opener.new(Dir.pwd)
31
+ opener.default = :open_file
32
+ opener
33
+ end
29
34
  end
@@ -1,7 +1,7 @@
1
- require "test/unit"
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
2
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
3
3
 
4
- class TestMatch < Test::Unit::TestCase
4
+ class TestMatch < AmpTestCase
5
5
 
6
6
  def setup
7
7
  @all_files = ["silly.rb", "code/lib.rb", "code/support.yml", "bin/amp.rb", "test/test_bdiff.rb"]
@@ -1,8 +1,8 @@
1
- require "test/unit"
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
2
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
3
3
 
4
- class TestMdiff < Test::Unit::TestCase
5
- include Amp::Diffs
4
+ class TestMdiff < AmpTestCase
5
+ include Amp::Diffs::Mercurial
6
6
 
7
7
  def test_default_whitespace_clean
8
8
  opts = MercurialDiff::DEFAULT_OPTIONS.dup
@@ -1,10 +1,10 @@
1
1
  # -*- coding: us-ascii -*-
2
2
  require 'stringio'
3
- require "test/unit"
3
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
4
4
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
5
5
 
6
- class TestMpatch < Test::Unit::TestCase
7
- include Amp::Diffs
6
+ class TestMpatch < AmpTestCase
7
+ include Amp::Diffs::Mercurial
8
8
  def test_apply_patch
9
9
  patch = "\000\000\000\t\000\000\000\021\000\000\000\ni'm stupid"
10
10
  input = "hi there\ni'm cool"
@@ -0,0 +1,40 @@
1
+ require 'stringio'
2
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
3
+ require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp/support/multi_io"))
4
+
5
+ class TestMultiIO < AmpTestCase
6
+ def setup
7
+ input1 = StringIO.new("input1")
8
+ input2 = StringIO.new("input2input2")
9
+ input3 = StringIO.new("input3")
10
+ @multi_io = Amp::Support::MultiIO.new(input1, input2, input3)
11
+ end
12
+
13
+ def test_read_all
14
+ assert_equal "input1input2input2input3", @multi_io.read
15
+ end
16
+
17
+ def test_read_3_bytes
18
+ assert_equal "inp", @multi_io.read(3)
19
+ end
20
+
21
+ def test_rewind
22
+ @multi_io.read(3)
23
+ @multi_io.rewind
24
+ assert_equal 0, @multi_io.tell
25
+ end
26
+
27
+ def test_pos
28
+ @multi_io.read(7)
29
+ assert_equal 7, @multi_io.tell
30
+ end
31
+
32
+ def test_read_crossing_ios
33
+ assert_equal "input1inp", @multi_io.read(9)
34
+ assert_equal "ut2input2in", @multi_io.read(11)
35
+ assert_equal "put3", @multi_io.read
36
+ end
37
+
38
+
39
+
40
+ end
@@ -1,7 +1,14 @@
1
- require "test/unit"
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
2
  require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp"))
3
3
 
4
- class TestSupport < Test::Unit::TestCase
4
+ class OppositeMethodTestKlass
5
+ def base(input)
6
+ !!input
7
+ end
8
+ opposite_method :opposite, :base
9
+ end
10
+
11
+ class TestSupport < AmpTestCase
5
12
  def test_split_newlines
6
13
  assert_equal(["hi there what's\n", "\r up there\r kids\n", " lol"], "hi there what's\n\r up there\r kids\n lol".split_newlines)
7
14
  end
@@ -18,6 +25,15 @@ class TestSupport < Test::Unit::TestCase
18
25
  end
19
26
  end
20
27
 
28
+ def test_opposite_method
29
+ obj = OppositeMethodTestKlass.new
30
+ assert_respond_to obj, :opposite
31
+ assert obj.base(true)
32
+ assert_false obj.opposite(true)
33
+ assert_false obj.base(false)
34
+ assert obj.opposite(false)
35
+ end
36
+
21
37
  end
22
38
 
23
39
 
@@ -0,0 +1,38 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'testutilities')
2
+ require File.expand_path(File.join(File.dirname(__FILE__), "../lib/amp/templates/template"))
3
+
4
+ class TestTemplates < AmpTestCase
5
+ include Amp::Support
6
+
7
+ def setup
8
+ @template = Template.new(:log, :test, :erb, "<%= name %> <%= age %>")
9
+ end
10
+
11
+ def test_new_template
12
+ assert @template
13
+ end
14
+
15
+ def test_unregister
16
+ Template.unregister(:log, :test)
17
+ assert_nil(Template[:log, :test])
18
+ end
19
+
20
+ def test_render
21
+ name = "Steve"
22
+ age = 21
23
+ assert_equal "Steve 21", @template.render({}, binding)
24
+ end
25
+
26
+ def test_locals
27
+ locals = {:name => "Steve", :age => 21}
28
+ assert_equal("Steve 21", @template.render(locals))
29
+ end
30
+
31
+ def test_loading_defaults
32
+ Template.ensure_templates_loaded
33
+ assert Template.templates_loaded?
34
+ assert_not_nil(Template[:mercurial, "default-commit"])
35
+ assert_not_nil(Template[:mercurial, "default-log"])
36
+ end
37
+
38
+ end