jruby-openssl 0.9.4 → 0.14.0-java
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.
- checksums.yaml +7 -0
- data/History.md +652 -0
- data/LICENSE.txt +37 -0
- data/Mavenfile +163 -5
- data/README.md +75 -0
- data/Rakefile +52 -2
- data/lib/jopenssl/_compat23.rb +71 -0
- data/lib/jopenssl/load.rb +75 -16
- data/lib/jopenssl/version.rb +9 -4
- data/lib/jopenssl.jar +0 -0
- data/lib/openssl/bn.rb +40 -5
- data/lib/openssl/buffering.rb +477 -4
- data/lib/openssl/cipher.rb +67 -5
- data/lib/openssl/config.rb +500 -4
- data/lib/openssl/digest.rb +73 -5
- data/lib/openssl/hmac.rb +13 -0
- data/lib/openssl/marshal.rb +30 -0
- data/lib/openssl/pkcs12.rb +60 -99
- data/lib/openssl/pkcs5.rb +22 -0
- data/lib/openssl/pkey.rb +42 -0
- data/lib/openssl/ssl.rb +542 -4
- data/lib/openssl/x509.rb +368 -4
- data/lib/openssl.rb +3 -1
- data/lib/org/bouncycastle/bcpkix-jdk18on/1.71/bcpkix-jdk18on-1.71.jar +0 -0
- data/lib/org/bouncycastle/bcprov-jdk18on/1.71/bcprov-jdk18on-1.71.jar +0 -0
- data/lib/org/bouncycastle/bctls-jdk18on/1.71/bctls-jdk18on-1.71.jar +0 -0
- data/lib/org/bouncycastle/bcutil-jdk18on/1.71/bcutil-jdk18on-1.71.jar +0 -0
- data/pom.xml +772 -0
- metadata +40 -107
- data/History.txt +0 -218
- data/License.txt +0 -30
- data/README.txt +0 -13
- data/TODO-1_9-support.txt +0 -23
- data/lib/jopenssl18/openssl/bn.rb +0 -35
- data/lib/jopenssl18/openssl/buffering.rb +0 -241
- data/lib/jopenssl18/openssl/cipher.rb +0 -65
- data/lib/jopenssl18/openssl/config.rb +0 -316
- data/lib/jopenssl18/openssl/digest.rb +0 -61
- data/lib/jopenssl18/openssl/pkcs7.rb +0 -25
- data/lib/jopenssl18/openssl/ssl-internal.rb +0 -179
- data/lib/jopenssl18/openssl/ssl.rb +0 -1
- data/lib/jopenssl18/openssl/x509-internal.rb +0 -153
- data/lib/jopenssl18/openssl/x509.rb +0 -1
- data/lib/jopenssl18/openssl.rb +0 -67
- data/lib/jopenssl19/openssl/bn.rb +0 -35
- data/lib/jopenssl19/openssl/buffering.rb +0 -449
- data/lib/jopenssl19/openssl/cipher.rb +0 -65
- data/lib/jopenssl19/openssl/config.rb +0 -313
- data/lib/jopenssl19/openssl/digest.rb +0 -72
- data/lib/jopenssl19/openssl/ssl-internal.rb +0 -177
- data/lib/jopenssl19/openssl/ssl.rb +0 -2
- data/lib/jopenssl19/openssl/x509-internal.rb +0 -158
- data/lib/jopenssl19/openssl/x509.rb +0 -2
- data/lib/jopenssl19/openssl.rb +0 -23
- data/lib/openssl/pkcs7.rb +0 -5
- data/lib/openssl/ssl-internal.rb +0 -5
- data/lib/openssl/x509-internal.rb +0 -5
- data/test/java/pkcs7_mime_enveloped.message +0 -19
- data/test/java/pkcs7_mime_signed.message +0 -30
- data/test/java/pkcs7_multipart_signed.message +0 -45
- data/test/java/test_java_attribute.rb +0 -25
- data/test/java/test_java_bio.rb +0 -42
- data/test/java/test_java_mime.rb +0 -173
- data/test/java/test_java_pkcs7.rb +0 -772
- data/test/java/test_java_smime.rb +0 -177
- data/test/test_java.rb +0 -98
- data/test/ut_eof.rb +0 -128
@@ -1,177 +0,0 @@
|
|
1
|
-
module PKCS7Test
|
2
|
-
class TestJavaSMIME < Test::Unit::TestCase
|
3
|
-
def test_read_pkcs7_should_raise_error_when_parsing_headers_fails
|
4
|
-
bio = BIO.new
|
5
|
-
mime = Mime.new
|
6
|
-
mime.stubs(:parseHeaders).returns(nil)
|
7
|
-
|
8
|
-
begin
|
9
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
10
|
-
assert false
|
11
|
-
rescue PKCS7Exception => e
|
12
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
13
|
-
assert_equal PKCS7::R_MIME_PARSE_ERROR, e.cause.get_reason
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_read_pkcs7_should_raise_error_when_content_type_is_not_there
|
18
|
-
bio = BIO.new
|
19
|
-
mime = Mime.new
|
20
|
-
|
21
|
-
headers = ArrayList.new
|
22
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
23
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(nil)
|
24
|
-
|
25
|
-
begin
|
26
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
27
|
-
assert false
|
28
|
-
rescue PKCS7Exception => e
|
29
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
30
|
-
assert_equal PKCS7::R_NO_CONTENT_TYPE, e.cause.get_reason
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
mime = Mime.new
|
37
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
38
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", nil))
|
39
|
-
|
40
|
-
begin
|
41
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
42
|
-
assert false
|
43
|
-
rescue PKCS7Exception => e
|
44
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
45
|
-
assert_equal PKCS7::R_NO_CONTENT_TYPE, e.cause.get_reason
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_read_pkcs7_should_set_the_second_arguments_contents_to_null_if_its_there
|
50
|
-
mime = Mime.new
|
51
|
-
mime.stubs(:parseHeaders).raises("getOutOfJailForFree")
|
52
|
-
|
53
|
-
bio2 = BIO.new
|
54
|
-
arr = [bio2].to_java BIO
|
55
|
-
|
56
|
-
begin
|
57
|
-
SMIME.new(mime).readPKCS7(nil, arr)
|
58
|
-
rescue
|
59
|
-
end
|
60
|
-
|
61
|
-
assert_nil arr[0]
|
62
|
-
|
63
|
-
|
64
|
-
arr = [bio2, bio2].to_java BIO
|
65
|
-
begin
|
66
|
-
SMIME.new(mime).readPKCS7(nil, arr)
|
67
|
-
rescue
|
68
|
-
end
|
69
|
-
|
70
|
-
assert_nil arr[0]
|
71
|
-
assert_equal bio2, arr[1]
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_read_pkcs7_should_call_methods_on_mime
|
75
|
-
bio = BIO.new
|
76
|
-
mime = Mime.new
|
77
|
-
|
78
|
-
headers = ArrayList.new
|
79
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
80
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "application/pkcs7-mime"))
|
81
|
-
|
82
|
-
begin
|
83
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
84
|
-
rescue java.lang.UnsupportedOperationException
|
85
|
-
# This error is expected, since the bio used is not a real one
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_read_pkcs7_throws_correct_exception_if_wrong_content_type
|
90
|
-
bio = BIO.new
|
91
|
-
mime = Mime.new
|
92
|
-
|
93
|
-
headers = ArrayList.new
|
94
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
95
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "foo"))
|
96
|
-
|
97
|
-
begin
|
98
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
99
|
-
assert false
|
100
|
-
rescue PKCS7Exception => e
|
101
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
102
|
-
assert_equal PKCS7::R_INVALID_MIME_TYPE, e.cause.get_reason
|
103
|
-
assert_equal "type: foo", e.cause.error_data
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_read_pkcs7_with_multipart_should_fail_if_no_boundary_found
|
108
|
-
bio = BIO.new
|
109
|
-
mime = Mime.new
|
110
|
-
|
111
|
-
headers = ArrayList.new
|
112
|
-
hdr = MimeHeader.new("content-type", "multipart/signed")
|
113
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
114
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(hdr)
|
115
|
-
|
116
|
-
mime.expects(:findParam).with(hdr, "boundary").returns(nil)
|
117
|
-
|
118
|
-
begin
|
119
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
120
|
-
assert false
|
121
|
-
rescue PKCS7Exception => e
|
122
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
123
|
-
assert_equal PKCS7::R_NO_MULTIPART_BOUNDARY, e.cause.get_reason
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_read_pkcs7_with_multipart_should_fail_if_null_boundary_value
|
128
|
-
bio = BIO.new
|
129
|
-
mime = Mime.new
|
130
|
-
|
131
|
-
headers = ArrayList.new
|
132
|
-
hdr = MimeHeader.new("content-type", "multipart/signed")
|
133
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
134
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(hdr)
|
135
|
-
|
136
|
-
mime.expects(:findParam).with(hdr, "boundary").returns(MimeParam.new("boundary", nil))
|
137
|
-
|
138
|
-
begin
|
139
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
140
|
-
assert false
|
141
|
-
rescue PKCS7Exception => e
|
142
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
143
|
-
assert_equal PKCS7::R_NO_MULTIPART_BOUNDARY, e.cause.get_reason
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
# TODO: redo this test to be an integration test
|
148
|
-
def _test_read_pkcs7_happy_path_without_multipart
|
149
|
-
bio = BIO.new
|
150
|
-
mime = Mime.new
|
151
|
-
|
152
|
-
headers = ArrayList.new
|
153
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
154
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "application/pkcs7-mime"))
|
155
|
-
|
156
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
157
|
-
end
|
158
|
-
|
159
|
-
def test_read_pkcs7_happy_path_multipart
|
160
|
-
bio = BIO::from_string(MultipartSignedString)
|
161
|
-
mime = Mime::DEFAULT
|
162
|
-
p7 = SMIME.new(mime).readPKCS7(bio, nil)
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_read_pkcs7_happy_path_without_multipart_enveloped
|
166
|
-
bio = BIO::from_string(MimeEnvelopedString)
|
167
|
-
mime = Mime::DEFAULT
|
168
|
-
p7 = SMIME.new(mime).readPKCS7(bio, nil)
|
169
|
-
end
|
170
|
-
|
171
|
-
def test_read_pkcs7_happy_path_without_multipart_signed
|
172
|
-
bio = BIO::from_string(MimeSignedString)
|
173
|
-
mime = Mime::DEFAULT
|
174
|
-
p7 = SMIME.new(mime).readPKCS7(bio, nil)
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
data/test/test_java.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', 'build_lib', 'mocha', 'lib')
|
2
|
-
|
3
|
-
require "test/unit"
|
4
|
-
require 'mocha'
|
5
|
-
|
6
|
-
if defined?(JRUBY_VERSION)
|
7
|
-
require "java"
|
8
|
-
$CLASSPATH << 'pkg/classes'
|
9
|
-
$CLASSPATH << Dir["build_lib/bcprov-*"].first
|
10
|
-
|
11
|
-
module PKCS7Test
|
12
|
-
module ASN1
|
13
|
-
OctetString = org.bouncycastle.asn1.DEROctetString
|
14
|
-
end
|
15
|
-
|
16
|
-
PKCS7 = org.jruby.ext.openssl.impl.PKCS7 unless defined?(PKCS7)
|
17
|
-
Attribute = org.jruby.ext.openssl.impl.Attribute unless defined?(Attribute)
|
18
|
-
CipherSpec = org.jruby.ext.openssl.impl.CipherSpec unless defined?(CipherSpec)
|
19
|
-
Digest = org.jruby.ext.openssl.impl.Digest unless defined?(Digest)
|
20
|
-
EncContent = org.jruby.ext.openssl.impl.EncContent unless defined?(EncContent)
|
21
|
-
Encrypt = org.jruby.ext.openssl.impl.Encrypt unless defined?(Encrypt)
|
22
|
-
Envelope = org.jruby.ext.openssl.impl.Envelope unless defined?(Envelope)
|
23
|
-
IssuerAndSerial = org.jruby.ext.openssl.impl.IssuerAndSerial unless defined?(IssuerAndSerial)
|
24
|
-
RecipInfo = org.jruby.ext.openssl.impl.RecipInfo unless defined?(RecipInfo)
|
25
|
-
SignEnvelope = org.jruby.ext.openssl.impl.SignEnvelope unless defined?(SignEnvelope)
|
26
|
-
Signed = org.jruby.ext.openssl.impl.Signed unless defined?(Signed)
|
27
|
-
SMIME = org.jruby.ext.openssl.impl.SMIME unless defined?(SMIME)
|
28
|
-
Mime = org.jruby.ext.openssl.impl.Mime unless defined?(Mime)
|
29
|
-
MimeHeader = org.jruby.ext.openssl.impl.MimeHeader unless defined?(MimeHeader)
|
30
|
-
MimeParam = org.jruby.ext.openssl.impl.MimeParam unless defined?(MimeParam)
|
31
|
-
BIO = org.jruby.ext.openssl.impl.BIO unless defined?(BIO)
|
32
|
-
PKCS7Exception = org.jruby.ext.openssl.impl.PKCS7Exception unless defined?(PKCS7Exception)
|
33
|
-
ASN1Registry = org.jruby.ext.openssl.impl.ASN1Registry unless defined?(ASN1Registry)
|
34
|
-
AlgorithmIdentifier = org.bouncycastle.asn1.x509.AlgorithmIdentifier unless defined?(AlgorithmIdentifier)
|
35
|
-
SignerInfoWithPkey = org.jruby.ext.openssl.impl.SignerInfoWithPkey unless defined?(SignerInfoWithPkey)
|
36
|
-
IssuerAndSerialNumber = org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber unless defined?(IssuerAndSerialNumber)
|
37
|
-
ASN1InputStream = org.bouncycastle.asn1.ASN1InputStream unless defined?(ASN1InputStream)
|
38
|
-
X509AuxCertificate = org.jruby.ext.openssl.x509store.X509AuxCertificate unless defined?(X509AuxCertificate)
|
39
|
-
|
40
|
-
ArrayList = java.util.ArrayList unless defined?(ArrayList)
|
41
|
-
CertificateFactory = java.security.cert.CertificateFactory unless defined?(CertificateFactory)
|
42
|
-
BCP = org.bouncycastle.jce.provider.BouncyCastleProvider unless defined?(BCP)
|
43
|
-
ByteArrayInputStream = java.io.ByteArrayInputStream unless defined?(ByteArrayInputStream)
|
44
|
-
BigInteger = java.math.BigInteger unless defined?(BigInteger)
|
45
|
-
Cipher = javax.crypto.Cipher unless defined?(Cipher)
|
46
|
-
|
47
|
-
ASN1Integer = org.bouncycastle.asn1.ASN1Integer
|
48
|
-
DERSet = org.bouncycastle.asn1.DERSet
|
49
|
-
DEROctetString = org.bouncycastle.asn1.DEROctetString
|
50
|
-
X500Name = org.bouncycastle.asn1.x500.X500Name
|
51
|
-
|
52
|
-
|
53
|
-
MimeEnvelopedString = File::read(File.join(File.dirname(__FILE__), 'java', 'pkcs7_mime_enveloped.message'))
|
54
|
-
MimeSignedString = File::read(File.join(File.dirname(__FILE__), 'java', 'pkcs7_mime_signed.message'))
|
55
|
-
MultipartSignedString = File::read(File.join(File.dirname(__FILE__), 'java', 'pkcs7_multipart_signed.message'))
|
56
|
-
|
57
|
-
X509CertString = <<CERT
|
58
|
-
-----BEGIN CERTIFICATE-----
|
59
|
-
MIICijCCAXKgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA9MRMwEQYKCZImiZPyLGQB
|
60
|
-
GRYDb3JnMRkwFwYKCZImiZPyLGQBGRYJcnVieS1sYW5nMQswCQYDVQQDDAJDQTAe
|
61
|
-
Fw0wODA3MDgxOTE1NDZaFw0wODA3MDgxOTQ1NDZaMEQxEzARBgoJkiaJk/IsZAEZ
|
62
|
-
FgNvcmcxGTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxEjAQBgNVBAMMCWxvY2Fs
|
63
|
-
aG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAy8LEsNRApz7U/j5DoB4X
|
64
|
-
BgO9Z8Atv5y/OVQRp0ag8Tqo1YewsWijxEWB7JOATwpBN267U4T1nPZIxxEEO7n/
|
65
|
-
WNa2ws9JWsjah8ssEBFSxZqdXKSLf0N4Hi7/GQ/aYoaMCiQ8jA4jegK2FJmXM71u
|
66
|
-
Pe+jFN/peeBOpRfyXxRFOYcCAwEAAaMSMBAwDgYDVR0PAQH/BAQDAgWgMA0GCSqG
|
67
|
-
SIb3DQEBBQUAA4IBAQCU879BALJIM9avHiuZ3WTjDy0UYP3ZG5wtuSqBSnD1k8pr
|
68
|
-
hXfRaga7mDj6EQaGUovImb+KrRi6mZc+zsx4rTxwBNJT9U8yiW2eYxmgcT9/qKrD
|
69
|
-
/1nz+e8NeUCCDY5UTUHGszZw5zLEDgDX2n3E/CDIZsoRSyq5vXq1jpfih/tSWanj
|
70
|
-
Y9uP/o8Dc7ZcRJOAX7NPu1bbZcbxEbZ8sMe5wZ5HNiAR6gnOrjz2Yyazb//PSskE
|
71
|
-
4flt/2h4pzGA0/ZHcnDjcoLdiLtInsqPOlVDLgqd/XqRYWtj84N4gw1iS9cHyrIZ
|
72
|
-
dqbS54IKvzElD+R0QVS2z6TIGJSpuSBnZ4yfuNuq
|
73
|
-
-----END CERTIFICATE-----
|
74
|
-
CERT
|
75
|
-
|
76
|
-
X509CRLString = <<CRL
|
77
|
-
----BEGIN X509 CRL-----
|
78
|
-
MIIBlTB/AgEBMA0GCSqGSIb3DQEBBQUAMD0xEzARBgoJkiaJk/IsZAEZFgNvcmcx
|
79
|
-
GTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxCzAJBgNVBAMMAkNBFw0wODA3MTgx
|
80
|
-
NzQxMjhaFw0wODA3MTgxODA4MDhaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0B
|
81
|
-
AQUFAAOCAQEASJaj1keN+tMmsF3QmjH2RhbW/9rZAl4gjv+uQQqrcS2ByfkXLU1d
|
82
|
-
l/8rCHeT/XMoeU6xhQNHPP3uZBwfuuETcp65BMBcZFOUhUR0U5AaGhvSDS/+6EsP
|
83
|
-
zFdQgAagmThFdN5ei9guTLqWwN0ZyqiaHyevFJuk+L9qbKavaSeKqfJbU7Sj/Z3J
|
84
|
-
WLKoixvyj3N6W7evygH80lTvjZugmxJ1/AjICVSYr1hpHHd6EWq0b0YFrGFmg27R
|
85
|
-
WmsAXd0QV5UChfAJ2+Cz5U1bPszvIJGrzfAIoLxHv5rI5rseQzqZdPaFSe4Oehln
|
86
|
-
9qEYmsK3PS6bYoQol0cgj97Ep4olS8CulA==
|
87
|
-
-----END X509 CRL-----
|
88
|
-
CRL
|
89
|
-
|
90
|
-
X509Cert = X509AuxCertificate.new(CertificateFactory.getInstance("X.509",BCP.new).generateCertificate(ByteArrayInputStream.new(X509CertString.to_java_bytes)))
|
91
|
-
X509CRL = CertificateFactory.getInstance("X.509",BCP.new).generateCRL(ByteArrayInputStream.new(X509CRLString.to_java_bytes))
|
92
|
-
end
|
93
|
-
|
94
|
-
files = File.join(File.dirname(__FILE__), 'java', 'test_*.rb')
|
95
|
-
Dir.glob(files).sort.each do |tc|
|
96
|
-
require tc
|
97
|
-
end
|
98
|
-
end
|
data/test/ut_eof.rb
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
module TestEOF
|
4
|
-
def test_eof_0
|
5
|
-
open_file("") {|f|
|
6
|
-
assert_equal("", f.read(0))
|
7
|
-
assert_equal("", f.read(0))
|
8
|
-
assert_equal("", f.read)
|
9
|
-
assert_nil(f.read(0))
|
10
|
-
assert_nil(f.read(0))
|
11
|
-
}
|
12
|
-
open_file("") {|f|
|
13
|
-
assert_nil(f.read(1))
|
14
|
-
assert_equal("", f.read)
|
15
|
-
assert_nil(f.read(1))
|
16
|
-
}
|
17
|
-
open_file("") {|f|
|
18
|
-
s = "x"
|
19
|
-
assert_equal("", f.read(nil, s))
|
20
|
-
assert_equal("", s)
|
21
|
-
}
|
22
|
-
open_file("") {|f|
|
23
|
-
s = "x"
|
24
|
-
assert_nil(f.read(10, s))
|
25
|
-
assert_equal("", s)
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_eof_0_rw
|
30
|
-
return unless respond_to? :open_file_rw
|
31
|
-
open_file_rw("") {|f|
|
32
|
-
assert_equal("", f.read)
|
33
|
-
assert_equal("", f.read)
|
34
|
-
assert_equal(0, f.syswrite(""))
|
35
|
-
assert_equal("", f.read)
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_eof_1
|
40
|
-
open_file("a") {|f|
|
41
|
-
assert_equal("", f.read(0))
|
42
|
-
assert_equal("a", f.read(1))
|
43
|
-
assert_equal("" , f.read(0))
|
44
|
-
assert_equal("" , f.read(0))
|
45
|
-
assert_equal("", f.read)
|
46
|
-
assert_nil(f.read(0))
|
47
|
-
assert_nil(f.read(0))
|
48
|
-
}
|
49
|
-
open_file("a") {|f|
|
50
|
-
assert_equal("a", f.read(1))
|
51
|
-
assert_nil(f.read(1))
|
52
|
-
}
|
53
|
-
open_file("a") {|f|
|
54
|
-
assert_equal("a", f.read(2))
|
55
|
-
assert_nil(f.read(1))
|
56
|
-
assert_equal("", f.read)
|
57
|
-
assert_nil(f.read(1))
|
58
|
-
}
|
59
|
-
open_file("a") {|f|
|
60
|
-
assert_equal("a", f.read)
|
61
|
-
assert_nil(f.read(1))
|
62
|
-
assert_equal("", f.read)
|
63
|
-
assert_nil(f.read(1))
|
64
|
-
}
|
65
|
-
open_file("a") {|f|
|
66
|
-
assert_equal("a", f.read(2))
|
67
|
-
assert_equal("", f.read)
|
68
|
-
assert_equal("", f.read)
|
69
|
-
}
|
70
|
-
open_file("a") {|f|
|
71
|
-
assert_equal("a", f.read)
|
72
|
-
assert_nil(f.read(0))
|
73
|
-
}
|
74
|
-
open_file("a") {|f|
|
75
|
-
s = "x"
|
76
|
-
assert_equal("a", f.read(nil, s))
|
77
|
-
assert_equal("a", s)
|
78
|
-
}
|
79
|
-
open_file("a") {|f|
|
80
|
-
s = "x"
|
81
|
-
assert_equal("a", f.read(10, s))
|
82
|
-
assert_equal("a", s)
|
83
|
-
}
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_eof_2
|
87
|
-
open_file("") {|f|
|
88
|
-
assert_equal("", f.read)
|
89
|
-
assert(f.eof?)
|
90
|
-
}
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_eof_3
|
94
|
-
open_file("") {|f|
|
95
|
-
assert(f.eof?)
|
96
|
-
}
|
97
|
-
end
|
98
|
-
|
99
|
-
module Seek
|
100
|
-
def open_file_seek(content, pos)
|
101
|
-
open_file(content) do |f|
|
102
|
-
f.seek(pos)
|
103
|
-
yield f
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_eof_0_seek
|
108
|
-
open_file_seek("", 10) {|f|
|
109
|
-
assert_equal(10, f.pos)
|
110
|
-
assert_equal("", f.read(0))
|
111
|
-
assert_equal("", f.read)
|
112
|
-
assert_nil(f.read(0))
|
113
|
-
assert_equal("", f.read)
|
114
|
-
}
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_eof_1_seek
|
118
|
-
open_file_seek("a", 10) {|f|
|
119
|
-
assert_equal("", f.read)
|
120
|
-
assert_equal("", f.read)
|
121
|
-
}
|
122
|
-
open_file_seek("a", 1) {|f|
|
123
|
-
assert_equal("", f.read)
|
124
|
-
assert_equal("", f.read)
|
125
|
-
}
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|