
Let's create an egg to use it in our tests::

    >>> mkdir('myegg')
    >>> write('myegg', 'setup.py',
    ... '''
    ... from setuptools import setup
    ... setup(name='myegg', version='1.0',)
    ... ''')
    >>> write('myegg', 'README', '')
    >>> print_(system(buildout+' setup myegg bdist_egg')), # doctest: +ELLIPSIS
    Running setup script 'myegg
    ...

    >>> mkdir('baregg')
    >>> write('baregg', 'setup.py',
    ... '''
    ... from setuptools import setup
    ... setup(name='baregg', version='1.0',)
    ... ''')
    >>> write('baregg', 'README', '')
    >>> print_(system(buildout+' setup baregg bdist_egg')), # doctest: +ELLIPSIS

Now let's create a buildout to install the egg and to use buildout.gc::

    >>> write('buildout.cfg',
    ... '''
    ... [buildout]
    ... index = http://pypi.python.org/simple
    ... extensions = buildout.gc
    ... eggs-directory = ${buildout:directory}/eggs
    ... parts = foo
    ... find-links += %s
    ... [foo]
    ... recipe = zc.recipe.egg
    ... eggs = myegg
    ... ''' % join('myegg', 'dist'))

Running the buildout will print information about unused eggs::

    >>> print_(system(buildout)), # doctest: +ELLIPSIS
    Getting distribution for 'buildout.gc'.
    ...


When we only want to report unused eggs we omit the '''old-eggs-directory''' option.

    >>> write('buildout.cfg',
    ... '''
    ... [buildout]
    ... index = http://pypi.python.org/simple
    ... extensions = buildout.gc
    ... eggs-directory = ${buildout:directory}/eggs
    ... parts = foo
    ... find-links += %s
    ... [foo]
    ... recipe = zc.recipe.egg
    ... eggs = baregg
    ... ''' % join('baregg', 'dist'))

    >>> print_(system(buildout)) # doctest:+ELLIPSIS
    Uninstalling foo.
    Installing foo.
    Getting distribution for 'baregg'.
    Got baregg 1.0.
    *************** BUILDOUT GC ****************
    Don't have a 'old-eggs-directory' set, only reporting
    Can add it by adding 'old-eggs-directory = ${buildout:directory}/old-eggs' to your [buildout]
    ...
    Found unused egg: myegg...
    *************** /BUILDOUT GC ****************
    <BLANKLINE>



Check that indeed nothing has been moved nor deleted::

    >>> assert 'myegg' in  ''.join(os.listdir('eggs'))

If we want to move unused eggs, we just add an ``old-eggs-directory`` option and give a directory target::

    >>> write('buildout.cfg',
    ... '''
    ... [buildout]
    ... index = http://pypi.python.org/simple
    ... extensions = buildout.gc
    ... eggs-directory = ${buildout:directory}/eggs
    ... old-eggs-directory = ${buildout:directory}/old-eggs
    ... parts = foo
    ... find-links += %s
    ... [foo]
    ... recipe = zc.recipe.egg
    ... eggs = baregg
    ... ''' % join('baregg', 'dist'))

    >>> print_(system(buildout)) # doctest:+ELLIPSIS
    Updating foo.
    *************** BUILDOUT GC ****************
    ...
    Moved unused egg: myegg...
    *************** /BUILDOUT GC ****************
    <BLANKLINE>

Check that indeed 'myegg' has been moved::

    >>> assert 'myegg' not in  ''.join(os.listdir('eggs')), 'myegg has not been moved out of egg dir'
    >>> assert 'myegg' in  ''.join(os.listdir('old-eggs')), 'myegg has not been moved to old-egg dir'

And baregg is still present::

    >>> assert 'baregg' in  ''.join(os.listdir('eggs')), 'baregg is not present in egg dir'

