example_files v1.0.0 ExampleFiles

A GenServer that provides access to the ExampleFiles.File processes for a project.

Summary

Functions

Returns an ExampleFiles.File PID for each example file in the System.cwd!, spawning such processes if they are not already running

Finds subsets of all that share a value for ExampleFiles.File.path_when_pulled

Filters all for items having a unique value for ExampleFiles.File.path_when_pulled

Starts an ExampleFiles process, linked to the current process, with the specified example_files_options (ExampleFiles.Options)

Starts an ExampleFiles process, linked to the current process, with the specified arguments and options

Functions

all(example_files, timeout \\ 5000)
all(GenServer.server, timeout) :: [pid]

Returns an ExampleFiles.File PID for each example file in the System.cwd!, spawning such processes if they are not already running.

Examples

iex> {:ok, options} = ExampleFiles.Options.start_link(~w(--ignore EXAMPLE-file1))
...> {:ok, example_files} = ExampleFiles.start_link(options: options)
...> File.cd!("spec/fixtures/collisions", fn -> example_files |> ExampleFiles.all end) |> Enum.map(&ExampleFiles.File.path/1) |> Enum.sort
["file1.example", "file2.example"] |> Enum.sort

iex> {:ok, options} = ExampleFiles.Options.start_link([])
...> {:ok, example_files} = ExampleFiles.start_link(options: options)
...> File.cd! "spec/fixtures/empty", fn -> example_files |> ExampleFiles.all end
[]
collisions(example_files, timeout \\ 5000)
collisions(GenServer.server, timeout) :: [pid]

Finds subsets of all that share a value for ExampleFiles.File.path_when_pulled.

Examples

iex> {:ok, options} = ExampleFiles.Options.start_link([])
...> {:ok, example_files} = ExampleFiles.start_link(options: options)
...> File.cd!("spec/fixtures/collisions", fn -> example_files |> ExampleFiles.collisions end) |> Enum.map(fn(collision_group) -> collision_group |> Enum.map(&ExampleFiles.File.path/1) |> Enum.sort end) |> Enum.sort
[~w(EXAMPLE-file1 file1.example)] |> Enum.map(&Enum.sort/1) |> Enum.sort

iex> {:ok, options} = ExampleFiles.Options.start_link([])
...> {:ok, example_files} = ExampleFiles.start_link(options: options)
...> File.cd!("spec/fixtures/no_collisions", fn -> example_files |> ExampleFiles.collisions end) |> Enum.map(fn(collision_group) -> collision_group |> Enum.map(&ExampleFiles.File.path/1) |> Enum.sort end) |> Enum.sort
[]
noncollisions(example_files, timeout \\ 5000)
noncollisions(GenServer.server, timeout) :: [pid]

Filters all for items having a unique value for ExampleFiles.File.path_when_pulled.

Examples

iex> {:ok, options} = ExampleFiles.Options.start_link([])
...> {:ok, example_files} = ExampleFiles.start_link(options: options)
...> File.cd!("spec/fixtures/collisions", fn -> example_files |> ExampleFiles.noncollisions end) |> Enum.map(&ExampleFiles.File.path/1) |> Enum.sort
["file2.example"] |> Enum.sort
start_link(list)
start_link([{:options, GenServer.server}]) :: GenServer.on_start

Starts an ExampleFiles process, linked to the current process, with the specified example_files_options (ExampleFiles.Options).

start_link(arguments, options)
start_link([%ExampleFiles.State{all: term, options: term}] | [{:options, GenServer.server}], [{atom, any}]) :: GenServer.on_start

Starts an ExampleFiles process, linked to the current process, with the specified arguments and options.

The process exits if arguments does not contain an ExampleFiles.State.