revenc 0.1.2 → 0.1.3
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 +4 -24
- data/.yardopts +6 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +54 -0
- data/HISTORY.markdown +16 -0
- data/{README.rdoc → README.markdown} +41 -35
- data/Rakefile +34 -43
- data/TODO.markdown +3 -0
- data/VERSION +1 -1
- data/bin/revenc +1 -1
- data/config/cucumber.yml +1 -1
- data/features/app.feature +7 -7
- data/features/bin.feature +3 -3
- data/features/configuration.feature +5 -5
- data/features/copy.feature +10 -10
- data/features/mount.feature +11 -11
- data/features/step_definitions/revenc_steps.rb +3 -2
- data/features/support/aruba.rb +2 -2
- data/features/unmount.feature +3 -3
- data/lib/revenc/io.rb +3 -1
- data/lib/revenc.rb +13 -11
- data/revenc.gemspec +42 -0
- data/spec/basic_gem/basic_gem_spec.rb +13 -0
- data/spec/spec_helper.rb +7 -4
- data/spec/watchr.rb +8 -5
- metadata +147 -48
- data/.document +0 -5
- data/CLONING.rdoc +0 -108
- data/lib/revenc/lockfile.rb +0 -66
- data/spec/revenc/lockfile_spec.rb +0 -44
data/.gitignore
CHANGED
@@ -1,30 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
## textmate
|
5
|
-
*.tmproj
|
6
|
-
tmtags
|
7
|
-
|
8
|
-
## emacs
|
9
|
-
*~
|
10
|
-
\#*
|
11
|
-
.\#*
|
12
|
-
|
13
|
-
## vim
|
14
|
-
*.swp
|
15
|
-
|
16
|
-
## project::general
|
1
|
+
pkg/*
|
2
|
+
*.gem
|
3
|
+
.bundle
|
17
4
|
coverage
|
18
5
|
rdoc
|
19
|
-
|
20
|
-
*.gemspec
|
21
|
-
|
22
|
-
## cucumber
|
6
|
+
.yardoc
|
23
7
|
rerun.txt
|
24
|
-
|
25
|
-
## ctags
|
26
8
|
tags
|
27
|
-
|
28
|
-
## project::specific
|
29
9
|
tmp/fixtures
|
30
10
|
tmp/aruba
|
data/.yardopts
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
revenc (0.1.3)
|
5
|
+
configatron (>= 2.5.1)
|
6
|
+
mutagem (>= 0.1.3)
|
7
|
+
term-ansicolor (>= 1.0.4)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: http://rubygems.org/
|
11
|
+
specs:
|
12
|
+
aruba (0.2.3)
|
13
|
+
background_process
|
14
|
+
cucumber (~> 0.9.0)
|
15
|
+
background_process (1.2)
|
16
|
+
builder (2.1.2)
|
17
|
+
configatron (2.6.3)
|
18
|
+
yamler (>= 0.1.0)
|
19
|
+
cucumber (0.9.0)
|
20
|
+
builder (~> 2.1.2)
|
21
|
+
diff-lcs (~> 1.1.2)
|
22
|
+
gherkin (~> 2.2.2)
|
23
|
+
json (~> 1.4.6)
|
24
|
+
term-ansicolor (~> 1.0.5)
|
25
|
+
diff-lcs (1.1.2)
|
26
|
+
gherkin (2.2.4)
|
27
|
+
json (~> 1.4.6)
|
28
|
+
term-ansicolor (~> 1.0.5)
|
29
|
+
trollop (~> 1.16.2)
|
30
|
+
json (1.4.6)
|
31
|
+
mutagem (0.1.3)
|
32
|
+
rake (0.8.7)
|
33
|
+
rdiscount (1.6.5)
|
34
|
+
rspec (1.3.0)
|
35
|
+
term-ansicolor (1.0.5)
|
36
|
+
trollop (1.16.2)
|
37
|
+
yamler (0.1.0)
|
38
|
+
yard (0.6.1)
|
39
|
+
|
40
|
+
PLATFORMS
|
41
|
+
ruby
|
42
|
+
|
43
|
+
DEPENDENCIES
|
44
|
+
aruba (>= 0.2.0)
|
45
|
+
bundler (>= 1.0.0)
|
46
|
+
configatron (>= 2.5.1)
|
47
|
+
cucumber (>= 0.6)
|
48
|
+
mutagem (>= 0.1.3)
|
49
|
+
rake (>= 0.8.7)
|
50
|
+
rdiscount (>= 1.6.5)
|
51
|
+
revenc!
|
52
|
+
rspec (>= 1.2.9)
|
53
|
+
term-ansicolor (>= 1.0.4)
|
54
|
+
yard (>= 0.6.1)
|
data/HISTORY.markdown
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
History
|
2
|
+
=======
|
3
|
+
Most recent changes are at the top
|
4
|
+
|
5
|
+
|
6
|
+
Changes
|
7
|
+
-------
|
8
|
+
|
9
|
+
### 0.1.3 - 10/05/2010 ###
|
10
|
+
|
11
|
+
* Using [mutagem](http://github.com/robertwahler/mutagem) for file locking based mutexes
|
12
|
+
|
13
|
+
|
14
|
+
### 0.1.2 - 03/12/2010 ###
|
15
|
+
|
16
|
+
* Initial release
|
@@ -1,22 +1,26 @@
|
|
1
|
-
|
1
|
+
Revenc
|
2
|
+
======
|
2
3
|
|
3
4
|
Mount an unencrypted folder as encrypted using EncFS and copy/synchronize the
|
4
5
|
encrypted files to untrusted destinations using rsync/cp
|
5
6
|
|
6
|
-
|
7
|
+
Background
|
8
|
+
----------
|
7
9
|
|
8
10
|
EncFS in reverse mode facilitates mounting an encrypted file system
|
9
11
|
from an unencrypted source folder. This allows keeping your files unencrypted
|
10
12
|
in a trusted environment while gaining the ability to encrypt on demand
|
11
13
|
i.e. when you want to rsync encrypted files off-site to an untrusted system.
|
12
14
|
|
13
|
-
|
15
|
+
Why Revenc?
|
16
|
+
-----------
|
14
17
|
|
15
18
|
Revenc facilitates scripting EncFS reverse mounting and synchronizing by
|
16
19
|
providing a configuration framework and validating mounts before running tools
|
17
20
|
like rsync.
|
18
21
|
|
19
|
-
|
22
|
+
Benefits
|
23
|
+
--------
|
20
24
|
|
21
25
|
* Provides conventions for EncFS reverse mounting
|
22
26
|
* Validates mountpoints before copying to prevent "rsync --delete" commands
|
@@ -27,17 +31,20 @@ like rsync.
|
|
27
31
|
* Allow short, easy to remember command lines when used with configuration files.
|
28
32
|
i.e. revenc mount, revenc unmount, revenc copy
|
29
33
|
|
30
|
-
|
34
|
+
Installation
|
35
|
+
------------
|
31
36
|
|
32
|
-
|
37
|
+
gem install revenc
|
33
38
|
|
34
|
-
|
39
|
+
|
40
|
+
Usage
|
41
|
+
-----
|
35
42
|
|
36
43
|
revenc action [options]
|
37
44
|
|
38
|
-
|
45
|
+
### Actions ###
|
39
46
|
|
40
|
-
|
47
|
+
#### Mount ####
|
41
48
|
|
42
49
|
Reverse mount using EncFS. Source and mountpoint are not required when
|
43
50
|
using a configuration file.
|
@@ -50,7 +57,7 @@ This calls the executable "encfs" with the following by default:
|
|
50
57
|
<%= executable %> --stdinpass --reverse <%= source.name %> \
|
51
58
|
<%= mountpoint.name %> -- -o ro
|
52
59
|
|
53
|
-
|
60
|
+
#### Unmount ####
|
54
61
|
|
55
62
|
Unmount using EncFS. Mountpoint is required when specified by revenc.conf.
|
56
63
|
|
@@ -60,7 +67,7 @@ This calls the executable "fusermount" with the following by default:
|
|
60
67
|
|
61
68
|
<%= executable %> -u <%= mountpoint.name %>
|
62
69
|
|
63
|
-
|
70
|
+
#### Copy ####
|
64
71
|
|
65
72
|
Recursive copy with "cp -r", for rsync copy, see examples. Source and destination
|
66
73
|
are not required when specified by revenc.conf.
|
@@ -71,7 +78,7 @@ This calls the executable "cp" with the following by default:
|
|
71
78
|
|
72
79
|
<%= executable %> -r <%= source.name %> <%= destination.name %>
|
73
80
|
|
74
|
-
|
81
|
+
### Setup ###
|
75
82
|
|
76
83
|
The following is a walk through of the steps used to create the example project
|
77
84
|
"simple" in the examples folder.
|
@@ -85,7 +92,7 @@ The following is a walk through of the steps used to create the example project
|
|
85
92
|
echo "some stuff" > unencrypted_data/test_file1.txt
|
86
93
|
echo "some more stuff" > unencrypted_data/test_file2.txt
|
87
94
|
|
88
|
-
|
95
|
+
### Create the EncFS passphrase file ###
|
89
96
|
|
90
97
|
You must supply EncFS with a passphrase in plain text. The passphrase is piped in on the command line
|
91
98
|
to EncFS. This file can be stored anywhere on your trusted system. Revenc expects it in the
|
@@ -94,7 +101,7 @@ current folder, use revenc.conf to supply a different location.
|
|
94
101
|
echo "my_super_secret_PassPHRase" > passphrase
|
95
102
|
chmod 600 passphrase
|
96
103
|
|
97
|
-
|
104
|
+
### Generate the EncFS key file ###
|
98
105
|
|
99
106
|
Generation of your key file is done once. The same key is used for each mount action on the same
|
100
107
|
unencrypted source folder. You need to keep a copy of your key available in order to restore encrypted files.
|
@@ -145,7 +152,7 @@ now work with your encrypted files.
|
|
145
152
|
test_file1.txt test_file2.txt
|
146
153
|
|
147
154
|
|
148
|
-
|
155
|
+
### Configuration files ###
|
149
156
|
|
150
157
|
Revenc expects a passphrase file and the key file "encfs6.xml" to exist in the
|
151
158
|
current folder. You can override these locations using the revenc.conf file. Revenc
|
@@ -166,33 +173,32 @@ See the example configuration file examples/rsync/revenc.conf.
|
|
166
173
|
The file features/configuration.feature has more details.
|
167
174
|
|
168
175
|
|
169
|
-
|
176
|
+
System Requirements
|
177
|
+
-------------------
|
170
178
|
|
171
179
|
* POSIX system
|
172
180
|
* EncFS http://www.arg0.net/encfs
|
173
181
|
|
174
|
-
== Runtime Dependencies
|
175
182
|
|
176
|
-
|
177
|
-
|
183
|
+
Run-time dependencies
|
184
|
+
---------------------
|
185
|
+
The following gems are required by default in applications cloned from BasicApp.
|
186
|
+
|
187
|
+
* Term-ansicolor for optional color output <http://github.com/flori/term-ansicolor>
|
188
|
+
* Configatron for configuration support <http://github.com/markbates/configatron>
|
189
|
+
|
178
190
|
|
179
|
-
|
191
|
+
Development dependencies
|
192
|
+
------------------------
|
180
193
|
|
181
|
-
*
|
182
|
-
*
|
183
|
-
*
|
194
|
+
* Bundler for dependency management <http://github.com/carlhuda/bundler>
|
195
|
+
* Rspec for unit testing <http://github.com/dchelimsky/rspec>
|
196
|
+
* Cucumber for functional testing <http://github.com/aslakhellesoy/cucumber>
|
197
|
+
* Aruba for CLI testing <http://github.com/aslakhellesoy/aruba>
|
198
|
+
* YARD for documentation generation <http://github.com/lsegal/yard>
|
184
199
|
|
185
|
-
== Note on Patches/Pull Requests
|
186
|
-
|
187
|
-
* Fork the project.
|
188
|
-
* Make your feature addition or bug fix.
|
189
|
-
* Add tests for it. This is important so I don't break it in a
|
190
|
-
future version unintentionally.
|
191
|
-
* Commit, do not mess with rakefile, version, or history.
|
192
|
-
(if you want to have your own version, that is fine but bump version
|
193
|
-
in a commit by itself I can ignore when I pull)
|
194
|
-
* Send me a pull request. Bonus points for topic branches.
|
195
200
|
|
196
|
-
|
201
|
+
Copyright
|
202
|
+
---------
|
197
203
|
|
198
|
-
Copyright (c) 2010 GearheadForHire, LLC. See LICENSE for details.
|
204
|
+
Copyright (c) 2010 GearheadForHire, LLC. See [LICENSE](LICENSE) for details.
|
data/Rakefile
CHANGED
@@ -1,64 +1,55 @@
|
|
1
|
-
|
2
|
-
require 'rake'
|
1
|
+
# encoding: utf-8
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "revenc"
|
8
|
-
gem.summary = %Q{Helper for reverse mounting encrypted file systems}
|
9
|
-
gem.description = %Q{Mount, unmount, and copy/synchronize encrypted files to
|
10
|
-
untrusted destinations using EncFS and rsync}
|
11
|
-
gem.email = "robert@gearheadforhire.com"
|
12
|
-
gem.homepage = "http://github.com/robertwahler/revenc"
|
13
|
-
gem.authors = ["Robert Wahler"]
|
3
|
+
# bundler/setup is managing $LOAD_PATH, any gem needed by this Rakefile must
|
4
|
+
# be listed as a development dependency in the gemspec
|
14
5
|
|
15
|
-
|
16
|
-
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler/setup'
|
17
8
|
|
18
|
-
|
19
|
-
gem.add_development_dependency "cucumber", ">= 0.6"
|
20
|
-
gem.add_development_dependency "aruba", ">= 0.1.7"
|
9
|
+
Bundler::GemHelper.install_tasks
|
21
10
|
|
22
|
-
|
11
|
+
def gemspec
|
12
|
+
@gemspec ||= begin
|
13
|
+
file = File.expand_path('../revenc.gemspec', __FILE__)
|
14
|
+
eval(File.read(file), binding, file)
|
23
15
|
end
|
24
|
-
Jeweler::GemcutterTasks.new
|
25
|
-
rescue LoadError
|
26
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
27
16
|
end
|
28
17
|
|
18
|
+
require 'spec'
|
29
19
|
require 'spec/rake/spectask'
|
30
20
|
Spec::Rake::SpecTask.new(:spec) do |spec|
|
31
21
|
spec.libs << 'lib' << 'spec'
|
32
22
|
spec.spec_files = FileList['spec/**/*_spec.rb']
|
33
23
|
end
|
34
24
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
25
|
+
require 'cucumber'
|
26
|
+
require 'cucumber/rake/task'
|
27
|
+
Cucumber::Rake::Task.new(:features) do |task|
|
28
|
+
task.cucumber_opts = ["features"]
|
39
29
|
end
|
40
30
|
|
41
|
-
|
31
|
+
desc "Run specs and features"
|
32
|
+
task :test => [:spec, :features]
|
42
33
|
|
43
|
-
|
44
|
-
require 'cucumber/rake/task'
|
45
|
-
Cucumber::Rake::Task.new(:features)
|
34
|
+
task :default => :test
|
46
35
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
36
|
+
namespace :doc do
|
37
|
+
project_root = File.expand_path(File.dirname(__FILE__))
|
38
|
+
doc_destination = File.join(project_root, 'rdoc')
|
39
|
+
|
40
|
+
require 'yard'
|
41
|
+
require 'yard/rake/yardoc_task'
|
53
42
|
|
54
|
-
|
43
|
+
YARD::Rake::YardocTask.new(:generate) do |yt|
|
44
|
+
yt.options = ['--markup-provider', 'rdiscount',
|
45
|
+
'--output-dir', doc_destination
|
46
|
+
] +
|
47
|
+
gemspec.rdoc_options - ['--line-numbers', '--inline-source']
|
48
|
+
end
|
55
49
|
|
56
|
-
|
57
|
-
|
58
|
-
|
50
|
+
desc "Remove generated documenation"
|
51
|
+
task :clean do
|
52
|
+
rm_r doc_destination if File.exists?(doc_destination)
|
53
|
+
end
|
59
54
|
|
60
|
-
rdoc.rdoc_dir = 'rdoc'
|
61
|
-
rdoc.title = "Revenc #{version}"
|
62
|
-
rdoc.rdoc_files.include('README*')
|
63
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
64
55
|
end
|
data/TODO.markdown
ADDED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/bin/revenc
CHANGED
data/config/cucumber.yml
CHANGED
@@ -3,5 +3,5 @@ rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
|
3
3
|
rerun_opts = rerun.to_s.strip.empty? ? "--format pretty features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
4
4
|
std_opts = "#{rerun_opts} --format rerun --out rerun.txt --strict --tags ~@wip"
|
5
5
|
%>
|
6
|
-
default: <%= std_opts %>
|
6
|
+
default: <%= std_opts %>
|
7
7
|
wip: --tags @wip:3 --wip features
|
data/features/app.feature
CHANGED
@@ -7,7 +7,7 @@ Feature: Application actions, configuration and error handling
|
|
7
7
|
Scenario: No command line action
|
8
8
|
When I run "revenc"
|
9
9
|
Then the exit status should be 1
|
10
|
-
And
|
10
|
+
And the output should match:
|
11
11
|
"""
|
12
12
|
^.* action required
|
13
13
|
^.* --help for more information
|
@@ -16,7 +16,7 @@ Feature: Application actions, configuration and error handling
|
|
16
16
|
Scenario: Invalid action
|
17
17
|
When I run "revenc non-existing-action"
|
18
18
|
Then the exit status should be 1
|
19
|
-
And
|
19
|
+
And the output should match:
|
20
20
|
"""
|
21
21
|
^.* invalid action: non-existing-action
|
22
22
|
^.* --help for more information
|
@@ -26,18 +26,18 @@ Feature: Application actions, configuration and error handling
|
|
26
26
|
Scenario: --config FILE (exists)
|
27
27
|
Given an empty file named "config.conf"
|
28
28
|
When I run "revenc mount --verbose --config config.conf"
|
29
|
-
Then
|
29
|
+
Then the output should contain:
|
30
30
|
"""
|
31
31
|
loading config file: config.conf
|
32
32
|
"""
|
33
33
|
|
34
34
|
Scenario: --config FILE (not found)
|
35
35
|
When I run "revenc mount --verbose --config config.conf"
|
36
|
-
Then
|
36
|
+
Then the output should not contain:
|
37
37
|
"""
|
38
38
|
loading config file: config.conf
|
39
39
|
"""
|
40
|
-
And
|
40
|
+
And the output should contain:
|
41
41
|
"""
|
42
42
|
config file not found
|
43
43
|
"""
|
@@ -45,7 +45,7 @@ Feature: Application actions, configuration and error handling
|
|
45
45
|
Scenario: Backtrace with --verbose option
|
46
46
|
When I run "revenc --verbose mount bad_source bad_dest"
|
47
47
|
Then the exit status should be 1
|
48
|
-
And
|
48
|
+
And the output should match:
|
49
49
|
"""
|
50
50
|
lib/(.*)/app.rb
|
51
51
|
"""
|
@@ -53,7 +53,7 @@ Feature: Application actions, configuration and error handling
|
|
53
53
|
Scenario: No backtrace without --verbose option
|
54
54
|
When I run "revenc mount bad_source bad_dest --no-verbose"
|
55
55
|
Then the exit status should be 1
|
56
|
-
And
|
56
|
+
And the output should not contain:
|
57
57
|
"""
|
58
58
|
/app.rb:
|
59
59
|
"""
|
data/features/bin.feature
CHANGED
@@ -9,12 +9,12 @@ Feature: Options via a command line interface (CLI)
|
|
9
9
|
Scenario: Version info
|
10
10
|
When I run "revenc --version"
|
11
11
|
Then the exit status should be 0
|
12
|
-
And
|
12
|
+
And the output should match /revenc, version ([\d]+\.[\d]+\.[\d]+$)/
|
13
13
|
|
14
14
|
Scenario: Help
|
15
15
|
When I run "revenc --help"
|
16
16
|
Then the exit status should be 0
|
17
|
-
And
|
17
|
+
And the output should match:
|
18
18
|
"""
|
19
19
|
.*
|
20
20
|
Usage: .*
|
@@ -27,7 +27,7 @@ Feature: Options via a command line interface (CLI)
|
|
27
27
|
Scenario: Invalid option
|
28
28
|
When I run "revenc --non-existing-option"
|
29
29
|
Then the exit status should be 1
|
30
|
-
And
|
30
|
+
And the output should match:
|
31
31
|
"""
|
32
32
|
^.* invalid option: --non-existing-option
|
33
33
|
^.* --help for more information
|
@@ -36,7 +36,7 @@ Feature: Configuration via yaml file
|
|
36
36
|
|
37
37
|
Scenario: Mount with a config file
|
38
38
|
When I run "revenc --verbose --dry-run mount"
|
39
|
-
Then
|
39
|
+
Then the output should contain:
|
40
40
|
"""
|
41
41
|
mount: source=source_folder_name
|
42
42
|
mount: mountpoint=destination_folder_name
|
@@ -48,7 +48,7 @@ Feature: Configuration via yaml file
|
|
48
48
|
|
49
49
|
Scenario: Unmount with a config file
|
50
50
|
When I run "revenc unmount --verbose --dry-run"
|
51
|
-
Then
|
51
|
+
Then the output should contain:
|
52
52
|
"""
|
53
53
|
unmount: mountpoint=defaults_to_mount_mountpoint
|
54
54
|
unmount: cmd=/bin/echo -u defaults_to_mount_mountpoint
|
@@ -63,14 +63,14 @@ Feature: Configuration via yaml file
|
|
63
63
|
name: unmount_mountpoint_defaults_to_me
|
64
64
|
"""
|
65
65
|
When I run "revenc unmount --verbose --dry-run"
|
66
|
-
Then
|
66
|
+
Then the output should contain:
|
67
67
|
"""
|
68
68
|
unmount: mountpoint=unmount_mountpoint_defaults_to_me
|
69
69
|
"""
|
70
70
|
|
71
71
|
Scenario: Copy with a config file
|
72
72
|
When I run "revenc copy --verbose --dry-run"
|
73
|
-
Then
|
73
|
+
Then the output should contain:
|
74
74
|
"""
|
75
75
|
copy: source=copy_source_defaults_to_mount_mountpoint
|
76
76
|
copy: destination=copy_to_destination
|
@@ -89,7 +89,7 @@ Feature: Configuration via yaml file
|
|
89
89
|
name: copy_to_destination
|
90
90
|
"""
|
91
91
|
When I run "revenc copy --verbose --dry-run"
|
92
|
-
Then
|
92
|
+
Then the output should contain:
|
93
93
|
"""
|
94
94
|
copy: source=copy_source_defaults_to_me
|
95
95
|
copy: destination=copy_to_destination
|
data/features/copy.feature
CHANGED
@@ -52,7 +52,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
52
52
|
"""
|
53
53
|
When I run with a lock file present "revenc copy encrypted_source_folder encrypted_destination"
|
54
54
|
Then the exit status should be 1
|
55
|
-
And
|
55
|
+
And the output should contain:
|
56
56
|
"""
|
57
57
|
action failed, lock file present
|
58
58
|
"""
|
@@ -60,7 +60,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
60
60
|
Scenario: Source folder not specified
|
61
61
|
When I run "revenc copy"
|
62
62
|
Then the exit status should be 1
|
63
|
-
And
|
63
|
+
And the output should contain:
|
64
64
|
"""
|
65
65
|
source folder not specified
|
66
66
|
"""
|
@@ -68,7 +68,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
68
68
|
Scenario: Destination not specified
|
69
69
|
When I run "revenc copy encrypted_source_folder"
|
70
70
|
Then the exit status should be 1
|
71
|
-
And
|
71
|
+
And the output should contain:
|
72
72
|
"""
|
73
73
|
destination not specified
|
74
74
|
"""
|
@@ -76,7 +76,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
76
76
|
Scenario: Source folder doesn't exist
|
77
77
|
When I run "revenc copy encrypted_source_folder encrypted_destination"
|
78
78
|
Then the exit status should be 1
|
79
|
-
And
|
79
|
+
And the output should contain:
|
80
80
|
"""
|
81
81
|
source folder not found
|
82
82
|
"""
|
@@ -85,7 +85,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
85
85
|
Given a directory named "encrypted_source_folder"
|
86
86
|
When I run "revenc copy encrypted_source_folder encrypted_destination"
|
87
87
|
Then the exit status should be 1
|
88
|
-
And
|
88
|
+
And the output should contain:
|
89
89
|
"""
|
90
90
|
source folder is empty
|
91
91
|
"""
|
@@ -107,7 +107,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
107
107
|
name: copy_to_destination
|
108
108
|
"""
|
109
109
|
When I run "revenc copy --verbose --dry-run"
|
110
|
-
Then
|
110
|
+
Then the output should contain:
|
111
111
|
"""
|
112
112
|
mountpoint is empty
|
113
113
|
"""
|
@@ -128,7 +128,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
128
128
|
name: copy_to_destination
|
129
129
|
"""
|
130
130
|
When I run "revenc copy --verbose --dry-run"
|
131
|
-
Then
|
131
|
+
Then the output should contain:
|
132
132
|
"""
|
133
133
|
mountpoint not found
|
134
134
|
"""
|
@@ -146,11 +146,11 @@ Feature: Copy encrypted data to another location via rsync
|
|
146
146
|
name: copy_to_destination
|
147
147
|
"""
|
148
148
|
When I run "revenc copy --verbose --dry-run"
|
149
|
-
Then
|
149
|
+
Then the output should not contain:
|
150
150
|
"""
|
151
151
|
mountpoint not found
|
152
152
|
"""
|
153
|
-
And
|
153
|
+
And the output should not contain:
|
154
154
|
"""
|
155
155
|
mountpoint is empty
|
156
156
|
"""
|
@@ -163,7 +163,7 @@ Feature: Copy encrypted data to another location via rsync
|
|
163
163
|
"""
|
164
164
|
When I run "revenc copy encrypted_source_folder encrypted_destination"
|
165
165
|
Then the exit status should be 1
|
166
|
-
And
|
166
|
+
And the output should contain:
|
167
167
|
"""
|
168
168
|
executable not found
|
169
169
|
"""
|