digest-crc 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f6be5490751ab763c1fdd99f95a2e4ae0a22a073969623f14170159cb55c5b0
4
- data.tar.gz: 7f152d312932b784ce074ce9d463bf07dd2bccf5035d9b1bc98dd8c804daa377
3
+ metadata.gz: 2d9232bc15248414404921523bad56602e83532f5d8d783c1f90bcbaaec045cd
4
+ data.tar.gz: 0e33fbe550c55afb0c56a9dce895f584a0eacc2d2957d00008b72338effcd03b
5
5
  SHA512:
6
- metadata.gz: 0e9e53d3fc14577e50276ea0f13b663bf62fcafbc2a063491e076bdec99d467f0c57ad0d0cb5b794af1dbadc6794db4070cb6d956b13f4525c5c30af3dea618b
7
- data.tar.gz: '07198de582c8e350def1763a6c2593ad8a42065c675826c278e3326e81d1a1960b613879a7df017727e12cdc4a4ffc36c15350108a3f6d87076e1f28e4d81afe'
6
+ metadata.gz: f6d6969231e3e6f5ffe90d97627f7e39e318713355009d2848d89e289aeae873a452865d4e34be9871fcc8d4d7725f369ab11dde24c45135ec610519b52c76a6
7
+ data.tar.gz: 562a7d60009f5ec9fe29ca8aa6555bed1607d7659b2903e3f2efcfb9f12e331e22e0ed370056c7f6d03f8443c282c2659b2192e259880510913c803380edaa5a
@@ -0,0 +1,26 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ tags: [ 'v0.*' ]
6
+ pull_request:
7
+ paths: [ 'ext/**' ]
8
+
9
+ jobs:
10
+ tests:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ name: Integration Testing
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - name: Set up Docker
18
+ uses: docker-practice/actions-setup-docker@master
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: 2.7
23
+ - name: Install dependencies
24
+ run: bundle install --jobs 4 --retry 3
25
+ - name: Run integration tests
26
+ run: bundle exec rake spec:integration
@@ -0,0 +1,30 @@
1
+ name: CI
2
+
3
+ on: [ push, pull_request ]
4
+
5
+ jobs:
6
+ tests:
7
+ runs-on: ${{ matrix.os }}
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ os:
12
+ - ubuntu-latest
13
+ - macos-latest
14
+ ruby:
15
+ - 2.4
16
+ - 2.5
17
+ - 2.6
18
+ - 2.7
19
+ - jruby
20
+ name: OS ${{ matrix.os }} / Ruby ${{ matrix.ruby }}
21
+ steps:
22
+ - uses: actions/checkout@v2
23
+ - name: Set up Ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ - name: Install dependencies
28
+ run: bundle install --jobs 4 --retry 3
29
+ - name: Run tests
30
+ run: bundle exec rake spec
data/.gitignore CHANGED
@@ -8,3 +8,4 @@ pkg
8
8
  /ext/digest/crc*/extconf.h
9
9
  /ext/digest/crc*/*.o
10
10
  /ext/digest/crc*/*.so
11
+ /spec/integration/docker/digest-crc.gem
@@ -1,3 +1,13 @@
1
+ ### 0.6.2 / 2020-12-03
2
+
3
+ * Lower the rake dependency to `~> 12.0` for ruby 2.6.
4
+ * Fixed a bug in `ext/digest/Rakefile` which prevented digest-crc from being
5
+ installed on systems where C extensions could not be successfully compiled.
6
+ * Rake's `ruby` method, which in turn calls rake's `sh` method, raises
7
+ a `RuntimeError` exception when the ruby command fails, causing rake to
8
+ exit with an error code. Instead, rescue any `RuntimeError` exceptions and
9
+ fail gracefully.
10
+
1
11
  ### 0.6.1 / 2020-07-02
2
12
 
3
13
  * Fix installation issues under bundler by adding rake as an explicit dependency
data/README.md CHANGED
@@ -54,6 +54,24 @@ module.
54
54
  gem install digest-crc
