X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Fcrypt.t;h=27c878f1bd5d3a01f512ba3df917201cc621aefa;hb=e081bb54e0eecfb962e7f0cfd84fcbdb2683d54d;hp=26eb06a5806e28fa9654feca388d140c31d22497;hpb=c9b8d07a63ebe36e22cf35e83f7d6beac85bca88;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/crypt.t b/t/op/crypt.t index 26eb06a..27c878f 100644 --- a/t/op/crypt.t +++ b/t/op/crypt.t @@ -1,4 +1,22 @@ -use Test::More tests => 2; +#!./perl -w + +BEGIN { + chdir 't' if -d 't'; + @INC = qw(. ../lib); +} + +BEGIN { + use Config; + + require "test.pl"; + + if( !$Config{d_crypt} ) { + skip_all("crypt unimplemented"); + } + else { + plan(tests => 4); + } +} # Can't assume too much about the string returned by crypt(), # and about how many bytes of the encrypted (really, hashed) @@ -10,6 +28,19 @@ use Test::More tests => 2; # bets, given alternative encryption/hashing schemes like MD5, # C2 (or higher) security schemes, and non-UNIX platforms. -ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt"); +SKIP: { + skip ("VOS crypt ignores salt.", 1) if ($^O eq 'vos'); + ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt makes a difference"); +} + +$a = "a\xFF\x{100}"; + +eval {$b = crypt($a, "cd")}; +like($@, qr/Wide character in crypt/, "wide characters ungood"); + +chop $a; # throw away the wide character + +eval {$b = crypt($a, "cd")}; +is($@, '', "downgrade to eight bit characters"); +is($b, crypt("a\xFF", "cd"), "downgrade results agree"); -ok(crypt("HI", "HO") eq crypt(v4040.4041, "HO"), "Unicode");