rake 11.1.2 → 11.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rake might be problematic. Click here for more details.

Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rubocop.yml +0 -9
  4. data/.travis.yml +28 -0
  5. data/CONTRIBUTING.rdoc +3 -5
  6. data/Gemfile +3 -0
  7. data/History.rdoc +1770 -273
  8. data/Rakefile +15 -68
  9. data/appveyor.yml +24 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +6 -0
  12. data/doc/release_notes/README.md +4 -0
  13. data/doc/release_notes/rake-0.7.3.rdoc +0 -0
  14. data/{bin → exe}/rake +0 -6
  15. data/lib/rake.rb +1 -3
  16. data/lib/rake/application.rb +3 -6
  17. data/lib/rake/cpu_counter.rb +3 -17
  18. data/lib/rake/file_utils.rb +22 -6
  19. data/lib/rake/packagetask.rb +12 -1
  20. data/lib/rake/rake_test_loader.rb +0 -1
  21. data/lib/rake/rule_recursion_overflow_error.rb +0 -1
  22. data/lib/rake/task.rb +3 -3
  23. data/lib/rake/task_arguments.rb +2 -1
  24. data/lib/rake/testtask.rb +5 -1
  25. data/lib/rake/thread_pool.rb +0 -1
  26. data/lib/rake/version.rb +2 -0
  27. data/rake.gemspec +30 -0
  28. metadata +21 -110
  29. data/.autotest +0 -7
  30. data/.togglerc +0 -7
  31. data/Manifest.txt +0 -154
  32. data/lib/rake/contrib/.document +0 -1
  33. data/rakelib/test_times.rake +0 -25
  34. data/test/file_creation.rb +0 -34
  35. data/test/helper.rb +0 -134
  36. data/test/support/rakefile_definitions.rb +0 -476
  37. data/test/support/ruby_runner.rb +0 -34
  38. data/test/test_private_reader.rb +0 -42
  39. data/test/test_rake.rb +0 -40
  40. data/test/test_rake_application.rb +0 -659
  41. data/test/test_rake_application_options.rb +0 -468
  42. data/test/test_rake_backtrace.rb +0 -119
  43. data/test/test_rake_clean.rb +0 -61
  44. data/test/test_rake_cpu_counter.rb +0 -68
  45. data/test/test_rake_definitions.rb +0 -84
  46. data/test/test_rake_directory_task.rb +0 -76
  47. data/test/test_rake_dsl.rb +0 -40
  48. data/test/test_rake_early_time.rb +0 -31
  49. data/test/test_rake_extension.rb +0 -59
  50. data/test/test_rake_file_creation_task.rb +0 -56
  51. data/test/test_rake_file_list.rb +0 -687
  52. data/test/test_rake_file_list_path_map.rb +0 -15
  53. data/test/test_rake_file_task.rb +0 -197
  54. data/test/test_rake_file_utils.rb +0 -318
  55. data/test/test_rake_ftp_file.rb +0 -74
  56. data/test/test_rake_functional.rb +0 -484
  57. data/test/test_rake_invocation_chain.rb +0 -64
  58. data/test/test_rake_late_time.rb +0 -18
  59. data/test/test_rake_linked_list.rb +0 -84
  60. data/test/test_rake_makefile_loader.rb +0 -46
  61. data/test/test_rake_multi_task.rb +0 -64
  62. data/test/test_rake_name_space.rb +0 -57
  63. data/test/test_rake_package_task.rb +0 -79
  64. data/test/test_rake_path_map.rb +0 -168
  65. data/test/test_rake_path_map_explode.rb +0 -34
  66. data/test/test_rake_path_map_partial.rb +0 -18
  67. data/test/test_rake_pathname_extensions.rb +0 -15
  68. data/test/test_rake_pseudo_status.rb +0 -21
  69. data/test/test_rake_rake_test_loader.rb +0 -20
  70. data/test/test_rake_reduce_compat.rb +0 -26
  71. data/test/test_rake_require.rb +0 -40
  72. data/test/test_rake_rules.rb +0 -388
  73. data/test/test_rake_scope.rb +0 -44
  74. data/test/test_rake_task.rb +0 -430
  75. data/test/test_rake_task_argument_parsing.rb +0 -119
  76. data/test/test_rake_task_arguments.rb +0 -134
  77. data/test/test_rake_task_manager.rb +0 -178
  78. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  79. data/test/test_rake_task_with_arguments.rb +0 -172
  80. data/test/test_rake_test_task.rb +0 -130
  81. data/test/test_rake_thread_pool.rb +0 -145
  82. data/test/test_rake_top_level_functions.rb +0 -71
  83. data/test/test_rake_win32.rb +0 -72
  84. data/test/test_thread_history_display.rb +0 -101
  85. data/test/test_trace_output.rb +0 -52
