Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
check code for FIXMEs.
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

Test::Fixme Build Status

Check code for FIXMEs.


# In a test script like 't/test-fixme.t'
use Test::Fixme;

# You can also tailor the behaviour.
use Test::Fixme;
run_tests( where    => 'lib',      # where to find files to check
           match    => 'TODO',     # what to check for
           skip_all => $ENV{SKIP}  # should all tests be skipped


When coding it is common to come up against problems that need to be addressed but that are not a big deal at the moment. What generally happens is that the coder adds comments like:

# FIXME - what about windows that are bigger than the screen?

# FIXME - add checking of user privileges here.

Test::Fixme allows you to add a test file that ensures that none of these get forgotten in the module.



By default run_tests will search for 'FIXME' in all the files it can find in the project. You can change these defaults by using 'where' or 'match' as follows:

run_tests( where => 'lib', # just check the modules.
           match => 'TODO' # look for things that are not done yet.
  • where

    Specifies where to search for files. This can be a scalar containing a single directory name, or it can be a list reference containing multiple directory names.

  • match

    Expression to search for within the files. This may be a simple string, or a qr//-quoted regular expression. For example:

    match => qr/[T]ODO|[F]IXME|[B]UG/,
  • filename_match

    Expression to filter file names. This should be a qr//-quoted regular expression. For example:

    match => qr/\.(:pm|pl)$/,

    would only match .pm and .pl files under your specified directory.

  • manifest

    Specifies the name of your MANIFEST file which will be used as the list of files to test instead of where or filename_match.

    manifest => 'MANIFEST',
  • warn

    Do not fail when a FIXME or other pattern is matched. Tests that would have been failures will still issue a diagnostic that will be viewed when you run prove without -v, make test or ./Build test.


If you want to match something other than 'FIXME' then you may find that the test file itself is being caught. Try doing this:

run_tests( match => 'TO'.'DO' );

You may also wish to suppress the tests - try this:

use Test::Fixme;
run_tests( skip_all => $ENV{SKIP_TEST_FIXME} );

You can only run run_tests once per file. Please use several test files if you want to run several different tests.




Dave O'Neill added support for 'filename_match' and also being able to pass a list of several directories in the 'where' argument. Many thanks.


original author: Edmund von der Burg

current maintainer: Graham Ollis


Dave O'Neill

gregor herrmann


This software is copyright (c) 2014 by Edmund von der Burg, Graham Ollis

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Something went wrong with that request. Please try again.