This repository has been archived by the owner on Mar 26, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 41
/
tests.rake
78 lines (69 loc) · 3.32 KB
/
tests.rake
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
TESTS_DIR = File.join(MAGLEV_HOME, 'tests')
namespace :tests do
desc "Run tests in $MAGLEV_HOME/src/test/vmunit.conf (was dev:vm-tests)"
task :vmunit do
# Be sure to return the pass/fail status to the shell by doing an exit.
# Otherwise, rake swallows the exit status
exit Stone.new(ENV['STONENAME'] || 'maglev').run_string("run\nRubyContext _runVmUnit\n%")
end
desc "Run tests in $MAGLEV_HOME/src/test/vmunit2.conf"
task :vmunit2 do
test_dir = File.join(ENV['MAGLEV_HOME'], 'src', 'test')
conf_file = 'vmunit2.conf'
Dir.chdir(test_dir) do
raise "Can't find conf file: #{File.join(test_dir, conf_file)}" unless File.exist? conf_file
File.foreach conf_file do |line|
line.chomp!
next if line =~ /^\s*#/ || line =~ /^\s*$/
puts "\n======= Running #{line}"
sh "maglev-ruby #{line}"
end
end
end
desc "Test that many of our favorite rubygems install"
# NOTE: we used to do a clean of all the gems here, but there were too
# many interactions with jenkins. We now assume the calling environment
# manages how clean our gemdir is.
task :fav_gems_install => [:shadow_gems_install] do
puts "== :fav_gems_install: Assuming gems are already clean..."
cd(File.join(TESTS_DIR, 'favorite_gems')) do
rm_f 'Gemfile.lock'
sh "#{MAGLEV_HOME}/bin/bundle install"
end
end
# This tests our custom gem-finding logic. See rubygems/lib/default/maglev.rb
# This test will break if at any point in the future a bcrypt-ruby-maglev- version 3.0.0
# is added to rubygems, or either bcrypt-ruby-maglev- or bcrypt-ruby 3.0.1 are yanked.
task :shadow_gems_install do
sh "#{MAGLEV_HOME}/bin/maglev-gem install bcrypt-ruby -v'=3.0.1' --no-ri --no-rdoc"
# Last call fail with a compiler error if our rubygems logic doesn't work
sh "#{MAGLEV_HOME}/bin/maglev-gem uninstall bcrypt-ruby"
# Should have uninstalled the gem properly, this is tested with the next line
unless %x[#{MAGLEV_HOME}/bin/maglev-gem list bcrypt-ruby].strip.empty?
raise "Failed to uninstall bcrypt-ruby-maglev- when requesting uninstall of bcrypt-ruby"
end
# Now we request a version which we have no -maglev- gem for, but we should
# shadow the original gem completely if MAGLEV_GEMS_ALLOW_ALL is set to false
msg = %x[MAGLEV_GEMS_ALLOW_ALL=false #{MAGLEV_HOME}/bin/maglev-gem install bcrypt-ruby -v '=3.0.0' --no-ri --no-rdoc]
unless msg.include? "Could not find a valid gem 'bcrypt-ruby' (= 3.0.0)"
raise "Failed to shadow original gem with MAGLEV_GEMS_ALLOW_ALL set to false"
end
# Now we request a version which we have a -maglev- gem for, and even
# with MAGLEV_GEMS_ALLOW_ALL set to true, this should shadow the original same version
msg = %x[MAGLEV_GEMS_ALLOW_ALL=true #{MAGLEV_HOME}/bin/maglev-gem install bcrypt-ruby -v '=3.0.1' --no-ri --no-rdoc]
unless msg.include? "Successfully installed bcrypt-ruby-3.0.1"
raise "Failed to shadow an original gem version with MAGLEV_GEMS_ALLOW_ALL set to true"
end
sh "#{MAGLEV_HOME}/bin/maglev-gem uninstall bcrypt-ruby"
end
desc "Run the sinatra gem tests under MagLev"
task :sinatra do
cd(File.join(TESTS_DIR, 'sinatra')) do
sh "./test.sh"
end
end
desc "Run tests on the examples directory"
task :examples do
sh "cd examples/sinatra ; rake test"
end
end