Incompatible with Distillery
Distillery (issue) is unable to archive a Phoenix app using graphql because some of the graphql .beam files' names exceed the 100 character limited imposed by erl_tar (source).
I was able to get Distillery working with this change.
I'm happy to submit it as a pull request if it is the correct fix.
Thanks for reporting this, suspect there might be a better solution than renaming modules.
I'm not even sure why the TestSupport module is in /lib and not /test so making that move might be better?
@joshprice from memory the TestSupport module is in /lib and not /test because of protocol consolidation and test suite performance reasons.
Of course, being there is not ideal. It would be good if we could have /test-lib or whatever that gets compiled and is available to tests but isn't shipped in the package.
You can ensure protocols are consolidated by adding test/support (or wherever) to elixirc_paths in mix.exs. Example:
defmodule MyApp.Project do
def project do
[name: :myapp,
...
elixirc_paths: elixirc_paths(Mix.env)]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
This will make sure all modules defined in test/support are compiled like any other module (including protocol consolidation).
I'm working on a PR for the OTP team to address the underlying issue - but in the short term, renaming modules to ensure they stay under the 100 char limit is the only workaround.
Thanks Paul, that's good to know! Do you have a link to the OTP PR by any chance?
I haven't submitted it yet, hoping to by the end of the day today - I'll update here once I've done so.
I've submitted a PR here, but it's limited to better error reporting, unfortunately the 100 byte filename limit is a hard one due to the need to maintain compatibility with GNU tar's implementation.