lib/autoproj/test.rb in autoproj-2.14.0 vs lib/autoproj/test.rb in autoproj-2.15.0
- old
+ new
@@ -1,32 +1,32 @@
# simplecov must be loaded FIRST. Only the files required after it gets loaded
# will be profiled !!!
-if ENV['TEST_ENABLE_COVERAGE'] == '1'
+if ENV["TEST_ENABLE_COVERAGE"] == "1"
begin
- require 'simplecov'
+ require "simplecov"
SimpleCov.start do
- command_name 'master'
+ command_name "master"
add_filter "/test/"
end
rescue LoadError
- require 'autoproj'
+ require "autoproj"
Autoproj.warn "coverage is disabled because the 'simplecov' gem cannot be loaded"
rescue Exception => e
- require 'autoproj'
+ require "autoproj"
Autoproj.warn "coverage is disabled: #{e.message}"
end
end
-require 'minitest/autorun'
-require 'autoproj'
-require 'flexmock/minitest'
+require "minitest/autorun"
+require "autoproj"
+require "flexmock/minitest"
FlexMock.partials_are_based = true
-require 'minitest/spec'
+require "minitest/spec"
-if ENV['TEST_ENABLE_PRY'] != '0'
+if ENV["TEST_ENABLE_PRY"] != "0"
begin
- require 'pry'
+ require "pry"
rescue Exception
Autoproj.warn "debugging is disabled because the 'pry' gem cannot be loaded"
end
end
@@ -53,26 +53,28 @@
attr_reader :ws_package_managers
# The workspace created by the last call to #ws_create
attr_reader :ws
def setup
- if ENV['AUTOPROJ_CURRENT_ROOT']
+ if ENV["AUTOPROJ_CURRENT_ROOT"]
raise "cannot have a workspace's env.sh loaded while running the "\
"Autoproj test suite"
end
+ Autobuild.progress_display_mode = :newline
+
if defined?(Autoproj::CLI::Main)
Autoproj::CLI::Main.default_report_on_package_failures = :raise
end
FileUtils.rm_rf fixture_gem_home
@gem_server_pid = nil
@tmpdir = Array.new
@ws = nil
@ws_package_managers = Hash.new
Autobuild.logdir = make_tmpdir
- ws_define_package_manager 'os'
- ws_define_package_manager 'os_indep'
+ ws_define_package_manager "os"
+ ws_define_package_manager "os_indep"
Autobuild.progress_display_period = 0
super
end
@@ -89,78 +91,83 @@
FileUtils.rm_rf fixture_gem_home
if defined?(Autoproj::CLI::Main)
Autoproj::CLI::Main.default_report_on_package_failures = nil
end
- if ENV.delete('AUTOPROJ_CURRENT_ROOT')
+ if ENV.delete("AUTOPROJ_CURRENT_ROOT")
raise "AUTOPROJ_CURRENT_ROOT has been set by this test !!!!"
end
end
def data_path(*args)
File.expand_path(File.join(*args),
- File.join(__dir__, '..', '..', 'test', 'data'))
+ File.join(__dir__, "..", "..", "test", "data"))
end
def create_bootstrap
ws_create
end
def skip_long_tests?
- ENV['AUTOPROJ_SKIP_LONG_TESTS'] == '1'
+ ENV["AUTOPROJ_SKIP_LONG_TESTS"] == "1"
end
def make_tmpdir
dir = Dir.mktmpdir
@tmpdir << dir
dir
end
def scripts_dir
- File.expand_path(File.join('..', '..', 'test', 'scripts'), __dir__)
+ File.expand_path(File.join("..", "..", "test", "scripts"), __dir__)
end
def find_gem_dir(gem_name)
Bundler.definition.specs.each do |spec|
return spec if spec.name == gem_name
end
nil
end
def autoproj_gemfile_to_local_checkout
- autoproj_dir = find_gem_dir('autoproj').full_gem_path
- autobuild_dir = find_gem_dir('autobuild').full_gem_path
- "source \"http://localhost:8808\"
-gem 'autoproj', path: '#{autoproj_dir}'
-gem 'autobuild', path: '#{autobuild_dir}'
-"
+ autoproj_dir = find_gem_dir("autoproj").full_gem_path
+ autobuild_dir = find_gem_dir("autobuild").full_gem_path
+ <<~GEMFILE
+ source "https://rubygems.org"
+ gem "autoproj", path: "#{autoproj_dir}"
+ gem "autobuild", path: "#{autobuild_dir}"
+ GEMFILE
end
def invoke_test_script(name, *arguments,
- dir: nil,
- gemfile_source: nil,
- use_autoproj_from_rubygems: (ENV['USE_AUTOPROJ_FROM_RUBYGEMS'] == '1'),
- interactive: true,
- seed_config: File.join(scripts_dir, 'seed-config.yml'),
- env: Hash.new, display_output: false, copy_from: nil,
- **system_options)
- package_base_dir = File.expand_path(File.join('..', '..'), __dir__)
+ dir: make_tmpdir,
+ gemfile_source: nil,
+ use_autoproj_from_rubygems: (ENV["USE_AUTOPROJ_FROM_RUBYGEMS"] == "1"),
+ interactive: true,
+ seed_config: File.join(scripts_dir, "seed-config.yml"),
+ env: {}, display_output: false, copy_from: nil,
+ **system_options)
+ package_base_dir = File.expand_path(File.join("..", ".."), __dir__)
script = File.expand_path(name, scripts_dir)
unless File.file?(script)
raise ArgumentError, "no test script #{name} in #{scripts_dir}"
end
- arguments << '--seed-config' << seed_config if seed_config
- dir ||= make_tmpdir
+ if env["HOME"]
+ @home_dir = env["HOME"]
+ else
+ env["HOME"] = (@home_dir ||= make_tmpdir)
+ end
+ arguments << "--seed-config" << seed_config if seed_config
if gemfile_source || !use_autoproj_from_rubygems
- gemfile_path = File.join(dir, 'Gemfile-dev')
- File.open(gemfile_path, 'w') do |io|
+ gemfile_path = File.join(dir, "Gemfile-dev")
+ File.open(gemfile_path, "w") do |io|
io.puts(gemfile_source || autoproj_gemfile_to_local_checkout)
end
- arguments << "--gemfile" << gemfile_path << "--gem-source" << "http://localhost:8808"
+ arguments << "--gemfile" << gemfile_path
end
arguments << "--no-interactive" unless interactive
if copy_from
@@ -171,17 +178,18 @@
end
end
result = nil
stdout, stderr = capture_subprocess_io do
default_env = Hash[
- 'TEST_COMMAND_NAME' => to_s.gsub(/[^\w]/, '_'),
- 'PACKAGE_BASE_DIR' => package_base_dir,
- 'RUBY' => Gem.ruby
+ "TEST_COMMAND_NAME" => to_s.gsub(/[^\w]/, "_"),
+ "PACKAGE_BASE_DIR" => package_base_dir,
+ "RUBY" => Gem.ruby
]
result = Autoproj.bundler_unbundled_system(
default_env.merge(env), script, *arguments,
- in: :close, **Hash[chdir: dir].merge(system_options))
+ in: :close, **Hash[chdir: dir].merge(system_options)
+ )
end
if !result
puts stdout
puts stderr
@@ -192,63 +200,68 @@
end
[dir, stdout, stderr]
end
def fixture_gem_home
- File.join(__dir__, '..', '..', 'vendor', 'test_gem_home')
+ File.join(__dir__, "..", "..", "vendor", "test_gem_home")
end
def prepare_fixture_gem_home
FileUtils.rm_rf fixture_gem_home
+ FileUtils.mkdir_p File.dirname(fixture_gem_home)
bundled_gems_path = File.expand_path(File.join("..", ".."),
- find_gem_dir('utilrb').full_gem_path)
+ find_gem_dir("utilrb").full_gem_path)
FileUtils.cp_r bundled_gems_path, fixture_gem_home
- vendor = File.join(__dir__, '..', '..', 'vendor')
+ vendor = File.join(__dir__, "..", "..", "vendor")
bundler_filename = "bundler-#{Bundler::VERSION}.gem"
cached_bundler_gem = File.join(vendor, bundler_filename)
unless File.file?(cached_bundler_gem)
FileUtils.mkdir_p vendor
Autoproj.bundler_unbundled_system(
- Ops::Install.guess_gem_program, 'fetch', '-v',
- Bundler::VERSION, 'bundler', chdir: vendor)
+ Ops::Install.guess_gem_program, "fetch", "-v",
+ Bundler::VERSION, "bundler", chdir: vendor
+ )
- unless File.file?(bundler_filename)
- raise "cannot download the bundler gem"
+ unless File.file?(cached_bundler_gem)
+ existing = Dir.enum_for(:glob, File.join(vendor, "*")).to_a.sort
+ raise "cannot download the bundler gem. "\
+ "Expected #{bundler_filename}, found: #{existing.join(', ')}"
end
end
capture_subprocess_io do
Autoproj.bundler_unbundled_system(
- Hash['GEM_HOME' => fixture_gem_home, 'GEM_PATH' => nil],
- Ops::Install.guess_gem_program, 'install', '--no-document',
- cached_bundler_gem)
+ Hash["GEM_HOME" => fixture_gem_home, "GEM_PATH" => nil],
+ Ops::Install.guess_gem_program, "install", "--no-document",
+ cached_bundler_gem
+ )
end
end
def start_gem_server(path = fixture_gem_home)
- require 'socket'
- require 'rubygems/server'
+ require "socket"
+ require "rubygems/server"
if @gem_server_pid
- raise ArgumentError, "#start_gem_server already called, "\
- "call stop_gem_server before calling start_gem_server again"
+ raise ArgumentError,
+ "#start_gem_server already called, "\
+ "call stop_gem_server before calling start_gem_server again"
end
@gem_server_pid = spawn(
- Hash['RUBYOPT' => nil],
- Gem.ruby, Ops::Install.guess_gem_program, 'server',
- '--quiet', '--dir', path, out: :close, err: :close)
+ Hash["RUBYOPT" => nil],
+ Gem.ruby, Ops::Install.guess_gem_program, "server",
+ "--quiet", "--dir", path, out: :close, err: :close
+ )
loop do
- begin
- TCPSocket.new('127.0.0.1', 8808)
- break
- rescue Errno::ECONNREFUSED # rubocop:disable Lint/HandleExceptions
- end
+ TCPSocket.new("127.0.0.1", 8808)
+ break
+ rescue Errno::ECONNREFUSED
end
end
def stop_gem_server
- Process.kill 'INT', @gem_server_pid
+ Process.kill "INT", @gem_server_pid
Process.waitpid @gem_server_pid
@gem_server_pid = nil
end
def capture_deprecation_message
@@ -262,21 +275,22 @@
end
def find_bundled_gem_path(bundler, gem_name, gemfile)
out_r, out_w = IO.pipe
result = Autoproj.bundler_unbundled_system(
- bundler, 'show', gem_name,
+ bundler, "show", gem_name,
out: out_w,
- chdir: File.dirname(gemfile))
+ chdir: File.dirname(gemfile)
+ )
out_w.close
output = out_r.read.chomp
assert result, "bundler show #{gem_name} failed, output: '#{output}'"
output
end
- def workspace_env(varname)
- _, stdout, = invoke_test_script 'display-env.sh', varname, dir: install_dir
+ def workspace_env(dir, varname)
+ _, stdout, = invoke_test_script "display-env.sh", varname, dir: dir
stdout.chomp
end
def in_ws
Dir.chdir(@ws.root_dir) do
@@ -296,66 +310,71 @@
ws_package_managers[name] = manager
end
def ws_create_os_package_resolver
@ws_os_package_resolver = OSPackageResolver.new(
- operating_system: [['test_os_family'], ['test_os_version']],
+ operating_system: [["test_os_family"], ["test_os_version"]],
package_managers: ws_package_managers.keys,
- os_package_manager: 'os')
+ os_package_manager: "os"
+ )
end
def ws_create(dir = make_tmpdir, partial_config: false)
- require 'autoproj/ops/main_config_switcher'
+ require "autoproj/ops/main_config_switcher"
FileUtils.cp_r Ops::MainConfigSwitcher::MAIN_CONFIGURATION_TEMPLATE,
- File.join(dir, 'autoproj')
- FileUtils.mkdir_p File.join(dir, '.autoproj')
+ File.join(dir, "autoproj")
+ FileUtils.mkdir_p File.join(dir, ".autoproj")
ws_create_os_package_resolver
@ws = Workspace.new(
dir, os_package_resolver: ws_os_package_resolver,
- package_managers: ws_package_managers)
+ package_managers: ws_package_managers
+ )
unless partial_config
- ws.config.set 'osdeps_mode', 'all'
- ws.config.set 'apt_dpkg_update', true
+ ws.config.set "osdeps_mode", "all"
+ ws.config.set "apt_dpkg_update", true
end
- ws.config.set 'GITHUB', 'http,ssh', true
- ws.config.set 'GITORIOUS', 'http,ssh', true
- ws.config.set 'gems_install_path', File.join(dir, 'gems')
+ ws.config.set "GITHUB", "http,ssh", true
+ ws.config.set "GITORIOUS", "http,ssh", true
+ ws.config.set "gems_install_path", File.join(dir, "gems")
ws.prefix_dir = make_tmpdir
ws.config.save
# Make a valid (albeit empty) Gemfile
- File.open(File.join(ws.dot_autoproj_dir, 'Gemfile'), 'w').close
+ File.open(File.join(ws.dot_autoproj_dir, "Gemfile"), "w").close
ws
end
def ws_clear_layout
ws.manifest.clear_layout
end
def ws_define_package_set(
- name, vcs = VCSDefinition.from_raw({ type: 'none' }), **options
+ name, vcs = VCSDefinition.from_raw({ type: "none" }),
+ raw_local_dir: PackageSet.raw_local_dir_of(ws, vcs)
)
- package_set = PackageSet.new(ws, vcs, name: name, **options)
+ package_set = PackageSet.new(
+ ws, vcs, name: name, raw_local_dir: raw_local_dir
+ )
ws.manifest.register_package_set(package_set)
package_set
end
def ws_create_local_package_set(name, path, source_data: Hash.new, **options)
- vcs = VCSDefinition.from_raw(type: 'local', url: path)
+ vcs = VCSDefinition.from_raw({ type: "local", url: path })
package_set = PackageSet.new(ws, vcs, name: name, **options)
FileUtils.mkdir_p(path)
- File.open(File.join(path, 'source.yml'), 'w') do |io|
- YAML.dump(Hash['name' => name].merge(source_data), io)
+ File.open(File.join(path, "source.yml"), "w") do |io|
+ YAML.dump(Hash["name" => name].merge(source_data), io)
end
ws.manifest.register_package_set(package_set)
package_set
end
def ws_add_package_set_to_layout(
- name, vcs = VCSDefinition.from_raw({ type: 'none' }), **options
+ name, vcs = VCSDefinition.from_raw({ type: "none" }), **options
)
package_set = ws_define_package_set(name, vcs, **options)
ws.manifest.add_package_set_to_layout(package_set)
package_set
end
@@ -376,20 +395,20 @@
ws.manifest.add_package_to_layout(pkg_name)
end
end
def ws_define_package(package_type, package_name,
- package_set: ws.manifest.main_package_set,
- create: true, &block)
+ package_set: ws.manifest.main_package_set,
+ create: true, &block)
package = Autobuild.send(package_type, package_name)
ws_setup_package(
package, package_set: package_set, create: create, &block
)
end
def ws_setup_package(package, package_set: ws.manifest.main_package_set,
- create: true)
+ create: true)
package.srcdir = File.join(ws.root_dir, package.name.to_s)
FileUtils.mkdir_p package.srcdir if create
autoproj_package = ws.register_package(package, nil, package_set)
yield(package) if block_given?
autoproj_package
@@ -397,18 +416,22 @@
def ws_define_package_vcs(package, vcs_spec)
package.package_set.add_version_control_entry(package.name, vcs_spec)
end
+ def ws_resolve_vcs(package)
+ package.vcs = ws.manifest.importer_definition_for(package)
+ end
+
def ws_define_package_overrides(package, package_set, vcs_spec)
package_set.add_overrides_entry(package.name, vcs_spec)
end
def ws_add_package_to_layout(package_type, package_name,
- package_set: ws.manifest.main_package_set, &block)
+ package_set: ws.manifest.main_package_set, &block)
pkg = ws_define_package(package_type, package_name,
- package_set: package_set, &block)
+ package_set: package_set, &block)
ws.manifest.add_package_to_layout(pkg)
pkg
end
def ws_set_version_control_entry(package, entry)
@@ -425,58 +448,58 @@
FileUtils.mkdir_p srcdir
elsif File.directory?(srcdir)
FileUtils.rm_rf srcdir
end
package.autobuild.builddir = builddir =
- File.join(ws.root_dir, 'build', package.name)
+ File.join(ws.root_dir, "build", package.name)
package.autobuild.prefix = prefix =
- File.join(ws.root_dir, 'prefix', package.name)
+ File.join(ws.root_dir, "prefix", package.name)
[srcdir, builddir, prefix]
end
def ws_create_git_package_set(name, source_data = Hash.new)
dir = make_tmpdir
- unless system('git', 'init', chdir: dir, out: :close)
+ unless system("git", "init", chdir: dir, out: :close)
raise "failed to run git init"
end
- File.open(File.join(dir, 'source.yml'), 'w') do |io|
- YAML.dump(Hash['name' => name].merge(source_data), io)
+ File.open(File.join(dir, "source.yml"), "w") do |io|
+ YAML.dump(Hash["name" => name].merge(source_data), io)
end
- unless system('git', 'add', 'source.yml', chdir: dir, out: :close)
+ unless system("git", "add", "source.yml", chdir: dir, out: :close)
raise "failed to add the source.yml"
end
- unless system('git', 'commit', '-m', 'add source.yml',
+ unless system("git", "commit", "-m", "add source.yml",
chdir: dir, out: :close)
raise "failed to commit the source.yml"
end
dir
end
def ws_create_package_set_file(pkg_set, name, content)
path = File.join(pkg_set.raw_local_dir, name)
FileUtils.mkdir_p File.dirname(path)
- File.open(path, 'w') do |io|
+ File.open(path, "w") do |io|
io.write content
end
path
end
def ws_create_package_file(pkg, name, content)
path = File.join(pkg.autobuild.srcdir, name)
FileUtils.mkdir_p File.dirname(path)
- File.open(path, 'w') do |io|
+ File.open(path, "w") do |io|
io.write content
end
path
end
def gemfile_aruba
- base_dir = File.expand_path('../../', __dir__)
- gemfile_path = File.join(base_dir, 'tmp', 'Gemfile.local')
- File.open(gemfile_path, 'w') do |io|
+ base_dir = File.expand_path("../../", __dir__)
+ gemfile_path = File.join(base_dir, "tmp", "Gemfile.local")
+ File.open(gemfile_path, "w") do |io|
io.write <<~GEMFILE
source 'https://rubygems.org'
gem 'autoproj', path: '#{base_dir}'
GEMFILE
end