Appears to be working in Firefox but at least Chrome & Safari are broken. Should be a really recent regression so very few possible changes to blame...

Easiest repo: the todo list on our homepage.

var node = ReactDOM.findDOMNode(stub);
    expect(node.innerHTML).toBe('1  2');
    expect(console.error.calls.length).toBe(1);
    expect(console.error.argsForCall[0][0]).toContain('Only strings and numbers are supported as <option> children.');
  });
  it('should warn when passing invalid children', function() {
    var stub = <option>{1} <div /></option>;
    spyOn(console, 'error');
    stub = ReactTestUtils.renderIntoDocument(stub);
    expect(console.error.calls.length).toBe(1);
    expect(console.error.argsForCall[0][0]).toContain(
      'Only strings and numbers are supported as <option> children.'
    );
  });
  it('should ignore null/undefined/false children without warning', function() {
    var stub = <option>{1} {false}{true}{null}{undefined} {2}</option>;
    spyOn(console, 'error');
    stub = ReactTestUtils.renderIntoDocument(stub);
    var node = ReactDOM.findDOMNode(stub);
    expect(console.error.calls.length).toBe(0);
    expect(node.innerHTML).toBe('1  2');
  });
  it('should be able to use dangerouslySetInnerHTML on option', function() {
    var stub = <option dangerouslySetInnerHTML={{ __html: 'foobar' }} />;
    stub = ReactTestUtils.renderIntoDocument(stub);
    var node = ReactDOM.findDOMNode(stub);
    expect(node.innerHTML).toBe('foobar');
  });
});