diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-07 12:04:49 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-07 12:04:49 +0000 |
commit | 95e8c48dd3348503a8c7db5d0498894a1b676395 (patch) | |
tree | 9eef7f720314ebaff56845a74e203770e62284e4 /spec/rubyspec/library/digest/sha1 | |
parent | ed7d803500de38186c74bce94d233e85ef51e503 (diff) |
Add in-tree mspec and ruby/spec
* For easier modifications of ruby/spec by MRI developers.
* .gitignore: track changes under spec.
* spec/mspec, spec/rubyspec: add in-tree mspec and ruby/spec.
These files can therefore be updated like any other file in MRI.
Instructions are provided in spec/README.
[Feature #13156] [ruby-core:79246]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/rubyspec/library/digest/sha1')
-rw-r--r-- | spec/rubyspec/library/digest/sha1/digest_spec.rb | 20 | ||||
-rw-r--r-- | spec/rubyspec/library/digest/sha1/file_spec.rb | 43 | ||||
-rw-r--r-- | spec/rubyspec/library/digest/sha1/shared/constants.rb | 17 |
3 files changed, 80 insertions, 0 deletions
diff --git a/spec/rubyspec/library/digest/sha1/digest_spec.rb b/spec/rubyspec/library/digest/sha1/digest_spec.rb new file mode 100644 index 0000000000..abb4034a69 --- /dev/null +++ b/spec/rubyspec/library/digest/sha1/digest_spec.rb @@ -0,0 +1,20 @@ +require File.expand_path('../../../../spec_helper', __FILE__) +require File.expand_path('../shared/constants', __FILE__) + +describe "Digest::SHA1#digest" do + + it "returns a digest" do + cur_digest = Digest::SHA1.new + cur_digest.digest().should == SHA1Constants::BlankDigest + cur_digest.digest(SHA1Constants::Contents).should == SHA1Constants::Digest + end + +end + +describe "Digest::SHA1.digest" do + + it "returns a digest" do + Digest::SHA1.digest(SHA1Constants::Contents).should == SHA1Constants::Digest + end + +end diff --git a/spec/rubyspec/library/digest/sha1/file_spec.rb b/spec/rubyspec/library/digest/sha1/file_spec.rb new file mode 100644 index 0000000000..2c9fd2cb52 --- /dev/null +++ b/spec/rubyspec/library/digest/sha1/file_spec.rb @@ -0,0 +1,43 @@ +require File.expand_path('../../../../spec_helper', __FILE__) +require File.expand_path('../shared/constants', __FILE__) +require File.expand_path('../../../../core/file/shared/read', __FILE__) + +describe "Digest::SHA1.file" do + + describe "when passed a path to a file that exists" do + before :each do + @file = tmp("md5_temp") + touch(@file, 'wb') {|f| f.write SHA1Constants::Contents } + end + + after :each do + rm_r @file + end + + it "returns a Digest::SHA1 object" do + Digest::SHA1.file(@file).should be_kind_of(Digest::SHA1) + end + + it "returns a Digest::SHA1 object with the correct digest" do + Digest::SHA1.file(@file).digest.should == SHA1Constants::Digest + end + + it "calls #to_str on an object and returns the Digest::SHA1 with the result" do + obj = mock("to_str") + obj.should_receive(:to_str).and_return(@file) + result = Digest::SHA1.file(obj) + result.should be_kind_of(Digest::SHA1) + result.digest.should == SHA1Constants::Digest + end + end + + it_behaves_like :file_read_directory, :file, Digest::SHA1 + + it "raises a Errno::ENOENT when passed a path that does not exist" do + lambda { Digest::SHA1.file("") }.should raise_error(Errno::ENOENT) + end + + it "raises a TypeError when passed nil" do + lambda { Digest::SHA1.file(nil) }.should raise_error(TypeError) + end +end diff --git a/spec/rubyspec/library/digest/sha1/shared/constants.rb b/spec/rubyspec/library/digest/sha1/shared/constants.rb new file mode 100644 index 0000000000..add86b1dd3 --- /dev/null +++ b/spec/rubyspec/library/digest/sha1/shared/constants.rb @@ -0,0 +1,17 @@ +# -*- encoding: binary -*- + +require 'digest/sha1' + +module SHA1Constants + + Contents = "Ipsum is simply dummy text of the printing and typesetting industry. \nLorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. \nIt has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. \nIt was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum." + + Klass = ::Digest::SHA1 + BlockLength = 64 + DigestLength = 20 + BlankDigest = "\3329\243\356^kK\r2U\277\357\225`\030\220\257\330\a\t" + Digest = "X!\255b\323\035\352\314a|q\344+\376\317\361V9\324\343" + BlankHexdigest = "da39a3ee5e6b4b0d3255bfef95601890afd80709" + Hexdigest = "e907d2ba21c6c74bc0efd76e44d11fb9bbb7a75e" + +end |