Skip to content
This repository has been archived by the owner on Jun 11, 2023. It is now read-only.

Commit

Permalink
Merge 5ba6807 into f768e02
Browse files Browse the repository at this point in the history
  • Loading branch information
renatomassaro committed Feb 28, 2018
2 parents f768e02 + 5ba6807 commit 6cb39b0
Show file tree
Hide file tree
Showing 8 changed files with 341 additions and 139 deletions.
10 changes: 9 additions & 1 deletion lib/hell/hell/macros.ex
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,17 @@ defmodule HELL.Macros do
@doc """
On dev and prod environments, `hespawn` is the exact same thing as `spawn`.
On test environments, `hespawn` will call the given function synchronously.
The flag `HELIX_FORCE_SYNC` may be used to force the synchronous behaviour,
especially useful for specific `:dev` tests.
"""
defmacro hespawn(fun) do
if Mix.env == :test do
force_sync? = System.get_env("HELIX_FORCE_SYNC") || false

if Mix.env == :prod and force_sync?,
do: raise "Can't set `HELIX_FORCE_SYNC` on prod"

if Mix.env == :test or force_sync? do
quote do
apply(unquote(fun), [])
end
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ defmodule Helix.Mixfile do
{:ecto, "~> 2.2.8"},
{:postgrex, "~> 0.13.4"},

{:helf, "~> 0.0.2"},
{:helf, "~> 0.0.3"},
{:poison, "~> 3.1"},

{:comeonin, "~> 4.0.3"},
Expand Down
4 changes: 2 additions & 2 deletions mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, optional: false]}]},
"gettext": {:hex, :gettext, "0.13.1", "5e0daf4e7636d771c4c71ad5f3f53ba09a9ae5c250e1ab9c42ba9edccc476263", [:mix], []},
"hackney": {:hex, :hackney, "1.11.0", "4951ee019df102492dabba66a09e305f61919a8a183a7860236c0fde586134b6", [:rebar3], [{:certifi, "2.0.0", [hex: :certifi, optional: false]}, {:idna, "5.1.0", [hex: :idna, optional: false]}, {:metrics, "1.0.1", [hex: :metrics, optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, optional: false]}]},
"helf": {:hex, :helf, "0.0.2", "3de3ad3c0344853bc84b6480db0ab8e0841ff78e3d2875eabc3059567c5f2240", [:mix], [{:bamboo, "~> 0.8", [hex: :bamboo, optional: false]}, {:cowboy, "~> 1.1.2", [hex: :cowboy, optional: false]}, {:poison, "~> 3.1.0", [hex: :poison, optional: false]}]},
"helf": {:hex, :helf, "0.0.3", "fbba9b2fa8e2dbd8377fc530b1898a7c760fdba4e0832ea4ffc223847fe798b1", [:mix], [{:bamboo, "~> 0.8", [hex: :bamboo, optional: false]}, {:cowboy, "~> 1.1.2", [hex: :cowboy, optional: false]}, {:poison, "~> 3.1.0", [hex: :poison, optional: false]}]},
"idna": {:hex, :idna, "5.1.0", "d72b4effeb324ad5da3cab1767cb16b17939004e789d8c0ad5b70f3cea20c89a", [:rebar3], [{:unicode_util_compat, "0.3.1", [hex: :unicode_util_compat, optional: false]}]},
"inch_ex": {:hex, :inch_ex, "0.5.6", "418357418a553baa6d04eccd1b44171936817db61f4c0840112b420b8e378e67", [:mix], [{:poison, "~> 1.5 or ~> 2.0 or ~> 3.0", [hex: :poison, optional: false]}]},
"jsx": {:hex, :jsx, "2.8.3", "a05252d381885240744d955fbe3cf810504eb2567164824e19303ea59eef62cf", [:mix, :rebar3], []},
Expand All @@ -33,7 +33,7 @@
"msgpax": {:hex, :msgpax, "1.1.0", "e31625e256db2decca1ae2b841f21b4d2483b1332649ce3ebc96c7ff7a4986e3", [:mix], [{:plug, "~> 1.0", [hex: :plug, optional: true]}]},
"phoenix": {:hex, :phoenix, "1.3.0", "1c01124caa1b4a7af46f2050ff11b267baa3edb441b45dbf243e979cd4c5891b", [:mix], [{:cowboy, "~> 1.0", [hex: :cowboy, optional: true]}, {:phoenix_pubsub, "~> 1.0", [hex: :phoenix_pubsub, optional: false]}, {:plug, "~> 1.3.3 or ~> 1.4", [hex: :plug, optional: false]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, optional: false]}]},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "1.0.2", "bfa7fd52788b5eaa09cb51ff9fcad1d9edfeb68251add458523f839392f034c1", [:mix], []},
"plug": {:hex, :plug, "1.4.3", "236d77ce7bf3e3a2668dc0d32a9b6f1f9b1f05361019946aae49874904be4aed", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1", [hex: :cowboy, optional: true]}, {:mime, "~> 1.0", [hex: :mime, optional: false]}]},
"plug": {:hex, :plug, "1.4.5", "7b13869283fff6b8b21b84b8735326cc012c5eef8607095dc6ee24bd0a273d8e", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1", [hex: :cowboy, optional: true]}, {:mime, "~> 1.0", [hex: :mime, optional: false]}]},
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], []},
"poolboy": {:hex, :poolboy, "1.5.1", "6b46163901cfd0a1b43d692657ed9d7e599853b3b21b95ae5ae0a777cf9b6ca8", [:rebar], []},
"postgrex": {:hex, :postgrex, "0.13.4", "f58e319c5451bfda86ba6a45ce6dca311193d0a9861323d0d16e8d02e25adc41", [:mix], [{:connection, "~> 1.0", [hex: :connection, optional: false]}, {:db_connection, "~> 1.1", [hex: :db_connection, optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, optional: false]}]},
Expand Down
128 changes: 1 addition & 127 deletions test/support/maroto.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,138 +8,12 @@ defmodule Helix.Maroto do
defmacro __using__(_) do
quote do

