summaryrefslogtreecommitdiff
path: root/jni/ruby/test/rake/test_rake_definitions.rb
diff options
context:
space:
mode:
authorJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-16 18:49:26 +0900
committerJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-30 00:39:06 +0900
commitfcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch)
tree64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/test/rake/test_rake_definitions.rb
Fresh start
Diffstat (limited to 'jni/ruby/test/rake/test_rake_definitions.rb')
-rw-r--r--jni/ruby/test/rake/test_rake_definitions.rb84
1 files changed, 84 insertions, 0 deletions
diff --git a/jni/ruby/test/rake/test_rake_definitions.rb b/jni/ruby/test/rake/test_rake_definitions.rb
new file mode 100644
index 0000000..ee474cb
--- /dev/null
+++ b/jni/ruby/test/rake/test_rake_definitions.rb
@@ -0,0 +1,84 @@
+require File.expand_path('../helper', __FILE__)
+require 'fileutils'
+
+class TestRakeDefinitions < Rake::TestCase
+ include Rake
+
+ EXISTINGFILE = "existing"
+
+ def setup
+ super
+
+ Task.clear
+ end
+
+ def test_task
+ done = false
+ task :one => [:two] do done = true end
+ task :two
+ task :three => [:one, :two]
+ check_tasks(:one, :two, :three)
+ assert done, "Should be done"
+ end
+
+ def test_file_task
+ done = false
+ file "one" => "two" do done = true end
+ file "two"
+ file "three" => ["one", "two"]
+ check_tasks("one", "two", "three")
+ assert done, "Should be done"
+ end
+
+ def check_tasks(n1, n2, n3)
+ t = Task[n1]
+ assert Task === t, "Should be a Task"
+ assert_equal n1.to_s, t.name
+ assert_equal [n2.to_s], t.prerequisites.map { |n| n.to_s }
+ t.invoke
+ t2 = Task[n2]
+ assert_equal FileList[], t2.prerequisites
+ t3 = Task[n3]
+ assert_equal [n1.to_s, n2.to_s], t3.prerequisites.map { |n| n.to_s }
+ end
+
+ def test_incremental_definitions
+ runs = []
+ task :t1 => [:t2] do runs << "A"; 4321 end
+ task :t1 => [:t3] do runs << "B"; 1234 end
+ task :t1 => [:t3]
+ task :t2
+ task :t3
+ Task[:t1].invoke
+ assert_equal ["A", "B"], runs
+ assert_equal ["t2", "t3"], Task[:t1].prerequisites
+ end
+
+ def test_missing_dependencies
+ task :x => ["missing"]
+ assert_raises(RuntimeError) { Task[:x].invoke }
+ end
+
+ def test_falsey_dependencies
+ task :x => nil
+ assert_equal [], Task[:x].prerequisites
+ end
+
+ def test_implicit_file_dependencies
+ runs = []
+ create_existing_file
+ task :y => [EXISTINGFILE] do |t| runs << t.name end
+ Task[:y].invoke
+ assert_equal runs, ['y']
+ end
+
+ private # ----------------------------------------------------------
+
+ def create_existing_file
+ Dir.mkdir File.dirname(EXISTINGFILE) unless
+ File.exist?(File.dirname(EXISTINGFILE))
+ open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless
+ File.exist?(EXISTINGFILE)
+ end
+
+end