74 lines
2.7 KiB
Elixir
74 lines
2.7 KiB
Elixir
defmodule BDS.ReleasePackagingTest do
|
|
use ExUnit.Case, async: false
|
|
|
|
alias BDS.ReleasePackaging
|
|
|
|
setup do
|
|
base_dir = Path.join(System.tmp_dir!(), "bds-release-packaging-#{System.unique_integer([:positive])}")
|
|
output_dir = Path.join(base_dir, "dist")
|
|
app_release = Path.join(base_dir, "rel/bds")
|
|
mcp_release = Path.join(base_dir, "rel/bds_mcp")
|
|
|
|
File.mkdir_p!(Path.join(app_release, "bin"))
|
|
File.mkdir_p!(Path.join(mcp_release, "mcp/bin"))
|
|
File.write!(Path.join(app_release, "bin/bds"), "app-release")
|
|
File.write!(Path.join(mcp_release, "mcp/bin/bds-mcp"), "mcp-release")
|
|
|
|
on_exit(fn -> File.rm_rf(base_dir) end)
|
|
|
|
%{base_dir: base_dir, output_dir: output_dir, app_release: app_release, mcp_release: mcp_release}
|
|
end
|
|
|
|
test "build metadata uses a clean future-app payload layout" do
|
|
metadata = ReleasePackaging.build_metadata(:macos, "0.1.0", "/tmp/out")
|
|
|
|
assert metadata.platform == :macos
|
|
assert metadata.version == "0.1.0"
|
|
assert metadata.archive_path =~ ".tar.gz"
|
|
assert metadata.payload_root =~ "bds2-macos-0.1.0"
|
|
assert metadata.resources_root == Path.join(metadata.payload_root, "resources")
|
|
assert metadata.mcp_root == Path.join(metadata.payload_root, "resources/mcp")
|
|
assert metadata.app_root == Path.join(metadata.payload_root, "app")
|
|
end
|
|
|
|
test "package creates payload manifest and copies app and mcp releases", context do
|
|
assert {:ok, metadata} =
|
|
ReleasePackaging.package(
|
|
platform: :macos,
|
|
version: "0.1.0",
|
|
output_dir: context.output_dir,
|
|
app_release_source: context.app_release,
|
|
mcp_release_source: context.mcp_release
|
|
)
|
|
|
|
assert File.exists?(Path.join(metadata.app_root, "bin/bds"))
|
|
assert File.exists?(Path.join(metadata.mcp_root, "bin/bds-mcp"))
|
|
assert File.exists?(Path.join(metadata.payload_root, "manifest.json"))
|
|
|
|
manifest = metadata.payload_root |> Path.join("manifest.json") |> File.read!() |> Jason.decode!()
|
|
|
|
assert manifest == %{
|
|
"platform" => "macos",
|
|
"version" => "0.1.0",
|
|
"layout" => %{
|
|
"app" => "app",
|
|
"resources" => "resources",
|
|
"mcp" => "resources/mcp"
|
|
}
|
|
}
|
|
end
|
|
|
|
test "package creates a platform archive for redistribution", context do
|
|
assert {:ok, metadata} =
|
|
ReleasePackaging.package(
|
|
platform: :windows,
|
|
version: "0.1.0",
|
|
output_dir: context.output_dir,
|
|
app_release_source: context.app_release,
|
|
mcp_release_source: context.mcp_release
|
|
)
|
|
|
|
assert File.exists?(metadata.archive_path)
|
|
assert String.ends_with?(metadata.archive_path, ".zip")
|
|
end
|
|
end |