unquote(marote_helix())
unquote(marote_aliases())
unquote(marote_helpers())
unquote(marote_tools())

use Helix.Maroto.Aliases
use Helix.Maroto.Functions

:noix

end
end

defp marote_helix do
quote do

alias Helix.Event
alias Helix.Core.Validator

alias Helix.Account.Action.Flow.Account, as: AccountFlow
alias Helix.Account.Model.Account
alias Helix.Account.Public.Account, as: AccountPublic
alias Helix.Account.Public.Index, as: AccountIndex
alias Helix.Account.Query.Account, as: AccountQuery

alias Helix.Cache.Action.Cache, as: CacheAction
alias Helix.Cache.Query.Cache, as: CacheQuery

alias Helix.Entity.Action.Database, as: DatabaseAction
alias Helix.Entity.Action.Entity, as: EntityAction
alias Helix.Entity.Model.Entity
alias Helix.Entity.Query.Database, as: DatabaseQuery
alias Helix.Entity.Query.Entity, as: EntityQuery

alias Helix.Log.Model.Log
alias Helix.Log.Public.Index, as: LogIndex
alias Helix.Log.Query.Log, as: LogQuery

alias Helix.Network.Action.Tunnel, as: TunnelAction
alias Helix.Network.Action.DNS, as: DNSAction
alias Helix.Network.Model.Connection
alias Helix.Network.Model.Link
alias Helix.Network.Model.Network
alias Helix.Network.Model.Tunnel
alias Helix.Network.Query.DNS, as: DNSQuery
alias Helix.Network.Query.Network, as: NetworkQuery
alias Helix.Network.Query.Tunnel, as: TunnelQuery
alias Helix.Network.Query.Web, as: WebQuery

alias Helix.Process.Model.Process
alias Helix.Process.Query.Process, as: ProcessQuery

alias Helix.Server.Action.Flow.Server, as: ServerFlow
alias Helix.Server.Model.Server
alias Helix.Server.Query.Server, as: ServerQuery
alias Helix.Server.Public.Index, as: ServerIndex
alias Helix.Server.Public.Server, as: ServerPublic

alias Helix.Software.Model.File
alias Helix.Software.Model.Software
alias Helix.Software.Public.File, as: FilePublic
alias Helix.Software.Public.Index, as: SoftwareIndex
alias Helix.Software.Query.File, as: FileQuery
alias Helix.Software.Query.Storage, as: StorageQuery
alias Helix.Software.Query.PublicFTP, as: PublicFTPQuery

alias Helix.Story.Action.Story, as: StoryAction
alias Helix.Story.Model.Step
alias Helix.Story.Public.Story, as: StoryPublic
alias Helix.Story.Query.Story, as: StoryQuery

