Project

file-spec

0.0
No commit activity in last 3 years
No release in over 3 years
RSpec 2 matchers for files, directories and symlinks
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.0.1
>= 1.6.4
>= 0

Runtime

~> 1.2.0
>= 2.4.1
>= 0.6.0
 Project Readme

File spec

RSpec 2 matcher to specify expected file structures.

This gem is used extensively by some of my Rails 3 assistance gems such as rails3_assist, rails3_artifactor and rails-app-spec which all assist you in operating on various kinds of Rails 3 artifacts.

Usage

The following demonstrates File expectation nesting to test a File hierarchy structure! Each block is evaluated in a new Dir context, using a Dir#chdir block.

Example: Nested file structure specs

  Dir.chdir(my_path)
  Dir.pwd.should have_file 'hello.txt' do |dir|
    dir.should have_files 'abc.rb', 'def.rb'
    dir.should have_dir :test do |test_dir|
      test_dir.should have_dirs :test_abc, :test_def
    end
    dir.should have_symlink :xyz
    dir.should have_symlink_files 'blip.rb', 'blap.rb', 'logfile.log'
    dir.should have_symlink_dir 'my-secret-dir'
  end
end

See /spec folder for more usage examples.

TODO - advanced

  • use Dir.tmpdir
  • have_file_structure yaml

Should test that the files and dirs match the tree structure as indicated by the yaml string (or file). This is very convenient for more complex file structure specs!

mydir:
  - file1.txt
  - file2.txt
  subdir1: [abc.rb, def.rb]
  subdir2: [x.txt, logfile.log] 

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.