This is an attempt to create a checklist to use before making a commit.  Some of this duplicates what is in the coding conventions, but is in the form of quick checks.  This checklist is in the same vein as The Checklist Manifesto.  Some of these may seem silly (like asking a doctor “did you wash your hands?”) but they're meant to avoid problems that may be overlooked.

Back-end Edit

  • Did your code run without errors under E_STRICT?[1]
  • Have you tested all exit points from your code?
  • Did you use tabs instead of spaces to indent?
  • Did you remove extraneous, commented-out debug code? (e.g. #var_dump( $array ); and/or #die();)
  • If you've created a new function, did you document the function parameters and what it returns using Doxygen?
  • Whitespace trailing at the end of lines is annoying, don't do that (but don't fix whitespace at the end of lines you didn't modify in the same commit, just make sure whatever you touched is good, see next point:)
  • Does this commit contain any whitespace-only changes?  They should be isolated to their own separate coding style-only commit.
  • Have you created any identifiers that didn't use camelCase (ie. underscores)?
  • Is every exception tested?
  • If you have multiple return points, are they tested?
  • Is each use of fopen(), fread(), etc. checked for errors or problems?
  • Did you use t or b flags for fopen() to ensure Windows compatibility?
  • Have you used the proper output functions?  echo should almost never be used.
  • Where appropriate, have you used the MediaWiki wrapper functions instead of their PHP equivalents?
    • wfIniGetBool() instead of ini_get to get boolean params

  • If you added a new test to parserTests.txt, did you give it a new name?

Testing Edit

When adding features, it's vital to verify you didn't break existing functionality. We have three kinds of tests for backend code:

  • Parser tests: Test the parser output for wikitext (see tests/parserTests.php). Try running php tests/parserTests.php --quick --quiet to see how those work.  Everything should pass, in theory.  You can add new tests or fix existing ones by editing tests/parserTests.txt.
  • Unit tests (PHPUnit): Located in the tests/phpunit directory. They are typically run through the phpunit.php script invoked from the aforementioned directory. These tests also include ordinary parser tests, though parserTests.php probably works faster. Read Manual:PHP unit testing for more information about how to setup PHPUnit and further details on how it is used inside MediaWiki.

Anyway, if you can't write an automatic test, do manual testing.  If you cause breakage too often, people will get annoyed at you, especially if it isn't caught until it goes live on Wikipedia (revocation of commit access has been threatened in the past occasionally). At the very least, expect serious indignation if you commit code containing PHP syntax errors. At the very least try loading the wiki in the browser, or run $ php maintenance/checkSyntax.php --modified.

Front-end Edit

  • Tested in an actual browser? The smallest changes could break things that aren't obvious. Kick that browser open, navigate around, perhaps make an edit, log-in, add a watch to your watchlist. 
  • Will it work at least in the browsers we support for A-grade functionality ? (check Compatibility#Browser)
  • Does it validate (or did you at least run it through) JSHint or JSLint ? (check recommended settings)
  • Are there any implied globals other than jQuery or mediaWiki? There should not be, (not $ either)

Testing Edit

References Edit

  1. Put error_reporting(-1); in the entry file. See also Manual:How to debug.

Template:Conventions navigation