Read more

Order in which RSpec processes .rb files

Henning Koch
June 12, 2011Software engineer at makandra GmbH

Because your examples should not change global state, you should not need to care about the order in which RSpec processes your .rb files. However, in some cases you might want to know.

RSpec 3

  • Runs .rb files in alphabetical order Show archive.org snapshot of their file paths by default (or when you specify --order defined).
  • You run tests in random order by using --order random Show archive.org snapshot on the command line, or by putting it into your project's .rspec file.
  • Note that both switches also affect the order the tests inside each file are run: defined runs tests in the order they are defined inside the file, random shuffles tests inside each file randomly.

RSpec 2

  • Runs .rb files in the order the files are stored on the hard drive. This is random for all intents and purposes.
  • Has no options to sort the loaded files in any way.

RSpec 1

  • Runs .rb files in alphabetical order by default. This is a good default because it never differs for two clones of the same repository.
  • You can tell RSpec to run recently modified files first by calling it like spec --loadby mtime --reverse spec. This means that the order changes as you edit and save your files.
  • Note that if you run RSpec using rake spec (don't do that), it will look for default options in a file spec/support/spec.opts. If you ever see that file, make sure you remove any loadby and reverse options from it, or someone calling spec gets a different processing order than someone calling rake spec. Also, don't use rake spec. It's slow and does too many magic things.
Illustration online protection

Rails Long Term Support

Rails LTS provides security patches for old versions of Ruby on Rails (2.3, 3.2, 4.2 and 5.2)

  • Prevents you from data breaches and liability risks
  • Upgrade at your own pace
  • Works with modern Rubies
Read more Show archive.org snapshot
Posted by Henning Koch to makandra dev (2011-06-12 14:36)