No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Minitest exstension to check filesystem contents
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
>= 0
>= 0
 Project Readme

Minitest::Filesystem

Gem Version Build Status Code Climate Test Coverage

Adds assertions and expectations to check filesystem content in a communicative way.

Installation

Add this line to your application's Gemfile:

gem 'minitest-filesystem'

And then execute:

$ bundle

Or install it yourself as:

$ gem install minitest-filesystem

Once the gem is installed, just add this line to your test_helper.rb:

require 'minitest/filesystem'

Usage

Testing for a filesystem subtree

Let's suppose the following filesystem structure exists:

  • root_dir/
    • file_1
    • file_2
    • subdir_1/
      • subfile_1
      • subfile_2
      • subsubdir_1/
    • subdir_2/
    • subdir_3/
      • link_1
      • link_2, '../../file_1'

You can check if root_dir contains a specific structure:

assert_contains_filesystem("root_dir") do
  file "file_1"
  dir "subdir_1" do
    file "subfile_1"
  end
  dir "subdir_2"
  dir "subdir_3" do
    link "link_1"
  end
end

or, if you prefer the expectation style:

filesystem {
  file "file_1"
  dir "subdir_1" do
    file "subfile_1"
  end
  dir "subdir_2"
  dir "subdir_3" do
    link "link_1"
  end
}.must_exist_within "root_dir"

Note that the match need not to be exact (i.e. there can be other files and directories inside root_dir that the matcher won't care about).

Syntactic sugar

As a nicety, some custom assertions/matchers are provided to make your test suites look better. They're almost just syntactic sugar around the methods provided by File, Dir et al, but allow for improved code readability. So, for example, instead of writing

assert File.exists? "/a/file"

you can write

assert_exists "/a/file"

or, even better

"/a/file".must_exist

Assertions

  • assert_exists: test whether a specific path exists (no matter if file, dir, symlink)
  • refute_exists: test whether a specific path doesn't exist (no matter if file, dir, symlink)

Expectations

The meaning of the following expectation is the same as their assertive counterpart:

  • must_exist
  • wont_exist

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Changelog

1.2.0

  • Added assert_exists, refute_exists, must_exist, wont_exist
  • Refactored previous test code to lighter syntax

1.1.1

  • Minor refactorings and project infrastructure updates.

1.1.0

  • Add support for testing symbolic links

1.0.1

  • Remove CamelCase naming.

1.0.0

  • Add support for Ruby 1.8.

0.1.0

  • Refactor existing code
  • Add more tests around assertion
  • Infect must_exist_within expectation

0.0.1

  • Extract assertion and matcher from current projects