# Loader: Egg Test discovery

## What is Egg Discovery

Sometimes Python Eggs are marked as zip-safe and they can be installed zipped, instead of unzipped in an `.egg` folder. See http://peak.telecommunity.com/DevCenter/PythonEggs for more details. The normal `nose2.plugins.loader.discovery` plugin ignores modules located inside zip files.

The Egg Discovery plugin allows nose2 to discover tests within these zipped egg files.

This plugin requires `pkg_resources` (from `setuptools`) to work correctly.

## Usage

To activate the plugin, include the plugin module in the plugins list in `[unittest]` section in a config file:

    [unittest]
    plugins = nose2.plugins.loader.eggdiscovery

Or pass the module with the `--plugin` command-line option:

    nose2 --plugin=nose2.plugins.loader.eggdiscovery module_in_egg

## Reference

Egg-based discovery test loader.

This plugin implements nose2’s automatic test module discovery inside Egg Files. It looks for test modules in packages whose names start with `test`, then fires the `loadTestsFromModule()` hook for each one to allow other plugins to load the actual tests.

It also fires `handleFile()` for every file that it sees, and `matchPath()` for every Python module, to allow other plugins to load tests from other kinds of files and to influence which modules are examined for tests.

### Enable this Plugin

This plugin is built-in, but not loaded by default.

Even if you specify `always-on = True` in the configuration, it will not run unless you also enable it. You can do so by putting the following in a `unittest.cfg` or `nose2.cfg` file

    [unittest]
    plugins = nose2.plugins.loader.eggdiscovery

The `plugins` parameter may contain a list of plugin names, including `nose2.plugins.loader.eggdiscovery`

### Configuration [discovery]

always-on
  Default:

    True

  Type:

    boolean

#### Sample configuration

The default configuration is equivalent to including the following in a `unittest.cfg` file.

    [discovery]
    always-on = True

### Plugin class reference: EggDiscoveryLoader

class nose2.plugins.loader.eggdiscovery.EggDiscoveryLoader(*args, **kwargs)

  Loader plugin that can discover tests inside Egg Files

  loadTestsFromName(event)

    Load tests from module named by event.name

  loadTestsFromNames(event)

    Discover tests if no test names specified