While taking a final look at instance.gen before releasing I noticed that the release_env task outputs messages in broken english. Upon further inspection it seems to have even more severe issues which, in my opinion, warrant it's at least temporary removal: - We do not explain what it actually does, anywhere. Neither the task docs nor instance.gen, nor installation instructions. - It does not respect FHS on OTP releases (uses /opt/pleroma/config even though we store the config in /etc/pleroma/config.exs). - It doesn't work on OTP releases, which is the main reason it exists. Neither systemd nor openrc service files for OTP include it. - It is not mentioned in install guides other than the ones for Debian and OTP releases.
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
# Pleroma: A lightweight social networking server
 | 
						|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 | 
						|
# SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
defmodule Mix.Tasks.Pleroma.InstanceTest do
 | 
						|
  use ExUnit.Case
 | 
						|
 | 
						|
  setup do
 | 
						|
    File.mkdir_p!(tmp_path())
 | 
						|
 | 
						|
    on_exit(fn ->
 | 
						|
      File.rm_rf(tmp_path())
 | 
						|
      static_dir = Pleroma.Config.get([:instance, :static_dir], "test/instance_static/")
 | 
						|
 | 
						|
      if File.exists?(static_dir) do
 | 
						|
        File.rm_rf(Path.join(static_dir, "robots.txt"))
 | 
						|
      end
 | 
						|
 | 
						|
      Pleroma.Config.put([:instance, :static_dir], static_dir)
 | 
						|
    end)
 | 
						|
 | 
						|
    :ok
 | 
						|
  end
 | 
						|
 | 
						|
  defp tmp_path do
 | 
						|
    "/tmp/generated_files/"
 | 
						|
  end
 | 
						|
 | 
						|
  test "running gen" do
 | 
						|
    mix_task = fn ->
 | 
						|
      Mix.Tasks.Pleroma.Instance.run([
 | 
						|
        "gen",
 | 
						|
        "--output",
 | 
						|
        tmp_path() <> "generated_config.exs",
 | 
						|
        "--output-psql",
 | 
						|
        tmp_path() <> "setup.psql",
 | 
						|
        "--domain",
 | 
						|
        "test.pleroma.social",
 | 
						|
        "--instance-name",
 | 
						|
        "Pleroma",
 | 
						|
        "--admin-email",
 | 
						|
        "admin@example.com",
 | 
						|
        "--notify-email",
 | 
						|
        "notify@example.com",
 | 
						|
        "--dbhost",
 | 
						|
        "dbhost",
 | 
						|
        "--dbname",
 | 
						|
        "dbname",
 | 
						|
        "--dbuser",
 | 
						|
        "dbuser",
 | 
						|
        "--dbpass",
 | 
						|
        "dbpass",
 | 
						|
        "--indexable",
 | 
						|
        "y",
 | 
						|
        "--db-configurable",
 | 
						|
        "y",
 | 
						|
        "--rum",
 | 
						|
        "y",
 | 
						|
        "--listen-port",
 | 
						|
        "4000",
 | 
						|
        "--listen-ip",
 | 
						|
        "127.0.0.1",
 | 
						|
        "--uploads-dir",
 | 
						|
        "test/uploads",
 | 
						|
        "--static-dir",
 | 
						|
        "./test/../test/instance/static/",
 | 
						|
        "--strip-uploads",
 | 
						|
        "y",
 | 
						|
        "--dedupe-uploads",
 | 
						|
        "n",
 | 
						|
        "--anonymize-uploads",
 | 
						|
        "n"
 | 
						|
      ])
 | 
						|
    end
 | 
						|
 | 
						|
    ExUnit.CaptureIO.capture_io(fn ->
 | 
						|
      mix_task.()
 | 
						|
    end)
 | 
						|
 | 
						|
    generated_config = File.read!(tmp_path() <> "generated_config.exs")
 | 
						|
    assert generated_config =~ "host: \"test.pleroma.social\""
 | 
						|
    assert generated_config =~ "name: \"Pleroma\""
 | 
						|
    assert generated_config =~ "email: \"admin@example.com\""
 | 
						|
    assert generated_config =~ "notify_email: \"notify@example.com\""
 | 
						|
    assert generated_config =~ "hostname: \"dbhost\""
 | 
						|
    assert generated_config =~ "database: \"dbname\""
 | 
						|
    assert generated_config =~ "username: \"dbuser\""
 | 
						|
    assert generated_config =~ "password: \"dbpass\""
 | 
						|
    assert generated_config =~ "configurable_from_database: true"
 | 
						|
    assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
 | 
						|
    assert generated_config =~ "filters: [Pleroma.Upload.Filter.ExifTool]"
 | 
						|
    assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
 | 
						|
    assert File.exists?(Path.expand("./test/instance/static/robots.txt"))
 | 
						|
  end
 | 
						|
 | 
						|
  defp generated_setup_psql do
 | 
						|
    ~s(CREATE USER dbuser WITH ENCRYPTED PASSWORD 'dbpass';\nCREATE DATABASE dbname OWNER dbuser;\n\\c dbname;\n--Extensions made by ecto.migrate that need superuser access\nCREATE EXTENSION IF NOT EXISTS citext;\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\nCREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";\nCREATE EXTENSION IF NOT EXISTS rum;\n)
 | 
						|
  end
 | 
						|
end
 |