leek 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +6 -0
- data/Gemfile +3 -0
- data/README.md +16 -0
- data/Rakefile +10 -0
- data/features/support/env.rb +15 -0
- data/leek.gemspec +24 -0
- data/lib/leek.rb +4 -0
- data/lib/leek/api.rb +21 -0
- data/lib/leek/api/dir.rb +1 -0
- data/lib/leek/api/file.rb +2 -0
- data/lib/leek/api/system.rb +1 -0
- data/lib/leek/config.rb +19 -0
- data/lib/leek/cucumber.rb +73 -0
- data/lib/leek/cucumber/hooks.rb +8 -0
- data/lib/leek/spec_helpers.rb +17 -0
- data/lib/leek/version.rb +3 -0
- data/spec/spec_helper.rb +12 -0
- metadata +101 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Leek
|
2
|
+
|
3
|
+
Cucumber and RSpec extension that allows to test filesystem operations without leaving any trace on your system.
|
4
|
+
|
5
|
+
* it uses mocks for Ruby file access libraries
|
6
|
+
* provides set of predefined cucumber steps
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add to your Gemfile and run the `bundle` command to install.
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'leek'
|
14
|
+
```
|
15
|
+
|
16
|
+
## Usage
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
begin
|
3
|
+
Bundler.setup(:default, :development)
|
4
|
+
rescue Bundler::BundlerError => e
|
5
|
+
$stderr.puts e.message
|
6
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
7
|
+
exit e.status_code
|
8
|
+
end
|
9
|
+
|
10
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
|
11
|
+
require 'leek'
|
12
|
+
require 'rspec/expectations'
|
13
|
+
require 'fakefs/safe'
|
14
|
+
require 'open3'
|
15
|
+
require 'fileutils'
|
data/leek.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "leek/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "leek"
|
7
|
+
s.version = Leek::VERSION
|
8
|
+
s.authors = ["Piotr Murach"]
|
9
|
+
s.email = [""]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Cucumber and RSpec extension that allows to test filesystem operations without leaving any trace on your system.}
|
12
|
+
s.description = %q{Cucumber and RSpec extension that allows to test filesystem operations without leaving any trace on your system.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "leek"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_runtime_dependency 'cucumber', '>= 1.1.1'
|
22
|
+
s.add_runtime_dependency 'fakefs', '>= 0.4.0'
|
23
|
+
s.add_runtime_dependency 'rspec', '>= 1.1.1'
|
24
|
+
end
|
data/lib/leek.rb
ADDED
data/lib/leek/api.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'fakefs'
|
3
|
+
|
4
|
+
module Leek
|
5
|
+
module Api
|
6
|
+
|
7
|
+
def remove_dir dir_name
|
8
|
+
FakeFS::FileUtils.rmdir dir_name
|
9
|
+
end
|
10
|
+
|
11
|
+
def write_file file_name, file_content
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def _create_file
|
17
|
+
FakeFile.new
|
18
|
+
end
|
19
|
+
|
20
|
+
end # Api
|
21
|
+
end # Leek
|
data/lib/leek/api/dir.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Directory operations wrapper
|
@@ -0,0 +1 @@
|
|
1
|
+
# System operations wrapper
|
data/lib/leek/config.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
['api', 'cucumber/hooks'].each do |path|
|
2
|
+
require "leek/#{path}"
|
3
|
+
end
|
4
|
+
|
5
|
+
World(Leek::Api)
|
6
|
+
|
7
|
+
Given /^file called "([^"]*)"$/ do |file_name|
|
8
|
+
FakeFS::FileUtils.touch file_name
|
9
|
+
end
|
10
|
+
|
11
|
+
Given /^directory called "([^"]*)"$/ do |directory|
|
12
|
+
FakeFS::FileUtils.mkdir directory
|
13
|
+
end
|
14
|
+
|
15
|
+
Given /^directory called "([^"]*)" exists$/ do |directory|
|
16
|
+
FakeFS::FileSystem.find(directory).should_not be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
Given /^I remove directory called "([^"]*)"$/ do |directory|
|
20
|
+
FakeFS::FileUtils.rmdir directory
|
21
|
+
end
|
22
|
+
|
23
|
+
Given /^directory called "([^"]*)" with files:$/ do |directory, text|
|
24
|
+
text.split('\n').each do |file_name|
|
25
|
+
step "file called \"#{file_name}\""
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
Given /^file called "([^"]*)" with content:$/ do |file_name, file_content|
|
30
|
+
unless FakeFS::FileSystem.files.include? file_name
|
31
|
+
file = FakeFS::FakeFile.new
|
32
|
+
file.content << file_content
|
33
|
+
FakeFS::FileSystem.add file_name, file
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
Given /^root directory$/ do
|
38
|
+
chdir fs
|
39
|
+
end
|
40
|
+
|
41
|
+
Given /^current directory$/ do
|
42
|
+
chdir current_dir
|
43
|
+
end
|
44
|
+
|
45
|
+
Given /^current directory with files:$/ do |text|
|
46
|
+
text.split('\n').each do |file_name|
|
47
|
+
step "file called \"#{file_name}\""
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
Given /^I symlink "" to ""$/ do |target, source|
|
52
|
+
ln_s target, source
|
53
|
+
end
|
54
|
+
|
55
|
+
Then /^the output should be empty$/ do
|
56
|
+
step "the output should contain \"\""
|
57
|
+
end
|
58
|
+
|
59
|
+
When /^I execute `([^`]*)`$/ do |cmd|
|
60
|
+
@stdin, @stdout, @stderr = Open3.popen3 cmd
|
61
|
+
end
|
62
|
+
|
63
|
+
When /^I input "([^"]*)"$/ do |input|
|
64
|
+
@stdin.puts input
|
65
|
+
end
|
66
|
+
|
67
|
+
Then /^the output contains "([^"]*)"$/ do |text|
|
68
|
+
@stdout.gets.should =~ /#{text}/m
|
69
|
+
end
|
70
|
+
|
71
|
+
Then /^file called "([^"]*)" is a symlink$/ do |file_name|
|
72
|
+
file_name.symlink?
|
73
|
+
end
|
data/lib/leek/version.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'leek'
|
2
|
+
require 'rspec/core'
|
3
|
+
|
4
|
+
Rails.backtrace_cleaner.remove_silencers!
|
5
|
+
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.include ActionController
|
8
|
+
config.include ActionView
|
9
|
+
end
|
10
|
+
|
11
|
+
# Load support files
|
12
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: leek
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Piotr Murach
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: cucumber
|
16
|
+
requirement: &2156412720 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2156412720
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: fakefs
|
27
|
+
requirement: &2156411100 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.4.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2156411100
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &2152766100 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.1.1
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2152766100
|
47
|
+
description: Cucumber and RSpec extension that allows to test filesystem operations
|
48
|
+
without leaving any trace on your system.
|
49
|
+
email:
|
50
|
+
- ''
|
51
|
+
executables: []
|
52
|
+
extensions: []
|
53
|
+
extra_rdoc_files: []
|
54
|
+
files:
|
55
|
+
- .gitignore
|
56
|
+
- Gemfile
|
57
|
+
- README.md
|
58
|
+
- Rakefile
|
59
|
+
- features/step_definitions/.common_steps.rb.swp
|
60
|
+
- features/support/env.rb
|
61
|
+
- leek.gemspec
|
62
|
+
- lib/leek.rb
|
63
|
+
- lib/leek/api.rb
|
64
|
+
- lib/leek/api/dir.rb
|
65
|
+
- lib/leek/api/file.rb
|
66
|
+
- lib/leek/api/system.rb
|
67
|
+
- lib/leek/config.rb
|
68
|
+
- lib/leek/cucumber.rb
|
69
|
+
- lib/leek/cucumber/hooks.rb
|
70
|
+
- lib/leek/spec_helpers.rb
|
71
|
+
- lib/leek/version.rb
|
72
|
+
- spec/spec_helper.rb
|
73
|
+
homepage: ''
|
74
|
+
licenses: []
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
require_paths:
|
78
|
+
- lib
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubyforge_project: leek
|
93
|
+
rubygems_version: 1.8.10
|
94
|
+
signing_key:
|
95
|
+
specification_version: 3
|
96
|
+
summary: Cucumber and RSpec extension that allows to test filesystem operations without
|
97
|
+
leaving any trace on your system.
|
98
|
+
test_files:
|
99
|
+
- features/step_definitions/.common_steps.rb.swp
|
100
|
+
- features/support/env.rb
|
101
|
+
- spec/spec_helper.rb
|