Class: Ace::TestSupport::SandboxPackageCopy
- Inherits:
-
Object
- Object
- Ace::TestSupport::SandboxPackageCopy
- Defined in:
- lib/ace/test_support/sandbox_package_copy.rb
Overview
Creates deterministic E2E sandboxes and copies package sources into them.
Constant Summary collapse
- DEFAULT_SANDBOX_BASE =
".ace-local/test-e2e"
Instance Method Summary collapse
-
#initialize(source_root: Dir.pwd, sandbox_base: DEFAULT_SANDBOX_BASE) ⇒ SandboxPackageCopy
constructor
A new instance of SandboxPackageCopy.
-
#prepare(package_name:, sandbox_name: nil, sandbox_root: nil) ⇒ Hash
Prepare a sandbox and copy a package into it.
Constructor Details
#initialize(source_root: Dir.pwd, sandbox_base: DEFAULT_SANDBOX_BASE) ⇒ SandboxPackageCopy
Returns a new instance of SandboxPackageCopy.
11 12 13 14 |
# File 'lib/ace/test_support/sandbox_package_copy.rb', line 11 def initialize(source_root: Dir.pwd, sandbox_base: DEFAULT_SANDBOX_BASE) @source_root = File.(source_root) @sandbox_base = File.(sandbox_base, @source_root) end |
Instance Method Details
#prepare(package_name:, sandbox_name: nil, sandbox_root: nil) ⇒ Hash
Prepare a sandbox and copy a package into it.
Exactly one of sandbox_name or sandbox_root must be provided.
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 |
# File 'lib/ace/test_support/sandbox_package_copy.rb', line 24 def prepare(package_name:, sandbox_name: nil, sandbox_root: nil) package = package_name.to_s.strip raise ArgumentError, "package_name is required" if package.empty? root = resolve_sandbox_root(sandbox_name: sandbox_name, sandbox_root: sandbox_root) source_package = File.join(@source_root, package) target_package = File.join(root, package) unless File.directory?(source_package) raise ArgumentError, "Package source directory not found: #{source_package}" end FileUtils.mkdir_p(root) FileUtils.cp_r(source_package, target_package) unless File.exist?(target_package) { sandbox_root: root, package_root: target_package, source_root: @source_root, env: { "PROJECT_ROOT_PATH" => root, "ACE_E2E_SOURCE_ROOT" => @source_root } } end |