> It seems easier for an IEx user to create the context map as they need, and then paste in the doctest.
My hope is that calling out to a module is a bit more explicit than calling a magic "user" or "context" variable. :) On Mon, Oct 26, 2020 at 4:51 PM Rosa Richter <[email protected]> wrote: > Thanks so much for the reply! > > That's a great suggestion, I'm definitely going to do that for now. > > I can appreciate the concern with keeping doctests plug-and-play, one of > their features is replicating what it's like to use the code in the > terminal. But if the doctest uses a special test-only module like that, can > they still be used in IEx? It seems easier for an IEx user to create the > context map as they need, and then paste in the doctest. > > This feature could definitely be abused to make some ugly, unrepeatable > doctests, but my hope is that someone writing doctests would be keeping in > mind how clear their documentation examples are, and how complicated > they've made the context. > > On Monday, October 26, 2020 at 9:34:46 AM UTC-6 José Valim wrote: > >> Hi Rosa, thanks for the proposal! >> >> My main concern with this approach is that the doctests are no longer >> "plug and play". I can no longer copy and paste them into IEx and have them >> work. Passing the context can be even more confusing, because you may >> end-up referencing things like `context.test`, which are hard to replicate >> on IEx. >> >> What I have done in these cases is to have an explicit module that I call >> with a note in the docs: >> >> Assuming your application has a MyExampleApp.client/0 that returns a >> MyLibrary.Client, >> you can do: >> >> iex> client = MyExampleApp.client() >> iex> MyLibrary.call(client, :foo) >> >> or: >> >> Assuming your application has a MyExampleApp.setup_some_args/0 that adds >> some >> fixtures to the database: >> >> iex> client = MyExampleApp.setup_some_orgs() >> iex> MyLibrary.run_query(some_qiery) >> >> Then in my tests I define the MyExampleApp satisfying the conditions of >> the tests. >> >> On Mon, Oct 26, 2020 at 4:28 PM Rosa Richter <[email protected]> wrote: >> >>> >>> I'm trying to write some good examples for documentation, and I'd like >>> them to be run as tests. However, there's some setup required that would be >>> too verbose and not relevant for a doctest. What are the group's thoughts >>> on allowing the ExUnit setup context to be available in doctests? >>> >>> I'm not trying to contain all of my tests in doctests; I understand that >>> certain kinds of tests should remain in the test file. I'm only trying to >>> write concise examples that need a little setup. One example: I need a user >>> object as an argument to a business logic module, but creating a user >>> object is not a relevant part of the example. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "elixir-lang-core" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/elixir-lang-core/ed0b6ff5-79aa-4d7e-a951-b802e36976c4n%40googlegroups.com >>> <https://groups.google.com/d/msgid/elixir-lang-core/ed0b6ff5-79aa-4d7e-a951-b802e36976c4n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/53fb52a5-5655-4c8f-b8c6-84aaeac770e5n%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/53fb52a5-5655-4c8f-b8c6-84aaeac770e5n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4LOa0vtTV72G2_ELR%3Do%2BxR-cnUWraEKuafvhOG7rmt_Mg%40mail.gmail.com.
