Sha256: 70c5ec5b81d4dff166a3cc1f732e79ed77a50f2b1cfaa21dc2a7b2c174844fc3

Contents?: true

Size: 1.17 KB

Versions: 7

Compression:

Stored size: 1.17 KB

Contents

require File.dirname(__FILE__) + "/spec_helper"

describe YARD::Handlers::C::MixinHandler do
  it "adds includes to modules or classes" do
    parse_init <<-eof
      mFoo = rb_define_module("Foo");
      cBar = rb_define_class("Bar", rb_cObject);
      mBaz = rb_define_module("Baz");
      rb_include_module(cBar, mFoo);
      rb_include_module(mBaz, mFoo);
    eof
    foo = Registry.at('Foo')
    bar = Registry.at('Bar')
    baz = Registry.at('Baz')
    expect(bar.mixins(:instance)).to eq [foo]
    expect(baz.mixins(:instance)).to eq [foo]
  end

  it "adds include as proxy if symbol lookup fails" do
    parse_init <<-eof
      mFoo = rb_define_module("Foo");
      rb_include_module(mFoo, mXYZ);
    eof
    foo = Registry.at('Foo')
    expect(foo.mixins(:instance)).to eq [P('XYZ')]
  end

  it "fails if mixin variable cannot be detected" do
    with_parser(:c) do
      undoc_error <<-eof
        void Init_Foo() {
          VALUE noprefix;

          mFoo = rb_define_module("Foo");
          // YARD doesn't understand this
          noprefix = rb_const_get(rb_cObject, rb_intern("Observable"));

          rb_include_module(mFoo, noprefix);
        }
      eof
    end
  end
end

Version data entries

7 entries across 6 versions & 2 rubygems

Version Path
abaci-0.3.0 vendor/bundle/gems/yard-0.9.2/spec/handlers/c/mixin_handler_spec.rb
abaci-0.3.0 vendor/bundle/gems/yard-0.9.1/spec/handlers/c/mixin_handler_spec.rb
yard-0.9.5 spec/handlers/c/mixin_handler_spec.rb
yard-0.9.4 spec/handlers/c/mixin_handler_spec.rb
yard-0.9.3 spec/handlers/c/mixin_handler_spec.rb
yard-0.9.2 spec/handlers/c/mixin_handler_spec.rb
yard-0.9.1 spec/handlers/c/mixin_handler_spec.rb