alias Helix.Universe.Bank.Action.Flow.BankAccount, as: BankAccountFlow
alias Helix.Universe.Bank.Action.Flow.BankTransfer, as: BankTransferFlow
alias Helix.Universe.Bank.Model.ATM
alias Helix.Universe.Bank.Model.Bank
alias Helix.Universe.Bank.Model.BankAccount
alias Helix.Universe.Bank.Model.BankToken
alias Helix.Universe.Bank.Model.BankTransfer
alias Helix.Universe.Bank.Query.Bank, as: BankQuery

alias Helix.Universe.NPC.Model.NPC
alias Helix.Universe.NPC.Query.NPC, as: NPCQuery

end
end

defp marote_aliases do
quote do

alias HELL.TestHelper.Random
alias Helix.Test.Account.Setup, as: AccountSetup
alias Helix.Test.Channel.Setup, as: ChannelSetup
alias Helix.Test.Entity.Setup, as: EntitySetup
alias Helix.Test.Event.Setup, as: EventSetup
alias Helix.Test.Log.Setup, as: LogSetup
alias Helix.Test.Network.Setup, as: NetworkSetup
alias Helix.Test.Process.Setup, as: ProcessSetup
alias Helix.Test.Server.Setup, as: ServerSetup
alias Helix.Test.Software.Setup, as: SoftwareSetup
alias Helix.Test.Software.Setup.PFTP, as: PFTPSetup
alias Helix.Test.Story.Setup, as: StorySetup
alias Helix.Test.Universe.Bank.Setup, as: BankSetup
alias Helix.Test.Universe.NPC.Setup, as: NPCSetup

end
end

defp marote_helpers do
quote do

alias Helix.Test.Account.Helper, as: AccountHelper
alias Helix.Test.Channel.Helper, as: ChannelHelper
alias Helix.Test.Entity.Helper, as: EntityHelper
alias Helix.Test.Event.Helper, as: EventHelper
alias Helix.Test.Log.Helper, as: LogHelper
alias Helix.Test.Network.Helper, as: NetworkHelper
alias Helix.Test.Process.Helper, as: ProcessHelper
alias Helix.Test.Server.Helper, as: ServerHelper
alias Helix.Test.Software.Helper, as: SoftwareHelper
alias Helix.Test.Story.Helper, as: StoryHelper
alias Helix.Test.Universe.Bank.Helper, as: BankHelper
alias Helix.Test.Universe.NPC.Helper, as: NPCHelper

end
end

defp marote_tools do
quote do

alias Helix.Test.Channel.Interceptor

Interceptor.start_link()

end
end
end
4 changes: 2 additions & 2 deletions test/support/maroto.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ ed -s $HELIX_ROOT/mix.exs <<< $',s/(:test)/(_)/g\nw'
# Create temporary IEx file with instructions
echo "IO.puts \"\n\nType 'use Helix.Maroto' for maximum marotagem!!11!\n\n\"" > $IEX_FILE
# Run Helix interactively
iex -S mix
# Force synchronous behaviour on HELF and run Helix interactively
HELF_FORCE_SYNC=1 iex -S mix
# Clean up any changes
git checkout $MIX_FILE
Expand Down
138 changes: 138 additions & 0 deletions test/support/maroto/aliases.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
defmodule Helix.Maroto.Aliases do

defmacro __using__(_) do
quote do

unquote(marote_helix())
unquote(marote_aliases())
unquote(marote_helpers())
unquote(marote_tools())

end
end

defp marote_helix do
quote do

alias Helix.Event
alias Helix.Core.Validator

alias Helix.Account.Action.Flow.Account, as: AccountFlow
alias Helix.Account.Model.Account
alias Helix.Account.Public.Account, as: AccountPublic
alias Helix.Account.Public.Index, as: AccountIndex
alias Helix.Account.Query.Account, as: AccountQuery

alias Helix.Cache.Action.Cache, as: CacheAction
alias Helix.Cache.Query.Cache, as: CacheQuery

alias Helix.Entity.Action.Database, as: DatabaseAction
alias Helix.Entity.Action.Entity, as: EntityAction
alias Helix.Entity.Model.Entity
alias Helix.Entity.Query.Database, as: DatabaseQuery
alias Helix.Entity.Query.Entity, as: EntityQuery

alias Helix.Log.Model.Log
alias Helix.Log.Public.Index, as: LogIndex
alias Helix.Log.Query.Log, as: LogQuery

