From d8c030edddf93f43cfcc700790c5ac8c1e5b0c4c Mon Sep 17 00:00:00 2001 From: sabiwara Date: Tue, 4 Nov 2025 08:34:07 +0900 Subject: [PATCH] Fix how UTF8 env is stored in .app file --- lib/mix/lib/mix/tasks/compile.app.ex | 2 +- lib/mix/test/mix/tasks/compile.app_test.exs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/mix/lib/mix/tasks/compile.app.ex b/lib/mix/lib/mix/tasks/compile.app.ex index 4061f5cb22..a91f4afb96 100644 --- a/lib/mix/lib/mix/tasks/compile.app.ex +++ b/lib/mix/lib/mix/tasks/compile.app.ex @@ -192,7 +192,7 @@ defmodule Mix.Tasks.Compile.App do :application.load({:application, app, properties}) Mix.Project.ensure_structure() - File.write!(target, [contents, ?.]) + File.write!(target, IO.chardata_to_string([contents, ?.])) File.touch!(target, new_mtime) # If we just created the .app file, it will have touched diff --git a/lib/mix/test/mix/tasks/compile.app_test.exs b/lib/mix/test/mix/tasks/compile.app_test.exs index b89a6866dc..72fba4ae67 100644 --- a/lib/mix/test/mix/tasks/compile.app_test.exs +++ b/lib/mix/test/mix/tasks/compile.app_test.exs @@ -110,7 +110,7 @@ defmodule Mix.Tasks.Compile.AppTest do test "uses custom application settings" do in_fixture("no_mixfile", fn -> Mix.Project.push(CustomProject) - env = [foo: [:one, "two", 3, 4], bar: [{} | %{foo: :bar}]] + env = [foo: [:one, "two", 3, 4, "฿"], bar: [{} | %{foo: :bar}]] Process.put(:application, maxT: :infinity, @@ -132,7 +132,7 @@ defmodule Mix.Tasks.Compile.AppTest do assert properties[:applications] == [:kernel, :stdlib, :elixir, :logger, :ex_unit, :example_app, :mix] - assert properties[:env] == [foo: [:one, "two", 3, 4], bar: [{} | %{foo: :bar}]] + assert properties[:env] == [foo: [:one, "two", 3, 4, "฿"], bar: [{} | %{foo: :bar}]] refute Keyword.has_key?(properties, :extra_applications) end)