55
55
  ```
56
56
 
57
+ **Note:** to enable the C extensions ensure that you are using CRuby and have
58
+ a C compiler (`gcc` or `clang`) and `make` installed, _before_ installing
59
+ digest-crc.
60
+
61
+ * Debian / Ubuntu:
62
+
63
+ $ sudo apt install gcc make
64
+
65
+ * RedHat / Fedora:
66
+
67
+ $ sudo dnf install gcc make
68
+
69
+ * Alpine Linux:
70
+
71
+ $ apk add build-base
72
+
73
+ * macOS: install XCode
74
+
57
75
  ## Examples
58
76
 
59
77
  Calculate a CRC32:
@@ -157,7 +175,7 @@ end
157
175
  Digest::CRC64XZ#update 3.019690 0.000000 3.019690 ( 3.040971)
158
176
 
159
177
  ### C extensions (ruby 2.7.1)
160
- o
178
+
161
179
  $ bundle exec rake build:c_exts
162
180
  ...
163
181
  $ bundle exec ./benchmarks.rb
data/Rakefile CHANGED
@@ -23,19 +23,32 @@ CLEAN.include('ext/digest/crc*/Makefile')
23
23
  CLEAN.include('ext/digest/crc*/*.o')
24
24
  CLEAN.include('ext/digest/crc*/*.so')
25
25
 
26
+ file 'spec/integration/docker/digest-crc.gem' do |t|
27
+ sh "gem build -o #{t.name} digest-crc.gemspec"
28
+ end
29
+
26
30
  require 'rspec/core/rake_task'
27
31
  namespace :spec do
28
- RSpec::Core::RakeTask.new(:pure)
32
+ RSpec::Core::RakeTask.new(:pure) do |t|
33
+ t.exclude_pattern = 'spec/integration/*_spec.rb'
34
+ end
29
35
  task :pure => :clean
30
36
 
31
37
  if RUBY_ENGINE == 'ruby'
32
- RSpec::Core::RakeTask.new(:c_exts)
38
+ RSpec::Core::RakeTask.new(:c_exts) do |t|
39
+ t.exclude_pattern = 'spec/integration/*_spec.rb'
40
+ end
33
41
  task :c_exts => 'build:c_exts'
34
42
  end
43
+
44
+ RSpec::Core::RakeTask.new(:integration) do |t|
45
+ t.pattern = 'spec/integration/*_spec.rb'
46
+ end
35
47
  end
36
48
 
37
49
  task :spec => 'spec:pure'
38
50
  task :spec => 'spec:c_exts' if RUBY_ENGINE == 'ruby'
51
+
39
52
  task :test => :spec
40
53
  task :default => :spec
41
54
 
@@ -13,14 +13,6 @@ rescue LoadError
13
13
  fail_gracefully "mkmf is not installed"
14
14
  end
15
15
 
16
- MAKE = $make # set by mkmf
17
-
18
- def make(target=nil)
19
- if target then sh(MAKE,target)
20
- else sh(MAKE)
21
- end
22
- end
23
-
24
16
  CRCS = Dir['crc*']
25
17
  DLEXT = MakeMakefile::CONFIG['DLEXT']
26
18
 
@@ -29,7 +21,9 @@ CRCS.each do |crc|
29
21
 
30
22
  file "#{crc}/Makefile" => "#{crc}/extconf.rb" do
31
23
  Dir.chdir(crc) do
32
- unless ruby('-S', 'extconf.rb')
24
+ begin
25
+ ruby '-S', 'extconf.rb'
26
+ rescue
33
27
  fail_gracefully "extconf.rb failed"
34
28
  end
35
29
  end
@@ -39,9 +33,10 @@ CRCS.each do |crc|
39
33
 
40
34
  file "#{crc}/#{crc_ext_lib}" => "#{crc}/Makefile" do
41
35
  Dir.chdir(crc) do
42
- make 'clean'
43
-
44
- unless make
36
+ begin
37
+ sh 'make', 'clean'
38
+ sh 'make'
39
+ rescue
45
40
  fail_gracefully "Unable to build C extensions"
46
41
  end
47
42
  end
@@ -1,5 +1,5 @@
1
1
  name: digest-crc
2
- version: 0.6.1
2
+ version: 0.6.2
3
3
  summary: A Cyclic Redundancy Check (CRC) library for Ruby.
4
4
  description:
5
5
  Adds support for calculating Cyclic Redundancy Check (CRC) to the Digest
@@ -21,8 +21,8 @@ extensions:
21
21
 
22
22
  has_yard: true
23
23
 
24
+ dependencies:
25
+ rake: ~> 12.0
26
+
24
27
  development_dependencies:
25
28
  bundler: ~> 2.0
26
-
27
- dependencies:
28
- rake: ~> 13.0
@@ -6,5 +6,6 @@ module Digest
6
6
  #
7
7
  # @note Is exactly the same as the CRC16 X-25 algorithm.
8
8
  #
9
- CRC16QT = CRC16X25
9
+ class CRC16QT < CRC16X25
10
+ end
10
11
  end
@@ -5,6 +5,6 @@ describe "Digest::CRC16QT" do
5
5
  subject { Digest::CRC16QT }
6
6
 
7
7
  it "should be an alias to Digest::CRC16X25" do
8
- expect(subject).to be(Digest::CRC16X25)
8
+ expect(subject).to be < Digest::CRC16X25
9
9
  end
10
10
  end
@@ -0,0 +1,9 @@
1
+ ARG RUBY_VERSION=2.7.0
2
+ FROM ruby:${RUBY_VERSION}-slim
3
+
4
+ RUN apt-get update -y -qq
5
+ RUN apt-get install -y -qq bash
6
+
7
+ COPY ./digest-crc.gem .
8
+
9
+ ENTRYPOINT gem install ./digest-crc.gem
@@ -0,0 +1,3 @@
1
+ FROM test-digest-crc-base
2
+
3
+ RUN apt-get install -y -qq gcc
@@ -0,0 +1,3 @@
1
+ FROM test-digest-crc-with-gcc
2
+
3
+ RUN apt-get install -y -qq make
@@ -0,0 +1,59 @@
1
+ require 'rspec'
2
+
3
+ describe "installing digest-crc" do
4
+ ROOT_DIR = File.expand_path('../../..',__FILE__)
5
+ DOCKER_DIR = File.expand_path('../docker', __FILE__)
6
+
7
+ IMAGES = %w[
8
+ test-digest-crc-base
9
+ test-digest-crc-with-gcc
10
+ test-digest-crc-with-gcc-and-make
11
+ ]
12
+
13
+ before(:all) do
14
+ puts ">>> Building digest-crc gem ..."
15
+ Dir.chdir(ROOT_DIR) do
16
+ system 'gem', 'build',
17
+ '-o', File.join(DOCKER_DIR,'digest-crc.gem'),
18
+ 'digest-crc.gemspec'
19
+ end
20
+
21
+ IMAGES.each do |image|
22
+ suffix = image.sub('test-digest-crc-','')
23
+
24
+ puts ">>> Building #{image} docker image ..."
25
+ Dir.chdir(DOCKER_DIR) do
26
+ system "docker build -t #{image} --file Dockerfile.#{suffix} ."
27
+ end
28
+ end
29
+ end
30
+
31
+ context "when installing into a slim environment" do
32
+ let(:image) { 'test-digest-crc-base' }
33
+
34
+ it "should successfully install digest-crc" do
35
+ expect(system("docker run #{image}")).to be(true)
36
+ end
37
+ end
38
+
39
+ context "when gcc is installed" do
40
+ let(:image) { 'test-digest-crc-with-gcc' }
41
+
42
+ it "should successfully install digest-crc" do
43
+ expect(system("docker run #{image}")).to be(true)
44
+ end
45
+ end
46
+
47
+ context "when gcc and make are installed" do
48
+ let(:image) { 'test-digest-crc-with-gcc-and-make' }
49
+
50
+ it "should successfully install digest-crc" do
51
+ expect(system("docker run #{image}")).to be(true)
52
+ end
53
+ end
54
+
55
+ after(:all) do
56
+ puts ">>> Removing test-digest-crc docker images ..."
57
+ system "docker image rm -f #{IMAGES.reverse.join(' ')}"
58
+ end
59
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: digest-crc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-02 00:00:00.000000000 Z
11
+ date: 2020-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '13.0'
19
+ version: '12.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '13.0'
26
+ version: '12.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -49,9 +49,10 @@ extra_rdoc_files:
49
49
  - LICENSE.txt
50
50
  - README.md
51
51
  files:
52
+ - ".github/workflows/integration.yml"
53
+ - ".github/workflows/ruby.yml"
52
54
  - ".gitignore"
53
55
  - ".rspec"
54
- - ".travis.yml"
55
56
  - ".yardopts"
56
57
  - ChangeLog.md
57
58
  - Gemfile
@@ -223,6 +224,10 @@ files:
223
224
  - spec/crc8_spec.rb
224
225
  - spec/crc_examples.rb
225
226
  - spec/crc_spec.rb
227
+ - spec/integration/docker/Dockerfile.base
228
+ - spec/integration/docker/Dockerfile.with-gcc
229
+ - spec/integration/docker/Dockerfile.with-gcc-and-make
230
+ - spec/integration/install_spec.rb
226
231
  - spec/spec_helper.rb
227
232
  homepage: https://github.com/postmodern/digest-crc#readme
228
233
  licenses:
@@ -248,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
253
  - !ruby/object:Gem::Version
249
254
  version: '0'
250
255
  requirements: []
251
- rubygems_version: 3.1.2
256
+ rubygems_version: 3.1.4
252
257
  signing_key:
253
258
  specification_version: 4
254
259
  summary: A Cyclic Redundancy Check (CRC) library for Ruby.
@@ -1,24 +0,0 @@
1
- ---
2
- before_install:
3
- - gem update --system
4
- - gem install bundler -v "~> 2.0"
5
-
6
- language: ruby
7
- sudo: false
8
- cache:
9
- - bundler
10
-
11
- rvm:
12
- - 2.5
13
- - 2.6
14
- - 2.7
15
- - jruby
16
-
17
- matrix:
18
- include:
19
- - os: linux
20
- - os: osx
21
- allow_failures:
22
- - rvm: jruby
23
-
24
- script: bundle exec rake spec