@@ -1,64 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeInvocationChain < Rake::TestCase
4
- include Rake
5
-
6
- def setup
7
- super
8
-
9
- @empty = InvocationChain.empty
10
-
11
- @first_member = "A"
12
- @second_member = "B"
13
- @one = @empty.append(@first_member)
14
- @two = @one.append(@second_member)
15
- end
16
-
17
- def test_conj_on_invocation_chains
18
- list = InvocationChain.empty.conj("B").conj("A")
19
- assert_equal InvocationChain.make("A", "B"), list
20
- assert_equal InvocationChain, list.class
21
- end
22
-
23
- def test_make_on_invocation_chains
24
- assert_equal @empty, InvocationChain.make()
25
- assert_equal @one, InvocationChain.make(@first_member)
26
- assert_equal @two, InvocationChain.make(@second_member, @first_member)
27
- end
28
-
29
- def test_append_with_one_argument
30
- chain = @empty.append("A")
31
-
32
- assert_equal 'TOP => A', chain.to_s # HACK
33
- end
34
-
35
- def test_append_one_circular
36
- ex = assert_raises RuntimeError do
37
- @one.append(@first_member)
38
- end
39
- assert_match(/circular +dependency/i, ex.message)
40
- assert_match(/A.*=>.*A/, ex.message)
41
- end
42
-
43
- def test_append_two_circular
44
- ex = assert_raises RuntimeError do
45
- @two.append(@first_member)
46
- end
47
- assert_match(/A.*=>.*B.*=>.*A/, ex.message)
48
- end
49
-
50
- def test_member_eh_one
51
- assert @one.member?(@first_member)
52
- end
53
-
54
- def test_member_eh_two
55
- assert @two.member?(@first_member)
56
- assert @two.member?(@second_member)
57
- end
58
-
59
- def test_to_s_empty
60
- assert_equal "TOP", @empty.to_s
61
- assert_equal "TOP => A", @one.to_s
62
- end
63
-
64
- end
@@ -1,18 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeLateTime < Rake::TestCase
4
- def test_late_time_comparisons
5
- late = Rake::LATE
6
- assert_equal late, late
7
- assert late >= Time.now
8
- assert late > Time.now
9
- assert late != Time.now
10
- assert Time.now < late
11
- assert Time.now <= late
12
- assert Time.now != late
13
- end
14
-
15
- def test_to_s
16
- assert_equal '<LATE TIME>', Rake::LATE.to_s
17
- end
18
- end
@@ -1,84 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestLinkedList < Rake::TestCase
4
- include Rake
5
-
6
- def test_empty_list
7
- empty = LinkedList::EMPTY
8
- assert empty.empty?, "should be empty"
9
- end
10
-
11
- def test_list_with_one_item
12
- list = LinkedList.make(:one)
13
- assert ! list.empty?, "should not be empty"
14
- assert_equal :one, list.head
15
- assert_equal LinkedList::EMPTY, list.tail
16
- end
17
-
18
- def test_make_with_no_arguments
19
- empty = LinkedList.make()
20
- assert_equal LinkedList::EMPTY, empty
21
- end
22
-
23
- def test_make_with_one_argument
24
- list = LinkedList.make(:one)
25
- assert ! list.empty?
26
- assert_equal :one, list.head
27
- assert_equal LinkedList::EMPTY, list.tail
28
- end
29
-
30
- def test_make_with_two_arguments
31
- list = LinkedList.make(:one, :two)
32
- assert ! list.empty?
33
- assert_equal :one, list.head
34
- assert_equal :two, list.tail.head
35
- assert_equal LinkedList::EMPTY, list.tail.tail
36
- end
37
-
38
- def test_list_with_several_items
39
- list = LinkedList.make(:one, :two, :three)
40
-
41
- assert ! list.empty?, "should not be empty"
42
- assert_equal :one, list.head
43
- assert_equal :two, list.tail.head
44
- assert_equal :three, list.tail.tail.head
45
- assert_equal LinkedList::EMPTY, list.tail.tail.tail
46
- end
47
-
48
- def test_lists_are_structurally_equivalent
49
- list = LinkedList.make(1, 2, 3)
50
- same = LinkedList.make(1, 2, 3)
51
- diff = LinkedList.make(1, 2, 4)
52
- short = LinkedList.make(1, 2)
53
-
54
- assert_equal list, same
55
- refute_equal list, diff
56
- refute_equal list, short
57
- refute_equal short, list
58
- end
59
-
60
- def test_conversion_to_string
61
- list = LinkedList.make(:one, :two, :three)
62
- assert_equal "LL(one, two, three)", list.to_s
63
- assert_equal "LL()", LinkedList.make().to_s
64
- end
65
-
66
- def test_conversion_with_inspect
67
- list = LinkedList.make(:one, :two, :three)
68
- assert_equal "LL(:one, :two, :three)", list.inspect
69
- assert_equal "LL()", LinkedList.make().inspect
70
- end
71
-
72
- def test_lists_are_enumerable
73
- list = LinkedList.make(1, 2, 3)
74
- new_list = list.map { |item| item + 10 }
75
- expected = [11, 12, 13]
76
- assert_equal expected, new_list
77
- end
78
-
79
- def test_conjunction
80
- list = LinkedList.make.conj("C").conj("B").conj("A")
81
- assert_equal LinkedList.make("A", "B", "C"), list
82
- end
83
-
84
- end
@@ -1,46 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'rake/loaders/makefile'
3
-
4
- class TestRakeMakefileLoader < Rake::TestCase
5
- include Rake
6
-
7
- def test_parse
8
- Dir.chdir @tempdir
9
-
10
- open 'sample.mf', 'w' do |io|
11
- io << <<-'SAMPLE_MF'
12
- # Comments
13
- a: a1 a2 a3 a4
14
- b: b1 b2 b3 \
15
- b4 b5 b6\
16
- # Mid: Comment
17
- b7
18
-
19
- a : a5 a6 a7
20
- c: c1
21
- d: d1 d2 \
22
-
23
- e f : e1 f1
24
-
25
- g\ 0: g1 g\ 2 g\ 3 g4
26
- SAMPLE_MF
27
- end
28
-
29
- Task.clear
30
- loader = Rake::MakefileLoader.new
31
- loader.load 'sample.mf'
32
- %w(a b c d).each do |t|
33
- assert Task.task_defined?(t), "#{t} should be a defined task"
34
- end
35
- assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort
36
- assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort
37
- assert_equal %w(c1).sort, Task['c'].prerequisites.sort
38
- assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort
39
- assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort
40
- assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort
41
- assert_equal(
42
- ["g1", "g 2", "g 3", "g4"].sort,
43
- Task['g 0'].prerequisites.sort)
44
- assert_equal 7, Task.tasks.size
45
- end
46
- end
@@ -1,64 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'thread'
3
-
4
- class TestRakeMultiTask < Rake::TestCase
5
- include Rake
6
- include Rake::DSL
7
-
8
- def setup
9
- super
10
-
11
- Task.clear
12
- @runs = Array.new
13
- @mutex = Mutex.new
14
- end
15
-
16
- def teardown
17
- Rake.application.thread_pool.join
18
-
19
- super
20
- end
21
-
22
- def add_run(obj)
23
- @mutex.synchronize do
24
- @runs << obj
25
- end
26
- end
27
-
28
- def test_running_multitasks
29
- task :a do 3.times do |i| add_run("A#{i}"); sleep 0.01; end end
30
- task :b do 3.times do |i| add_run("B#{i}"); sleep 0.01; end end
31
- multitask :both => [:a, :b]
32
- Task[:both].invoke
33
- assert_equal 6, @runs.size
34
- assert @runs.index("A0") < @runs.index("A1")
35
- assert @runs.index("A1") < @runs.index("A2")
36
- assert @runs.index("B0") < @runs.index("B1")
37
- assert @runs.index("B1") < @runs.index("B2")
38
- end
39
-
40
- def test_all_multitasks_wait_on_slow_prerequisites
41
- task :slow do 3.times do |i| add_run("S#{i}"); sleep 0.05 end end
42
- task :a => [:slow] do 3.times do |i| add_run("A#{i}"); sleep 0.01 end end
43
- task :b => [:slow] do 3.times do |i| add_run("B#{i}"); sleep 0.01 end end
44
- multitask :both => [:a, :b]
45
- Task[:both].invoke
46
- assert_equal 9, @runs.size
47
- assert @runs.index("S0") < @runs.index("S1")
48
- assert @runs.index("S1") < @runs.index("S2")
49
- assert @runs.index("S2") < @runs.index("A0")
50
- assert @runs.index("S2") < @runs.index("B0")
51
- assert @runs.index("A0") < @runs.index("A1")
52
- assert @runs.index("A1") < @runs.index("A2")
53
- assert @runs.index("B0") < @runs.index("B1")
54
- assert @runs.index("B1") < @runs.index("B2")
55
- end
56
-
57
- def test_multitasks_with_parameters
58
- task :a, [:arg] do |t, args| add_run(args[:arg]) end
59
- multitask :b, [:arg] => [:a] do |t, args| add_run(args[:arg] + 'mt') end
60
- Task[:b].invoke "b"
61
- assert @runs[0] == "b"
62
- assert @runs[1] == "bmt"
63
- end
64
- end
@@ -1,57 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeNameSpace < Rake::TestCase
4
-
5
- class TM
6
- include Rake::TaskManager
7
- end
8
-
9
- def test_namespace_creation
10
- mgr = TM.new
11
- ns = Rake::NameSpace.new(mgr, [])
12
- refute_nil ns
13
- end
14
-
15
- def test_namespace_lookup
16
- mgr = TM.new
17
- ns = mgr.in_namespace("n") do
18
- mgr.define_task(Rake::Task, "t")
19
- end
20
-
21
- refute_nil ns["t"]
22
- assert_equal mgr["n:t"], ns["t"]
23
- end
24
-
25
- def test_namespace_reports_tasks_it_owns
26
- mgr = TM.new
27
- nns = nil
28
- ns = mgr.in_namespace("n") do
29
- mgr.define_task(Rake::Task, :x)
30
- mgr.define_task(Rake::Task, :y)
31
- nns = mgr.in_namespace("nn") do
32
- mgr.define_task(Rake::Task, :z)
33
- end
34
- end
35
- mgr.in_namespace("m") do
36
- mgr.define_task(Rake::Task, :x)
37
- end
38
-
39
- assert_equal ["n:nn:z", "n:x", "n:y"],
40
- ns.tasks.map { |tsk| tsk.name }
41
- assert_equal ["n:nn:z"], nns.tasks.map { |t| t.name }
42
- end
43
-
44
- def test_scope
45
- mgr = TM.new
46
-
47
- scope = Rake::LinkedList.new 'b'
48
- scope = scope.conj 'a'
49
-
50
- ns = Rake::NameSpace.new mgr, scope
51
-
52
- assert_equal scope, ns.scope
53
-
54
- refute_same scope, ns.scope
55
- end
56
-
57
- end
@@ -1,79 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'rake/packagetask'
3
-
4
- class TestRakePackageTask < Rake::TestCase
5
-
6
- def test_initialize
7
- touch 'install.rb'
8
- touch 'a.c'
9
- touch 'b.c'
10
- mkdir 'CVS'
11
- touch 'a.rb~'
12
-
13
- pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p|
14
- p.package_files << "install.rb"
15
- p.package_files.include '*.c'
16
- p.package_files.exclude(/\bCVS\b/)
17
- p.package_files.exclude(/~$/)
18
- p.package_dir = 'pkg'
19
- p.need_tar = true
20
- p.need_tar_gz = true
21
- p.need_tar_bz2 = true
22
- p.need_zip = true
23
- }
24
-
25
- assert_equal "pkg", pkg.package_dir
26
-
27
- assert_includes pkg.package_files, 'a.c'
28
-
29
- assert_equal 'pkgr', pkg.name
30
- assert_equal '1.2.3', pkg.version
31
- assert Rake::Task[:package]
32
- assert Rake::Task['pkg/pkgr-1.2.3.tgz']
33
- assert Rake::Task['pkg/pkgr-1.2.3.tar.gz']
34
- assert Rake::Task['pkg/pkgr-1.2.3.tar.bz2']
35
- assert Rake::Task['pkg/pkgr-1.2.3.zip']
36
- assert Rake::Task['pkg/pkgr-1.2.3']
37
- assert Rake::Task[:clobber_package]
38
- assert Rake::Task[:repackage]
39
- end
40
-
41
- def test_initialize_no_version
42
- e = assert_raises RuntimeError do
43
- Rake::PackageTask.new 'pkgr'
44
- end
45
-
46
- assert_equal 'Version required (or :noversion)', e.message
47
- end
48
-
49
- def test_initialize_noversion
50
- pkg = Rake::PackageTask.new 'pkgr', :noversion
51
-
52
- assert_equal 'pkg', pkg.package_dir
53
- assert_equal 'pkgr', pkg.name
54
- assert_equal nil, pkg.version
55
- end
56
-
57
- def test_clone
58
- pkg = Rake::PackageTask.new("x", :noversion)
59
- p2 = pkg.clone
60
- pkg.package_files << "y"
61
- p2.package_files << "x"
62
- assert_equal ["y"], pkg.package_files
63
- assert_equal ["x"], p2.package_files
64
- end
65
-
66
- def test_package_name
67
- pkg = Rake::PackageTask.new 'a', '1'
68
-
69
- assert_equal 'a-1', pkg.package_name
70
- end
71
-
72
- def test_package_name_noversion
73
- pkg = Rake::PackageTask.new 'a', :noversion
74
-
75
- assert_equal 'a', pkg.package_name
76
- end
77
-
78
- end
79
-
@@ -1,168 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakePathMap < Rake::TestCase
4
-
5
- def test_returns_self_with_no_args
6
- assert_equal "abc.rb", "abc.rb".pathmap
7
- end
8
-
9
- def test_s_returns_file_separator
10
- sep = File::ALT_SEPARATOR || File::SEPARATOR
11
- assert_equal sep, "abc.rb".pathmap("%s")
12
- assert_equal sep, "".pathmap("%s")
13
- assert_equal "a#{sep}b", "a/b".pathmap("%d%s%f")
14
- end
15
-
16
- def test_f_returns_basename
17
- assert_equal "abc.rb", "abc.rb".pathmap("%f")
18
- assert_equal "abc.rb", "this/is/a/dir/abc.rb".pathmap("%f")
19
- assert_equal "abc.rb", "/this/is/a/dir/abc.rb".pathmap("%f")
20
- end
21
-
22
- def test_n_returns_basename_without_extension
23
- assert_equal "abc", "abc.rb".pathmap("%n")
24
- assert_equal "abc", "abc".pathmap("%n")
25
- assert_equal "abc", "this/is/a/dir/abc.rb".pathmap("%n")
26
- assert_equal "abc", "/this/is/a/dir/abc.rb".pathmap("%n")
27
- assert_equal "abc", "/this/is/a/dir/abc".pathmap("%n")
28
- end
29
-
30
- def test_d_returns_dirname
31
- assert_equal ".", "abc.rb".pathmap("%d")
32
- assert_equal "/", "/abc".pathmap("%d")
33
- assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%d")
34
- assert_equal "/this/is/a/dir", "/this/is/a/dir/abc.rb".pathmap("%d")
35
- end
36
-
37
- def test_9d_returns_partial_dirname
38
- assert_equal "this/is", "this/is/a/dir/abc.rb".pathmap("%2d")
39
- assert_equal "this", "this/is/a/dir/abc.rb".pathmap("%1d")
40
- assert_equal ".", "this/is/a/dir/abc.rb".pathmap("%0d")
41
- assert_equal "dir", "this/is/a/dir/abc.rb".pathmap("%-1d")
42
- assert_equal "a/dir", "this/is/a/dir/abc.rb".pathmap("%-2d")
43
- assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%100d")
44
- assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%-100d")
45
- end
46
-
47
- def test_x_returns_extension
48
- assert_equal "", "abc".pathmap("%x")
49
- assert_equal ".rb", "abc.rb".pathmap("%x")
50
- assert_equal ".rb", "abc.xyz.rb".pathmap("%x")
51
- assert_equal "", ".depends".pathmap("%x")
52
- assert_equal "", "dir/.depends".pathmap("%x")
53
- end
54
-
55
- def test_x_returns_everything_but_extension
56
- assert_equal "abc", "abc".pathmap("%X")
57
- assert_equal "abc", "abc.rb".pathmap("%X")
58
- assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X")
59
- assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X")
60
- assert_equal "a.xyz", "a.xyz.rb".pathmap("%X")
61
- assert_equal "abc", "abc.rb".pathmap("%X")
62
- assert_equal "ab", "ab.rb".pathmap("%X")
63
- assert_equal "a", "a.rb".pathmap("%X")
64
- assert_equal ".depends", ".depends".pathmap("%X")
65
- assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X")
66
- assert_equal "/.depends", "/.depends".pathmap("%X")
67
- end
68
-
69
- def test_p_returns_entire_pathname
70
- assert_equal "abc.rb", "abc.rb".pathmap("%p")
71
- assert_equal "this/is/a/dir/abc.rb", "this/is/a/dir/abc.rb".pathmap("%p")
72
- assert_equal "/this/is/a/dir/abc.rb", "/this/is/a/dir/abc.rb".pathmap("%p")
73
- end
74
-
75
- def test_dash_returns_empty_string
76
- assert_equal "", "abc.rb".pathmap("%-")
77
- assert_equal "abc.rb", "abc.rb".pathmap("%X%-%x")
78
- end
79
-
80
- def test_percent_percent_returns_percent
81
- assert_equal "a%b", "".pathmap("a%%b")
82
- end
83
-
84
- def test_undefined_percent_causes_error
85
- assert_raises(ArgumentError) {
86
- "dir/abc.rb".pathmap("%z")
87
- }
88
- end
89
-
90
- def test_pattern_returns_substitutions
91
- assert_equal "bin/org/osb",
92
- "src/org/osb/Xyz.java".pathmap("%{src,bin}d")
93
- end
94
-
95
- def test_pattern_can_use_backreferences
96
- assert_equal "dir/hi/is", "dir/this/is".pathmap("%{t(hi)s,\\1}p")
97
- end
98
-
99
- def test_pattern_with_star_replacement_string_uses_block
100
- assert_equal "src/ORG/osb",
101
- "src/org/osb/Xyz.java".pathmap("%{/org,*}d") { |d| d.upcase }
102
- assert_equal "Xyz.java",
103
- "src/org/osb/Xyz.java".pathmap("%{.*,*}f") { |f| f.capitalize }
104
- end
105
-
106
- def test_pattern_with_no_replacement_nor_block_substitutes_empty_string
107
- assert_equal "bc.rb", "abc.rb".pathmap("%{a}f")
108
- end
109
-
110
- def test_pattern_works_with_certain_valid_operators
111
- assert_equal "dir/xbc.rb", "dir/abc.rb".pathmap("%{a,x}p")
112
- assert_equal "d1r", "dir/abc.rb".pathmap("%{i,1}d")
113
- assert_equal "xbc.rb", "dir/abc.rb".pathmap("%{a,x}f")
114
- assert_equal ".Rb", "dir/abc.rb".pathmap("%{r,R}x")
115
- assert_equal "xbc", "dir/abc.rb".pathmap("%{a,x}n")
116
- end
117
-
118
- def test_multiple_patterns
119
- assert_equal "this/is/b/directory/abc.rb",
120
- "this/is/a/dir/abc.rb".pathmap("%{a,b;dir,\\0ectory}p")
121
- end
122
-
123
- def test_partial_directory_selection_works_with_patterns
124
- assert_equal "this/is/a/long",
125
- "this/is/a/really/long/path/ok.rb".pathmap("%{/really/,/}5d")
126
- end
127
-
128
- def test_pattern_with_invalid_operator
129
- ex = assert_raises(ArgumentError) do
130
- "abc.xyz".pathmap("%{src,bin}z")
131
- end
132
- assert_match(/unknown.*pathmap.*spec.*z/i, ex.message)
133
- end
134
-
135
- def test_works_with_windows_separators
136
- if File::ALT_SEPARATOR
137
- assert_equal "abc", 'dir\abc.rb'.pathmap("%n")
138
- assert_equal 'this\is\a\dir',
139
- 'this\is\a\dir\abc.rb'.pathmap("%d")
140
- end
141
- end
142
-
143
- def test_complex_patterns
144
- sep = "".pathmap("%s")
145
- assert_equal(
146
- "dir/abc.rb",
147
- "dir/abc.rb".pathmap("%d/%n%x"))
148
- assert_equal(
149
- "./abc.rb",
150
- "abc.rb".pathmap("%d/%n%x"))
151
- assert_equal(
152
- "Your file extension is '.rb'",
153
- "dir/abc.rb".pathmap("Your file extension is '%x'"))
154
- assert_equal(
155
- "bin/org/onestepback/proj/A.class",
156
- "src/org/onestepback/proj/A.java".pathmap("%{src,bin}d/%n.class"))
157
- assert_equal(
158
- "src_work/bin/org/onestepback/proj/A.class",
159
- "src_work/src/org/onestepback/proj/A.java".
160
- pathmap('%{\bsrc\b,bin}X.class'))
161
- assert_equal(
162
- ".depends.bak",
163
- ".depends".pathmap("%X.bak"))
164
- assert_equal(
165
- "d#{sep}a/b/c#{sep}file.txt",
166
- "a/b/c/d/file.txt".pathmap("%-1d%s%3d%s%f"))
167
- end
168
- end