aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/Rakefile
blob: 00ab92129d27e96935431463de089ccca30e31a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
require "rake/testtask"
require "fileutils"

desc "Default Task"
task default: :test

task package: "assets:compile"

# Run the unit tests

desc "Run all unit tests"
task test: ["test:template", "test:integration:action_pack", "test:integration:active_record"]

namespace :test do
  task :isolated do
    Dir.glob("test/{actionpack,activerecord,template}/**/*_test.rb").all? do |file|
      sh(Gem.ruby, "-w", "-Ilib:test", file)
    end || raise("Failures")
  end

  Rake::TestTask.new(:template) do |t|
    t.libs << "test"
    t.test_files = Dir.glob("test/template/**/*_test.rb")
    t.warning = true
    t.verbose = true
    t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
  end

  task :ujs do
    begin
      Dir.mkdir("log")
      pid = spawn("bundle exec rackup test/ujs/config.ru -p 4567 -s puma > log/test.log 2>&1")

      start_time = Time.now

      loop do
        break if system("lsof -i :4567 >/dev/null")

        if Time.now - start_time > 5
          puts "Timed out after 5 seconds"
          exit 1
        end
      end

      system("npm run lint && phantomjs ../ci/phantomjs.js http://localhost:4567/")
      status = $?.to_i
    ensure
      Process.kill("KILL", pid) if pid
      FileUtils.rm_f("log")
    end

    exit status
  end

  namespace :integration do
    desc "ActiveRecord Integration Tests"
    Rake::TestTask.new(:active_record) do |t|
      t.libs << "test"
      t.test_files = Dir.glob("test/activerecord/*_test.rb")
      t.warning = true
      t.verbose = true
      t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
    end

    desc "ActionPack Integration Tests"
    Rake::TestTask.new(:action_pack) do |t|
      t.libs << "test"
      t.test_files = Dir.glob("test/actionpack/**/*_test.rb")
      t.warning = true
      t.verbose = true
      t.ruby_opts = ["--dev"] if defined?(JRUBY_VERSION)
    end
  end
end

namespace :ujs do
  desc "Starts the test server"
  task :server do
    system "bundle exec rackup test/ujs/config.ru -p 4567 -s puma"
  end
end

namespace :assets do
  desc "Compile Action View assets"
  task :compile do
    require "blade"
    Blade.build
  end
end

task :lines do
  load File.expand_path("..", File.dirname(__FILE__)) + "/tools/line_statistics"
  files = FileList["lib/**/*.rb"]
  CodeTools::LineStatistics.new(files).print_loc
end