alias Helix.Network.Action.Tunnel, as: TunnelAction
alias Helix.Network.Action.DNS, as: DNSAction
alias Helix.Network.Action.Flow.Tunnel, as: TunnelFlow
alias Helix.Network.Model.Connection
alias Helix.Network.Model.Link
alias Helix.Network.Model.Network
alias Helix.Network.Model.Tunnel
alias Helix.Network.Query.DNS, as: DNSQuery
alias Helix.Network.Query.Network, as: NetworkQuery
alias Helix.Network.Query.Tunnel, as: TunnelQuery
alias Helix.Network.Query.Web, as: WebQuery

alias Helix.Process.Model.Process
alias Helix.Process.Query.Process, as: ProcessQuery

alias Helix.Server.Action.Flow.Server, as: ServerFlow
alias Helix.Server.Model.Server
alias Helix.Server.Query.Server, as: ServerQuery
alias Helix.Server.Public.Index, as: ServerIndex
alias Helix.Server.Public.Server, as: ServerPublic

alias Helix.Software.Model.File
alias Helix.Software.Model.Software
alias Helix.Software.Public.File, as: FilePublic
alias Helix.Software.Public.Index, as: SoftwareIndex
alias Helix.Software.Query.File, as: FileQuery
alias Helix.Software.Query.Storage, as: StorageQuery
alias Helix.Software.Query.PublicFTP, as: PublicFTPQuery

alias Helix.Story.Action.Story, as: StoryAction
alias Helix.Story.Model.Step
alias Helix.Story.Public.Story, as: StoryPublic
alias Helix.Story.Query.Story, as: StoryQuery

alias Helix.Universe.Bank.Action.Flow.BankAccount, as: BankAccountFlow
alias Helix.Universe.Bank.Action.Flow.BankTransfer, as: BankTransferFlow
alias Helix.Universe.Bank.Model.ATM
alias Helix.Universe.Bank.Model.Bank
alias Helix.Universe.Bank.Model.BankAccount
alias Helix.Universe.Bank.Model.BankToken
alias Helix.Universe.Bank.Model.BankTransfer
alias Helix.Universe.Bank.Query.Bank, as: BankQuery

alias Helix.Universe.NPC.Model.NPC
alias Helix.Universe.NPC.Query.NPC, as: NPCQuery

end
end

defp marote_aliases do
quote do

alias HELL.TestHelper.Random
alias Helix.Test.Account.Setup, as: AccountSetup
alias Helix.Test.Channel.Setup, as: ChannelSetup
alias Helix.Test.Entity.Setup, as: EntitySetup
alias Helix.Test.Event.Setup, as: EventSetup
alias Helix.Test.Log.Setup, as: LogSetup
alias Helix.Test.Network.Setup, as: NetworkSetup
alias Helix.Test.Process.Setup, as: ProcessSetup
alias Helix.Test.Server.Setup, as: ServerSetup
alias Helix.Test.Software.Setup, as: SoftwareSetup
alias Helix.Test.Software.Setup.PFTP, as: PFTPSetup
alias Helix.Test.Story.Setup, as: StorySetup
alias Helix.Test.Universe.Bank.Setup, as: BankSetup
alias Helix.Test.Universe.NPC.Setup, as: NPCSetup

end
end

defp marote_helpers do
quote do

alias Helix.Test.Account.Helper, as: AccountHelper
alias Helix.Test.Channel.Helper, as: ChannelHelper
alias Helix.Test.Entity.Helper, as: EntityHelper
alias Helix.Test.Event.Helper, as: EventHelper
alias Helix.Test.Log.Helper, as: LogHelper
alias Helix.Test.Network.Helper, as: NetworkHelper
alias Helix.Test.Process.Helper, as: ProcessHelper
alias Helix.Test.Server.Helper, as: ServerHelper
alias Helix.Test.Software.Helper, as: SoftwareHelper
alias Helix.Test.Story.Helper, as: StoryHelper
alias Helix.Test.Universe.Bank.Helper, as: BankHelper
alias Helix.Test.Universe.NPC.Helper, as: NPCHelper

end
end

defp marote_tools do
quote do

alias Helix.Maroto.Playstate
alias Helix.Test.Channel.Interceptor

Interceptor.start_link()

end
end
end
Loading

0 comments on commit 6cb39b0

Please sign in to comment.