Skip to content

Commit 7e03a8a

Browse files
committed
test(gems): verify pure ruby gem installation
1 parent 7feb70c commit 7e03a8a

File tree

3 files changed

+55
-4
lines changed

3 files changed

+55
-4
lines changed

gems/native-tracer/codetracer-ruby-recorder.gemspec

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@ Gem::Specification.new do |spec|
99
spec.license = 'MIT'
1010
spec.homepage = 'https://github.com/metacraft-labs/codetracer-ruby-recorder'
1111

12-
spec.files = Dir['lib/**/*', 'ext/native_tracer/**/{Cargo.toml,*.rs}',
13-
'ext/native_tracer/extconf.rb', '../../README.md', '../../LICENSE']
12+
spec.files = Dir[
13+
'lib/**/*',
14+
'ext/native_tracer/**/{Cargo.toml,*.rs}',
15+
'ext/native_tracer/extconf.rb',
16+
'ext/native_tracer/target/release/*'
17+
]
1418
spec.require_paths = ['lib']
15-
spec.extensions = ['ext/native_tracer/extconf.rb']
19+
spec.extensions = []
1620
spec.bindir = 'bin'
1721
spec.executables = ['codetracer-ruby-recorder']
1822

gems/pure-ruby-tracer/codetracer_pure_ruby_recorder.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
99
spec.license = 'MIT'
1010
spec.homepage = 'https://github.com/metacraft-labs/codetracer-ruby-recorder'
1111

12-
spec.files = Dir['lib/**/*', 'bin/*', '../../README.md', '../../LICENSE']
12+
spec.files = Dir['lib/**/*', 'bin/*']
1313
spec.require_paths = ['lib']
1414
spec.bindir = 'bin'
1515
spec.executables = ['codetracer-pure-ruby-recorder']

test/test_tracer.rb

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
require 'json'
33
require 'fileutils'
44
require 'open3'
5+
require 'tmpdir'
56

67
class TraceTest < Minitest::Test
78
TMP_DIR = File.expand_path('tmp', __dir__)
@@ -60,4 +61,50 @@ def program_args(base)
6061
assert_equal expected, native_out
6162
end
6263
end
64+
65+
def test_gem_installation
66+
Dir.chdir(File.expand_path('..', __dir__)) do
67+
system('just', 'build-extension', exception: true)
68+
69+
dlext = RbConfig::CONFIG['DLEXT']
70+
ext_path = File.join('gems', 'native-tracer', 'ext', 'native_tracer', 'target', 'release', "codetracer_ruby_recorder.#{dlext}")
71+
FileUtils.rm_f(ext_path)
72+
73+
Dir.mktmpdir('gemhome') do |gem_home|
74+
gem_build = IO.popen(%w[gem -C gems/native-tracer build codetracer-ruby-recorder.gemspec], err: [:child, :out]) { |io| io.read }
75+
gem_file = gem_build.lines.grep(/File:/).first.split.last
76+
gem_file = File.expand_path(File.join('gems/native-tracer', gem_file))
77+
78+
env = { 'GEM_HOME' => gem_home, 'GEM_PATH' => gem_home, 'PATH' => "#{gem_home}/bin:#{ENV['PATH']}" }
79+
system(env, 'gem', 'install', '--local', gem_file, exception: true)
80+
81+
out_dir = File.join('test', 'tmp', 'gem_install')
82+
FileUtils.rm_rf(out_dir)
83+
stdout, stderr, status = Open3.capture3(env, 'ruby', '-S', 'codetracer-ruby-recorder', '--out-dir', out_dir, File.join('test', 'programs', 'addition.rb'))
84+
raise "native_trace failed: #{stderr}" unless status.success?
85+
assert_equal "3\n", stdout
86+
assert File.exist?(File.join(out_dir, 'trace.json'))
87+
end
88+
end
89+
end
90+
91+
def test_pure_gem_installation
92+
Dir.chdir(File.expand_path('..', __dir__)) do
93+
Dir.mktmpdir('gemhome') do |gem_home|
94+
gem_build = IO.popen(%w[gem -C gems/pure-ruby-tracer build codetracer_pure_ruby_recorder.gemspec], err: [:child, :out]) { |io| io.read }
95+
gem_file = gem_build.lines.grep(/File:/).first.split.last
96+
gem_file = File.expand_path(File.join('gems/pure-ruby-tracer', gem_file))
97+
98+
env = { 'GEM_HOME' => gem_home, 'GEM_PATH' => gem_home, 'PATH' => "#{gem_home}/bin:#{ENV['PATH']}" }
99+
system(env, 'gem', 'install', '--local', gem_file, exception: true)
100+
101+
out_dir = File.join('test', 'tmp', 'gem_install_pure')
102+
FileUtils.rm_rf(out_dir)
103+
stdout, stderr, status = Open3.capture3(env, 'ruby', '-S', 'codetracer-pure-ruby-recorder', '--out-dir', out_dir, File.join('test', 'programs', 'addition.rb'))
104+
raise "pure_trace failed: #{stderr}" unless status.success?
105+
assert_equal "3\n", stdout
106+
assert File.exist?(File.join(out_dir, 'trace.json'))
107+
end
108+
end
109+
end
63110
end

0 commit comments

Comments
 (0)