I think you focus on wrong problem. Of course the code construction in
OpenSSL is weird:
~~~
# Deprecated.
#
# This class is only provided for backwards compatibility.
# Use OpenSSL::Cipher.
class Cipher < Cipher; end
deprecate_constant :Cipher
~~~
But you should probably focus on the beginning of the test suite output:
~~~
/usr/lib64/gems/ruby/openssl-2.1.2/openssl.so: warning: already
initialized constant OpenSSL::ASN1::CHARACTER_STRING
/usr/lib64/gems/ruby/openssl-2.1.2/openssl.so: warning: already
initialized constant OpenSSL::ASN1::BMPSTRING
/usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:18: warning:
constant OpenSSL::Cipher::Cipher is deprecated
/usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:24: warning:
already initialized constant OpenSSL::Cipher::AES
/usr/share/ruby/openssl/cipher.rb:24: warning: previous definition of
AES was here
/usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:18: warning:
constant OpenSSL::Cipher::Cipher is deprecated
/usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:24: warning:
already initialized constant OpenSSL::Cipher::CAST5
/usr/share/ruby/openssl/cipher.rb:24: warning: previous definition of
CAST5 was here
/usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:18: warning:
constant OpenSSL::Cipher::Cipher is deprecated
/usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:24: warning:
already initialized constant OpenSSL::Cipher::BF
/usr/share/ruby/openssl/cipher.rb:24: warning: previous definition of BF
was here
~~~
To me, this seems as if the gemified OpenSSL were mixed with the OpenSSL
linked into the StdLib and therefore some code is loaded twice and it
might result in errors as the one you are pointing out.
Vít
Dne 28. 01. 20 v 11:49 Pavel Valena napsal(a):
Hello,
it seems Ruby 2.7 came with some openssl surprise, because for some reason Vagrant
testsuite breaks:
https://copr-be.cloud.fedoraproject.org/results/pvalena/vagrant/fedora-ra...
https://koji.fedoraproject.org/koji/taskinfo?taskID=41097171
f.e.:
```
An error occurred while loading ./test/unit/plugins/pushes/ftp/push_test.rb.
Failure/Error: class Cipher < Cipher; end
TypeError:
superclass mismatch for class Cipher
# /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:64:in
`<class:Cipher>'
# /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:16:in
`<module:OpenSSL>'
# /usr/share/gems/gems/openssl-2.1.2/lib/openssl/cipher.rb:15:in `<top
(required)>'
# /usr/share/gems/gems/openssl-2.1.2/lib/openssl.rb:17:in `<top (required)>'
# /usr/share/ruby/net/ftp.rb:23:in `<top (required)>'
# ./plugins/pushes/ftp/push.rb:1:in `<top (required)>'
# ./test/unit/plugins/pushes/ftp/push_test.rb:4:in `<top (required)>'
```
But to my best efforts I wasn't able to trace it to the source.
Ideas?
Pavel