[DRE-commits] [ruby-nenv] 06/08: new patches.

Daisuke Higuchi dai at moszumanska.debian.org
Mon Nov 27 01:57:03 UTC 2017


This is an automated email from the git hooks/post-receive script.

dai pushed a commit to branch master
in repository ruby-nenv.

commit 981284c98305ac05b70bc4bfee71fdd93f8f1813
Author: HIGUCHI Daisuke (VDR dai) <dai at debian.org>
Date:   Mon Nov 27 10:51:12 2017 +0900

    new patches.
---
 debian/patches/add_specs.patch                    | 449 ++++++++++++++++++++++
 debian/patches/reset_instance_before_create.patch |  16 +
 debian/patches/series                             |   2 +
 3 files changed, 467 insertions(+)

diff --git a/debian/patches/add_specs.patch b/debian/patches/add_specs.patch
new file mode 100644
index 0000000..874ce48
--- /dev/null
+++ b/debian/patches/add_specs.patch
@@ -0,0 +1,449 @@
+Description: add specs
+Author: HIGUCHI Daisuke (VDR dai) <dai at debian.org>
+Origin: upstream
+Forwarded: not-needed
+Last-Update: 2017-11-27
+
+Index: ruby-nenv/spec/lib/nenv/builder_spec.rb
+===================================================================
+--- /dev/null
++++ ruby-nenv/spec/lib/nenv/builder_spec.rb
+@@ -0,0 +1,27 @@
++require 'nenv/builder'
++
++RSpec.describe Nenv::Builder do
++  describe '#build' do
++    before do
++      allow(ENV).to receive(:[]).with('FOO')
++    end
++
++    it 'returns a class with the given methods' do
++      FooEnv = Nenv::Builder.build do
++        create_method(:foo?)
++      end
++      FooEnv.new.foo?
++    end
++
++    context 'with duplicate methods' do
++      it 'fails' do
++        expect do
++          FooEnv = Nenv::Builder.build do
++            create_method(:foo?)
++            create_method(:foo?)
++          end
++        end.to raise_error(Nenv::Environment::AlreadyExistsError)
++      end
++    end
++  end
++end
+Index: ruby-nenv/spec/lib/nenv/environment/dumper_spec.rb
+===================================================================
+--- /dev/null
++++ ruby-nenv/spec/lib/nenv/environment/dumper_spec.rb
+@@ -0,0 +1,34 @@
++require 'yaml'
++
++require 'nenv/environment/dumper'
++
++RSpec.describe Nenv::Environment::Dumper do
++  subject { described_class.setup.(value) }
++
++  context "with \"abc\"" do
++    let(:value) { 'abc' }
++    it { is_expected.to eq('abc') }
++  end
++
++  context 'with 123' do
++    let(:value) { 123 }
++    it { is_expected.to eq('123') }
++  end
++
++  context 'with nil' do
++    let(:value) { nil }
++    it { is_expected.to eq(nil) }
++  end
++
++  context 'with a block' do
++    subject do
++      described_class.setup { |data| YAML.dump(data) }.(value)
++    end
++
++    context 'with a yaml string' do
++      let(:value) { { foo: 3 } }
++      let(:yaml) { "---\n:foo: 3\n" }
++      it { is_expected.to eq(yaml) }
++    end
++  end
++end
+Index: ruby-nenv/spec/lib/nenv/environment/loader_spec.rb
+===================================================================
+--- /dev/null
++++ ruby-nenv/spec/lib/nenv/environment/loader_spec.rb
+@@ -0,0 +1,59 @@
++require 'yaml'
++require 'nenv/environment/loader'
++
++RSpec.describe Nenv::Environment::Loader do
++  context 'with no block' do
++    subject { described_class.setup(meth).(value) }
++
++    context 'with a normal method' do
++      let(:meth) { :foo }
++
++      context "with \"abc\"" do
++        let(:value) { 'abc' }
++        it { is_expected.to eq('abc') }
++      end
++    end
++
++    context 'with a bool method' do
++      let(:meth) { :foo? }
++
++      %w(1 true y yes TRUE YES foobar).each do |data|
++        context "with #{data.inspect}" do
++          let(:value) { data }
++          it { is_expected.to eq(true) }
++        end
++      end
++
++      %w(0 false n no FALSE NO).each do |data|
++        context "with #{data.inspect}" do
++          let(:value) { data }
++          it { is_expected.to eq(false) }
++        end
++      end
++
++      context 'with nil' do
++        let(:value) { nil }
++        it { is_expected.to eq(nil) }
++      end
++
++      context 'when empty string' do
++        let(:value) { '' }
++        it do
++          expect { subject }.to raise_error(
++            ArgumentError, /Can't convert empty string into Bool/
++          )
++        end
++      end
++    end
++  end
++
++  context 'with a block' do
++    subject do
++      described_class.setup(:foo) { |data| YAML.load(data) }.(value)
++    end
++    context 'with a yaml string' do
++      let(:value) { "--- foo\n...\n" }
++      it { is_expected.to eq('foo') }
++    end
++  end
++end
+Index: ruby-nenv/spec/lib/nenv/environment_spec.rb
+===================================================================
+--- /dev/null
++++ ruby-nenv/spec/lib/nenv/environment_spec.rb
+@@ -0,0 +1,160 @@
++require 'yaml'
++
++require 'nenv/environment'
++
++RSpec.describe Nenv::Environment do
++  class MockEnv < Hash # a hash is close enough
++    def []=(k, v)
++      fail TypeError, "no implicit conversion of #{k.class} into String" unless k.respond_to? :to_str
++      fail TypeError, "no implicit conversion of #{v.class} into String" unless v.respond_to? :to_str
++      super(k.to_str, v.to_str)
++    end
++  end
++
++  before { stub_const('ENV', MockEnv.new) }
++  subject { instance }
++
++  shared_examples 'accessor methods' do
++    describe 'predicate method' do
++      before { subject.create_method(:foo?) }
++
++      it 'responds to it' do
++        expect(subject).to respond_to(:foo?)
++      end
++
++      context 'when the method already exists' do
++        let(:error) { described_class::AlreadyExistsError }
++        let(:message) { 'Method :foo? already exists' }
++        specify do
++          expect do
++            subject.create_method(:foo?)
++          end.to raise_error(error, message)
++        end
++      end
++
++      context 'with value stored in ENV' do
++        before { ENV[sample_key] = value }
++
++        describe 'when value is truthy' do
++          let(:value) { 'true' }
++          it 'should return true' do
++            expect(subject.foo?).to eq true
++          end
++        end
++
++        describe 'when value is falsey' do
++          let(:value) { '0' }
++          it 'should return false' do
++            expect(subject.foo?).to eq false
++          end
++        end
++      end
++    end
++
++    describe 'reader method' do
++      context 'when added' do
++        before { subject.create_method(:foo) }
++
++        it 'responds to it' do
++          expect(subject).to respond_to(:foo)
++        end
++
++        context 'when the method already exists' do
++          let(:error) { described_class::AlreadyExistsError }
++          let(:message) { 'Method :foo already exists' }
++          specify do
++            expect do
++              subject.create_method(:foo)
++            end.to raise_error(error, message)
++          end
++        end
++      end
++
++      context 'with value stored in ENV' do
++        before { ENV[sample_key] = value }
++
++        context 'with no block' do
++          before { instance.create_method(:foo) }
++          let(:value) { '123' }
++
++          it 'returns marshalled stored value' do
++            expect(subject.foo).to eq '123'
++          end
++        end
++
++        context 'with block' do
++          before { instance.create_method(:foo) { |data| YAML.load(data) } }
++          let(:value) { "---\n:foo: 5\n" }
++
++          it 'returns unmarshalled stored value' do
++            expect(subject.foo).to eq(foo: 5)
++          end
++        end
++      end
++    end
++
++    describe 'writer method' do
++      context 'when added' do
++        before { subject.create_method(:foo=) }
++
++        it 'responds to it' do
++          expect(subject).to respond_to(:foo=)
++        end
++
++        context 'when the method already exists' do
++          let(:error) { described_class::AlreadyExistsError }
++          let(:message) { 'Method :foo= already exists' }
++          specify do
++            expect do
++              subject.create_method(:foo=)
++            end.to raise_error(error, message)
++          end
++        end
++      end
++
++      describe 'env variable' do
++        after { expect(ENV[sample_key]).to eq result }
++
++        context 'with no block' do
++          before { subject.create_method(:foo=) }
++          let(:result) { '123' }
++
++          it 'stores a converted to string value' do
++            subject.foo = 123
++          end
++        end
++
++        context 'with block' do
++          before { subject.create_method(:foo=) { |data| YAML.dump(data) } }
++          let(:result) { "---\n:foo: 5\n" }
++
++          it 'stores a marshaled value' do
++            subject.foo = { foo: 5 }
++          end
++        end
++      end
++    end
++  end
++
++  context 'with no namespace' do
++    let(:instance) { described_class.new }
++    let(:sample_key) { 'FOO' }
++    include_examples 'accessor methods'
++  end
++
++  context 'with any namespace' do
++    let(:namespace) { 'bar' }
++    let(:sample_key) { 'BAR_FOO' }
++    let(:instance) { described_class.new(namespace) }
++    include_examples 'accessor methods'
++
++    context 'with a method containing underscores' do
++      before { instance.create_method(:foo_baz) }
++
++      it 'reads the correct variable' do
++        ENV['BAR_FOO_BAZ'] = '123'
++        expect(subject.foo_baz).to eq '123'
++      end
++    end
++  end
++end
+Index: ruby-nenv/spec/lib/nenv_spec.rb
+===================================================================
+--- /dev/null
++++ ruby-nenv/spec/lib/nenv_spec.rb
+@@ -0,0 +1,84 @@
++require 'nenv'
++
++RSpec.describe Nenv do
++  let(:env) { instance_double(Hash) } # Hash is close enough
++  before { stub_const('ENV', env) }
++
++  describe 'Nenv() helper method' do
++    it 'reads from env' do
++      expect(ENV).to receive(:[]).with('GIT_BROWSER').and_return('chrome')
++      Nenv('git').browser
++    end
++
++    it 'return the value from env' do
++      allow(ENV).to receive(:[]).with('GIT_BROWSER').and_return('firefox')
++      expect(Nenv('git').browser).to eq('firefox')
++    end
++  end
++
++  describe 'Nenv() helper method with block' do
++    it 'reads from env' do
++      expect(ENV).to receive(:[]).with('GIT_BROWSER').and_return('chrome')
++      Nenv('git') do |git|
++        git.browser
++      end
++    end
++
++    it 'return the value from env' do
++      allow(ENV).to receive(:[]).with('GIT_BROWSER').and_return('firefox')
++      result = nil
++      Nenv('git') do |git|
++        result = git.browser
++      end
++      expect(result).to eq('firefox')
++    end
++  end
++
++  describe 'Nenv module' do
++    it 'reads from env' do
++      expect(ENV).to receive(:[]).with('CI').and_return('true')
++      Nenv.ci?
++    end
++
++    it 'return the value from env' do
++      allow(ENV).to receive(:[]).with('CI').and_return('false')
++      expect(Nenv.ci?).to be(false)
++    end
++
++    context 'with no method' do
++      it 'automatically creates the method' do
++        expect(ENV).to receive(:[]).with('FOO').and_return('true')
++        Nenv.foo?
++      end
++    end
++
++    context 'with existing method' do
++      before do
++        Nenv.instance.create_method(:foo?)
++      end
++
++      it 'reads from env' do
++        expect(ENV).to receive(:[]).with('FOO').and_return('true')
++        Nenv.foo?
++      end
++
++      it 'return the value from env' do
++        expect(ENV).to receive(:[]).with('FOO').and_return('true')
++        expect(Nenv.foo?).to be(true)
++      end
++    end
++  end
++
++  # Test added here to properly test if builder is required
++  describe 'Nenv builder' do
++    before do
++      allow(ENV).to receive(:[]).with('FOO').and_return('false')
++    end
++    it 'is required and works' do
++      FooEnv = Nenv::Builder.build do
++        create_method(:foo?)
++      end
++      FooEnv.new.foo?
++    end
++  end
++end
+Index: ruby-nenv/spec/spec_helper.rb
+===================================================================
+--- /dev/null
++++ ruby-nenv/spec/spec_helper.rb
+@@ -0,0 +1,49 @@
++require 'coveralls'
++Coveralls.wear!
++
++RSpec.configure do |config|
++  config.expect_with :rspec do |expectations|
++    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
++  end
++
++  config.mock_with :rspec do |mocks|
++    mocks.verify_partial_doubles = true
++  end
++
++  config.filter_run focus: ENV['CI'] != 'true'
++  config.run_all_when_everything_filtered = true
++
++  config.disable_monkey_patching!
++
++  # config.warnings = true
++
++  config.default_formatter = 'doc' if config.files_to_run.one?
++
++  # config.profile_examples = 10
++
++  config.order = :random
++
++  Kernel.srand config.seed
++
++  config.before do
++    allow(ENV).to receive(:[]) do |key|
++      fail "stub me: ENV[#{key.inspect}]"
++    end
++
++    allow(ENV).to receive(:[]=) do |key, value|
++      fail "stub me: ENV[#{key.inspect}] = #{value.inspect}"
++    end
++
++    allow(ENV).to receive(:[]).with('PRYRC').and_call_original
++    allow(ENV).to receive(:[]).with('DISABLE_PRY').and_call_original
++    allow(ENV).to receive(:[]).with('ANSICON').and_call_original
++    allow(ENV).to receive(:[]).with('TERM').and_call_original
++  end
++
++  config.after do
++    begin
++      Nenv.method(:reset).call
++    rescue NameError
++    end
++  end
++end
diff --git a/debian/patches/reset_instance_before_create.patch b/debian/patches/reset_instance_before_create.patch
new file mode 100644
index 0000000..f0453ed
--- /dev/null
+++ b/debian/patches/reset_instance_before_create.patch
@@ -0,0 +1,16 @@
+Description: reset instance before create
+Author:  HIGUCHI Daisuke (VDR dai) <dai at debian.org>
+Last-Update: 2017-11-27
+
+Index: ruby-nenv/spec/lib/nenv_spec.rb
+===================================================================
+--- ruby-nenv.orig/spec/lib/nenv_spec.rb
++++ ruby-nenv/spec/lib/nenv_spec.rb
+@@ -54,6 +54,7 @@ RSpec.describe Nenv do
+ 
+     context 'with existing method' do
+       before do
++        Nenv.method(:reset).call
+         Nenv.instance.create_method(:foo?)
+       end
+ 
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..1ed3839
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+add_specs.patch
+reset_instance_before_create.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-nenv.git



More information about the Pkg-ruby-extras-commits mailing list