Skip to content

Commit 7fb8868

Browse files
committed
update without nmatrix too
1 parent 7980644 commit 7fb8868

File tree

5 files changed

+86
-82
lines changed

5 files changed

+86
-82
lines changed

Diff for: CONTRIBUTING.md

+12-16
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,25 @@ Either nmatrix or rb-gsl are NOT NECESSARY for using daru. They are just require
66

77
To install dependencies, execute the following commands:
88

9-
* `sudo apt-get update -qq`
10-
* `sudo apt-get install -y libgsl0-dev r-base r-base-dev`
11-
* `sudo Rscript -e "install.packages(c('Rserve','irr'),,'http://cran.us.r-project.org')"`
12-
* `sudo apt-get install libmagickwand-dev imagemagick`
13-
14-
15-
Then install remaining dependencies:
16-
17-
`bundle install`
9+
``` bash
10+
sudo apt-get update -qq
11+
sudo apt-get install -y libgsl0-dev r-base r-base-dev
12+
sudo Rscript -e "install.packages(c('Rserve','irr'),,'http://cran.us.r-project.org')"
13+
sudo apt-get install libmagickwand-dev imagemagick
14+
export DARU_TEST_NMATRIX=1 # for running nmatrix tests.
15+
export DARU_TEST_GSL=1 # for running rb-GSL tests.
16+
bundle install
17+
```
18+
You don't need `DARU_TEST_NMATRIX` or `DARU_TEST_GSL` if you don't want to make changes
19+
to those parts of the code. However, they will be set in CI and will raise a test failure
20+
if something goes wrong.
1821

1922
And run the test suite (should be all green with pending tests):
2023

2124
`bundle exec rspec`
2225

