App-Fetchware
view release on metacpan or search on metacpan
t/App-Fetchware-new.t view on Meta::CPAN
'checked prompt_for_other_options() specify some configuration options.');
# The weird regex is just so it can match any possible configuration option,
# because due to hashes being unordered I don't know which options are which
# numbers without complicated parsing that I'm not doing.
expect_like(qr/[\w .,?!]+/,
'checked prompt_for_other_options() received a specifc config option.');
expect_send('Some test value who cares',
'checked prompt_for_other_options() specify a specific config option.');
expect_like(qr/[\w .,?!]+/,
'checked prompt_for_other_options() received a specifc config option.');
expect_send('Some test value who cares',
'checked prompt_for_other_options() specify a specific config option.');
expect_like(qr/[\w .,?!]+/,
'checked prompt_for_other_options() received a specifc config option.');
expect_send('Some test value who cares',
'checked prompt_for_other_options() specify a specific config option.');
expect_quit();
};
subtest 'test get_mirrors() success' => sub {
skip_all_unless_release_testing();
plan(skip_all => 'Optional Test::Expect testing module not installed.')
unless eval {require Test::Expect; Test::Expect->import(); 1;};
# Disable Term::UI's AUTOREPLY for this subtest, because unless I use
# something crazy like Test::Expect, this will have to be tested "manually."
local $Term::UI::AUTOREPLY = 0;
# Fix the "out of orderness" thanks to Test::Builder messing with
# STD{OUT,ERR}.
local $| = 1;
# Have Expect tell me what it's doing for easier debugging.
#$Expect::Exp_Internal = 1;
expect_run(
command => 't/App-Fetchware-new-get_mirrors',
prompt => [-re => qr/: |\? /],
quit => "\cC"
);
# First test that the command produced the correct outout.
expect_like(qr/Fetchware requires you to please provide a mirror. This mirror is required,/,
'checked add_mirror() received correct mirror prompt');
# Have Expect print an example URL.
expect_send('http://who.cares/whatever/',
'check add_mirror() sent mirror URL.');
# Check if upon receiving the URL the command prints out the next correct
# prompt.
expect_like(qr/Would you like to add any additional mirrors?/,
'checked get_mirrors() received more mirrors prompt.');
expect_send('N', 'checked get_mirrors() say No to more mirrors.');
expect_quit();
# Test answering Yes for more mirrors.
expect_run(
command => 't/App-Fetchware-new-get_mirrors',
prompt => [-re => qr/: |\? /],
quit => "\cC"
);
# First test that the command produced the correct outout.
expect_like(qr/Fetchware requires you to please provide a mirror. This mirror is required,/,
'checked add_mirror() received correct mirror prompt');
# Have Expect print an example URL.
expect_send('http://who.cares/whatever/',
'check add_mirror() sent mirror URL.');
# Check if upon receiving the URL the command prints out the next correct
# prompt.
expect_like(qr/Would you like to add any additional mirrors?/,
'checked get_mirrors() received more mirrors prompt.');
expect_send('Y', 'checked get_mirrors() say No to more mirrors.');
expect_like(qr!\[y/N\]|Type in URL of mirror or done to continue!,
'checked get_mirrors() received prompt to enter a mirror.');
expect_send('ftp://afakemirror.blah/huh?',
'checked get_mirrors() sent another mirror URL.');
expect_like(qr/Type in URL of mirror or done to continue/,
'checked get_mirrors() received prompt to enter a mirror.');
expect_send('ftp://anotherfake.mirror/kasdjlfkjd',
'checked get_mirrors() sent another mirror URL.');
expect_like(qr/Type in URL of mirror or done to continue/,
'checked get_mirrors() received prompt to enter a mirror.');
expect_send('done',
'checked get_mirrors() sent done.');
expect_quit();
};
subtest 'test get_verification() success' => sub {
skip_all_unless_release_testing();
plan(skip_all => 'Optional Test::Expect testing module not installed.')
unless eval {require Test::Expect; Test::Expect->import(); 1;};
# Disable Term::UI's AUTOREPLY for this subtest, because unless I use
# something crazy like Test::Expect, this will have to be tested "manually."
local $Term::UI::AUTOREPLY = 0;
# Fix the "out of orderness" thanks to Test::Builder messing with
# STD{OUT,ERR}.
local $| = 1;
# Have Expect tell me what it's doing for easier debugging.
#$Expect::Exp_Internal = 1;
expect_run(
command => 't/App-Fetchware-new-get_verification',
prompt => [-re => qr/: |\? /],
quit => "\cC"
);
# First test that the command produced the correct outout.
expect_like(qr/Automatic KEYS file discovery failed. Fetchware needs the/,
'checked get_verification() received correct mirror prompt');
# Have Expect print an example URL.
expect_send('Y',
'check get_verification() sent manual KEYS file Y.');
expect_like(qr<\[y/N\]|Automatic verification of your fetchware package has failed!>,
'check get_verification() received no verify prompt.');
expect_send('Y',
'checked get_verification() sent no verify Y.');
t/App-Fetchware-new.t view on Meta::CPAN
EOD
}
);
$fetchwarefile = edit_manually($term, $fetchwarefile);
isa_ok($fetchwarefile, 'App::Fetchware::Fetchwarefile',
'Test Fetchwarefile');
};
##TODO#####BUGALERT### The code below that tests cmd_new() has *not* been updated yet to
##TODO###the Fetchware refactor where cmd_new()'s behavior was moved into App::Fetchware
##TODO###as the new API subroutines new() and new_install(). So, if you wish to test the
##TODO###code below, you'll have to fix it up to work how new() works after the
##TODO###refactor. Also note, the code below has been copied and pasted to become with
##TODO###basis of t/App-Fetchware-new_install.t and even the updated to work with the
##TODO###refactor, t/bin-fetchware-new.t.
##TODO####BROKEN##subtest 'test cmd_new() success' => sub {
##TODO####BROKEN## skip_all_unless_release_testing();
##TODO####BROKEN##
##TODO####BROKEN## plan(skip_all => 'Optional Test::Expect testing module not installed.')
##TODO####BROKEN## unless eval {require Test::Expect; Test::Expect->import(); 1;};
##TODO####BROKEN##
##TODO####BROKEN## # Disable Term::UI's AUTOREPLY for this subtest, because unless I use
##TODO####BROKEN## # something crazy like Test::Expect, this will have to be tested "manually."
##TODO####BROKEN## local $Term::UI::AUTOREPLY = 0;
##TODO####BROKEN## # Fix the "out of orderness" thanks to Test::Builder messing with
##TODO####BROKEN## # STD{OUT,ERR}.
##TODO####BROKEN### local $| = 1;
##TODO####BROKEN##
##TODO####BROKEN## # Have Expect tell me what it's doing for easier debugging.
##TODO####BROKEN## $Expect::Exp_Internal = 1;
##TODO####BROKEN##
##TODO####BROKEN## expect_run(
##TODO####BROKEN## command => 't/bin-fetchware-new-cmd_new',
##TODO####BROKEN### prompt => [-re => qr/((?<!\? \[y\/N\]): |\? )/ms],
##TODO####BROKEN## #prompt => [-re => qr/(\?|:) \[y\/N\] |\? |: /ims],
##TODO####BROKEN### prompt => [-re => qr/((?:\?|:) \[y\/N\]: )|\? |: /i],
##TODO####BROKEN## prompt => [-re => qr/ \[y\/N\]: |\? |: /i],
##TODO####BROKEN### prompt => [-re => qr/\? \n/ims],
##TODO####BROKEN## quit => "\cC"
##TODO####BROKEN## );
##TODO####BROKEN##
##TODO####BROKEN## # Have Expect restart its timeout anytime output is received. Should keep
##TODO####BROKEN## # expect from timeingout while it's waiting for Apache to compile.
##TODO####BROKEN## #my $exp = expect_handle();
##TODO####BROKEN## #$exp->restart_timeout_upon_receive(1);
##TODO####BROKEN##
##TODO####BROKEN## # First test that the command produced the correct outout.
##TODO####BROKEN## expect_like(qr/Fetchware's new command is reasonably sophisticated, and is smart enough to/ms,
##TODO####BROKEN## 'checked cmd_new() received correct name prompt');
##TODO####BROKEN##
##TODO####BROKEN## expect_send('Apache',
##TODO####BROKEN## 'check cmd_new() sent Apache as my name.');
##TODO####BROKEN##
##TODO####BROKEN## expect_like(qr/Fetchware's heart and soul is its lookup_url. This is the configuration option/ms,
##TODO####BROKEN## 'checked cmd_new() received lookup_url prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_send("$ENV{FETCHWARE_HTTP_LOOKUP_URL}",
##TODO####BROKEN## 'checked cmd_new() say lookup_url.');
##TODO####BROKEN##
##TODO####BROKEN## expect_like(qr/Fetchware requires you to please provide a mirror. This mirror is required,/ms,
##TODO####BROKEN## 'checked cmd_new() received mirror prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_send("$ENV{FETCHWARE_HTTP_MIRROR_URL}",
##TODO####BROKEN## 'checked cmd_new() say mirror.');
##TODO####BROKEN##
##TODO####BROKEN## expect_like(qr/In addition to the one required mirror that you must define in order for/ms,
##TODO####BROKEN## 'checked cmd_new() received more mirrors prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_send('N',
##TODO####BROKEN## 'checked cmd_new() say N for more mirrors.');
##TODO####BROKEN##
##TODO####BROKEN## #expect_like(qr!\[y/N\]|gpg digital signatures found. Using gpg verification.!ms,
##TODO####BROKEN## expect_like(qr!.*|gpg digital signatures found. Using gpg verification.!ms,
##TODO####BROKEN## 'checked cmd_new() received filter prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_send('httpd-2.2',
##TODO####BROKEN## 'checked cmd_new() say httpd-2.2 for filter option.');
##TODO####BROKEN##
##TODO####BROKEN## expect_like(qr/Fetchware has many different configuration options that allow you to control its/ms,
##TODO####BROKEN## 'checked cmd_new() received extra config prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_send('N',
##TODO####BROKEN## 'checked cmd_new() say N for more config options prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_like(qr/Fetchware has now asked you all of the needed questions to determine what it/ms,
##TODO####BROKEN## 'checked cmd_new() received edit config prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_send('N',
##TODO####BROKEN## 'checked cmd_new() say N for edit config prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_like(qr/It is recommended that fetchware go ahead and install the program based on the/ms,
##TODO####BROKEN## 'checked cmd_new() received install program prompt.');
##TODO####BROKEN##
##TODO####BROKEN## # Say no to avoid actually installing Apache yet again.
##TODO####BROKEN## expect_send('N',
##TODO####BROKEN## 'checked cmd_new() say N for install program prompt.');
##TODO####BROKEN##
##TODO####BROKEN## expect_quit();
##TODO####BROKEN##};
} # #End of gigantic skip block.
# Remove this or comment it out, and specify the number of tests, because doing
# so is more robust than using this, but this is better than no_plan.
#done_testing();
( run in 1.325 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )