cucumber test for thin_check --super-block-only

This commit is contained in:
Joe Thornber 2013-04-11 13:40:47 +01:00
parent 7d3ab79789
commit 3629e1e2b5
4 changed files with 52 additions and 1 deletions

View File

@ -0,0 +1,13 @@
Given(/^valid metadata$/) do
in_current_dir do
write_valid_xml(xml_file)
end
run_simple("dd if=/dev/zero of=#{dev_file} bs=4k count=1024")
run_simple("thin_restore -i #{xml_file} -o #{dev_file}")
end
When(/^I run thin_check with (.*?)$/) do |opts|
run "thin_check #{opts} #{dev_file}"
end

View File

@ -0,0 +1,29 @@
module ThinpWorld
def tools_version
"0.1.5+"
end
def xml_file
'metadata.xml'
end
def dev_file
'metadata.bin'
end
# FIXME: we should really break out the xml stuff from
# thinp-test-suite and put in a gem in this repo.
def write_valid_xml(path)
File.open(path, "w+") do |f|
f.write <<EOF
<superblock uuid="" time="0" transaction="0" data_block_size="128" nr_data_blocks="0">
<device dev_id="0" mapped_blocks="2" transaction="0" creation_time="0" snap_time="0">
<range_mapping origin_begin="0" data_begin="0" length="2" time="0"/>
</device>
</superblock>
EOF
end
end
end
World(ThinpWorld)

View File

@ -37,4 +37,11 @@ Feature: thin_check
{-q|--quiet} {-q|--quiet}
{-h|--help} {-h|--help}
{-V|--version} {-V|--version}
{--super-block-only}
""" """
@announce
Scenario: --super-block-only check passes on valid metadata
Given valid metadata
When I run thin_check with --super-block-only
Then it should pass

View File

@ -53,7 +53,8 @@ namespace {
<< "Options:" << endl << "Options:" << endl
<< " {-q|--quiet}" << endl << " {-q|--quiet}" << endl
<< " {-h|--help}" << endl << " {-h|--help}" << endl
<< " {-V|--version}" << endl; << " {-V|--version}" << endl
<< " {--super-block-only}" << endl;
} }
} }
@ -66,6 +67,7 @@ int main(int argc, char **argv)
{ "quiet", no_argument, NULL, 'q'}, { "quiet", no_argument, NULL, 'q'},
{ "help", no_argument, NULL, 'h'}, { "help", no_argument, NULL, 'h'},
{ "version", no_argument, NULL, 'V'}, { "version", no_argument, NULL, 'V'},
{ "super-block-only", no_argument, NULL, 0},
{ NULL, no_argument, NULL, 0 } { NULL, no_argument, NULL, 0 }
}; };