2326
If you have problems installing nmatrix, please consult the [nmatrix installation wiki](https://github.com/SciRuby/nmatrix/wiki/Installation) or the [mailing list](https://groups.google.com/forum/#!forum/sciruby-dev).
2427

25-
**NOTE**: `Daru` is compatible with Ruby versions < 2.5; for later Ruby versions it breaks, returning the following error in versions >= 2.5.
26-
```
27-
/gems/packable-1.3.10/lib/packable/extensions/io.rb:86:in `pos': Illegal seek @ rb_io_tell - <STDOUT> (Errno::ESPIPE)
28-
```
29-
To reproduce this issue or explore this error further, head over to
30-
[issue #500](https://github.com/SciRuby/daru/issues/500),
31-
[issue #503](https://github.com/SciRuby/daru/issues/503). Also, if you want to fix this issue, then please discuss it here : [#505](https://github.com/SciRuby/daru/issues/500)
3228

3329
While preparing your pull requests, don't forget to check your code with Rubocop:
3430

Diff for: daru.gemspec

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,17 @@ Gem::Specification.new do |spec|
3232

3333
spec.add_development_dependency 'spreadsheet', '~> 1.1.1'
3434
spec.add_development_dependency 'bundler', '>= 1.10'
35-
spec.add_development_dependency 'rake', '~>10.5'
35+
spec.add_development_dependency 'rake', '~>13.0'
3636
spec.add_development_dependency 'pry', '~> 0.10'
3737
spec.add_development_dependency 'pry-byebug'
3838
spec.add_development_dependency 'rserve-client', '~> 0.3'
3939
spec.add_development_dependency 'rspec', '~> 3.4'
4040
spec.add_development_dependency 'rspec-its'
4141
spec.add_development_dependency 'awesome_print'
4242
spec.add_development_dependency 'nyaplot', '~> 0.1.5'
43-
spec.add_development_dependency 'nmatrix', '~> 0.2.1'
43+
spec.add_development_dependency 'nmatrix', '~> 0.2.1' if ENV['DARU_TEST_NMATRIX']
4444
spec.add_development_dependency 'distribution', '~> 0.7'
45-
spec.add_development_dependency 'gsl', '~>2.1.0.2'
45+
spec.add_development_dependency 'gsl', '~>2.1.0.2' if ENV['DARU_TEST_GSL']
4646
spec.add_development_dependency 'dbd-sqlite3'
4747
spec.add_development_dependency 'dbi'
4848
spec.add_development_dependency 'activerecord', '~> 6.0'

Diff for: spec/accessors/gsl_wrapper_spec.rb

+38-35
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,53 @@
1-
describe Daru::Accessors::GSLWrapper do
2-
before :each do
3-
@stub_context = Object.new
4-
@gsl_wrapper = Daru::Accessors::GSLWrapper.new([1,2,3,4,5,6], @stub_context)
5-
end
1+
if Daru.has_gsl?
2+
describe Daru::Accessors::GSLWrapper do
3+
before :each do
4+
@stub_context = Object.new
5+
@gsl_wrapper = Daru::Accessors::GSLWrapper.new([1,2,3,4,5,6], @stub_context)
6+
end
67

7-
context ".new" do
8-
it "actually creates a GSL Vector" do
9-
expect(@gsl_wrapper.data.class).to eq(GSL::Vector)
8+
context ".new" do
9+
it "actually creates a GSL Vector" do
10+
expect(@gsl_wrapper.data.class).to eq(GSL::Vector)
11+
end
1012
end
11-
end
1213

13-
context "#mean" do
14-
it "computes mean" do
15-
expect(@gsl_wrapper.mean).to eq(3.5)
14+
context "#mean" do
15+
it "computes mean" do
16+
expect(@gsl_wrapper.mean).to eq(3.5)
17+
end
1618
end
17-
end
1819

19-
context "#map!" do
20-
it "destructively maps" do
21-
expect(@gsl_wrapper.map! { |a| a += 1 }).to eq(
22-
Daru::Accessors::GSLWrapper.new([2,3,4,5,6,7], @stub_context)
23-
)
20+
context "#map!" do
21+
it "destructively maps" do
22+
expect(@gsl_wrapper.map! { |a| a += 1 }).to eq(
23+
Daru::Accessors::GSLWrapper.new([2,3,4,5,6,7], @stub_context)
24+
)
25+
end
2426
end
25-
end
2627

27-
context "#delete_at" do
28-
it "deletes at key" do
29-
expect(@gsl_wrapper.delete_at(2)).to eq(3)
28+
context "#delete_at" do
29+
it "deletes at key" do
30+
expect(@gsl_wrapper.delete_at(2)).to eq(3)
3031

31-
expect(@gsl_wrapper).to eq(
32-
Daru::Accessors::GSLWrapper.new([1,2,4,5,6], @stub_context)
33-
)
32+
expect(@gsl_wrapper).to eq(
33+
Daru::Accessors::GSLWrapper.new([1,2,4,5,6], @stub_context)
34+
)
35+
end
3436
end
35-
end
3637

37-
context "#index" do
38-
it "returns index of value" do
39-
expect(@gsl_wrapper.index(3)).to eq(2)
38+
context "#index" do
39+
it "returns index of value" do
40+
expect(@gsl_wrapper.index(3)).to eq(2)
41+
end
4042
end
41-
end
4243

43-
context "#push" do
44-
it "appends element" do
45-
expect(@gsl_wrapper.push(15)).to eq(
46-
Daru::Accessors::GSLWrapper.new([1,2,3,4,5,6,15], @stub_context)
47-
)
44+
context "#push" do
45+
it "appends element" do
46+
expect(@gsl_wrapper.push(15)).to eq(
47+
Daru::Accessors::GSLWrapper.new([1,2,3,4,5,6,15], @stub_context)
48+
)
49+
end
4850
end
4951
end
5052
end
53+

Diff for: spec/accessors/nmatrix_wrapper_spec.rb

+25-22
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,35 @@
11
require 'spec_helper.rb'
22

3-
describe Daru::Accessors::NMatrixWrapper do
4-
before :each do
5-
stub_context = Object.new
6-
@nm_wrapper = Daru::Accessors::NMatrixWrapper.new([1,2,3,4,5], stub_context, :float32)
7-
end
3+
if Daru.has_nmatrix?
4+
describe Daru::Accessors::NMatrixWrapper do
5+
before :each do
6+
stub_context = Object.new
7+
@nm_wrapper = Daru::Accessors::NMatrixWrapper.new([1,2,3,4,5], stub_context, :float32)
8+
end
89

9-
it "checks for actual NMatrix creation" do
10-
expect(@nm_wrapper.data.class).to eq(NMatrix)
11-
end
10+
it "checks for actual NMatrix creation" do
11+
expect(@nm_wrapper.data.class).to eq(NMatrix)
12+
end
1213

13-
it "checks the actual size of the NMatrix object" do
14-
expect(@nm_wrapper.data.size).to eq(10)
15-
end
14+
it "checks the actual size of the NMatrix object" do
15+
expect(@nm_wrapper.data.size).to eq(10)
16+
end
1617

17-
it "checks that @size is the number of elements in the vector" do
18-
expect(@nm_wrapper.size).to eq(5)
19-
end
18+
it "checks that @size is the number of elements in the vector" do
19+
expect(@nm_wrapper.size).to eq(5)
20+
end
2021

21-
it "checks for underlying NMatrix data type" do
22-
expect(@nm_wrapper.data.dtype).to eq(:float32)
23-
end
22+
it "checks for underlying NMatrix data type" do
23+
expect(@nm_wrapper.data.dtype).to eq(:float32)
24+
end
2425

25-
it "resizes" do
26-
@nm_wrapper.resize(100)
26+
it "resizes" do
27+
@nm_wrapper.resize(100)
2728

28-
expect(@nm_wrapper.size).to eq(5)
29-
expect(@nm_wrapper.data.size).to eq(100)
30-
expect(@nm_wrapper.data).to eq(NMatrix.new [100], [1,2,3,4,5])
29+
expect(@nm_wrapper.size).to eq(5)
30+
expect(@nm_wrapper.data.size).to eq(100)
31+
expect(@nm_wrapper.data).to eq(NMatrix.new [100], [1,2,3,4,5])
32+
end
3133
end
3234
end
35+

Diff for: spec/spec_helper.rb

+8-6
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,6 @@ def jruby?
1818
RUBY_ENGINE == 'jruby'
1919
end
2020

21-
if jruby?
22-
require 'mdarray'
23-
else
24-
require 'nmatrix/nmatrix'
25-
end
26-
2721
RSpec::Expectations.configuration.warn_about_potential_false_positives = false
2822

2923
require 'simplecov'
@@ -37,6 +31,14 @@ def jruby?
3731
$LOAD_PATH.unshift(File.dirname(__FILE__))
3832
require 'daru'
3933

34+
if jruby?
35+
require 'mdarray'
36+
else
37+
if Daru.has_nmatrix?
38+
require 'nmatrix/nmatrix'
39+
end
40+
end
41+
4042
ALL_DTYPES = [:nmatrix, :gsl, :array]
4143

4244
# FIXME: This must go! Need to be able to use be_within

0 commit comments

Comments
 (0)