2016-04-27 1 views
0

J'essaie d'ajouter le code Climate Reporter Reporter à une application Rails où j'utilise CircleCI.Comment corriger le code de climat testeur échouant dans CircleCI

J'ai suivi les instructions d'installation avec les messages d'erreur que je reçois lorsque CircleCI exécute la construction, cependant, je suis un peu coincé maintenant. Mes tests passent tous (localement et dans CircleCI) mais je reçois toujours une erreur.

Quelqu'un a-t-il déjà vu une telle erreur? Si oui, des suggestions pour faire fonctionner correctement le Climate Code Test Reporter avec CircleCI? Comme le résultat d'erreur suggère, j'ai écrasé la réponse dans mon spec_helper.rb.

Merci pour votre aide. S'il vous plaît laissez-moi savoir si j'ai besoin d'inclure plus d'informations.

Voici les étapes de code climatique dit pour terminer avec la sortie d'erreur:

  1. ajouter le code climatique joyau

    bijou liste codeclimate test-journaliste

    codeclimate-test- reporter (0.5.0)

  2. ajouter un reporter de test dans spec_helper.rb (vous pouvez également voir le message stub_request du message d'erreur dans config.b Avant (: chaque) bloc en bas. C'est mon spec_helper.rb.

    exigent "codeclimate-test-journaliste"

    CodeClimate :: TestReporter.start

    ENV [ 'RAILS_ENV'] = 'test'

    exigent File.expand_path (» ../. ./config/environment », FICHIER)

    nécessitent 'rspec/rails'
    nécessitent 'shoulda/matchers'
    requi re 'webmock/rspec'

    Dir [Rails.root.join ('spec/support/**/* .rb')]. chaque {| fichier | require file}

    RSpec.configure faire | config |
    config.expect_with: rspec faire | c |
    c.syntax =: attendre
    fin

    Caractéristiques de config.include, tapez:: Parodies config.include Formulaic :: Dsl, tapez:: fonction

    config.infer_base_class_for_anonymous_controllers = false
    config. ordre = 'aléatoires'
    config.treat_symbols_as_metadata_keys_with_true_values ​​= true
    config.use_transactional_fixtures = false

    config.before (: each) faire
    stub_request (: post, "https://codeclimate.com/test_reports").
    avec (: body => "\ u001F \ x8B \ b \ u0000 \ xE0 \ xC1 \ u0012W ........ : headers => {'Accepter' => '/', 'Accepter-Encoding' => 'gzip; q = 1.0, dégonfler; q = 0.6, identité; q = 0.3', 'Content-Encoding' = > 'gzip', 'Content-Type' => 'application/json', 'User-Agent' => 'Code Climat (Ruby Test Reporter v0.5.0)'}).
    to_return (: status => 200,: corps => "",: headers => {}) ·
    fin fin

    ActiveRecord :: Migration.maintain_test_schema! Capybara.javascript_driver =: WebKit
    WebMock.disable_net_connect (allow_localhost: true)!

  3. code jeton rapporteur de test climatique (i recopié ce dans les variables d'environnement CircleCI écran à partir de l'écran de configuration du rapporteur du test climatique de code)

    CODECLIMATE_REPO_TOKEN xxxxb0c8

Voici ma sortie d'erreur de CircleCI:

bundle exec rspec --color spec --format progress 
I, [2016-04-18T05:16:18.343024 #12231] INFO -- : Reporting coverage data to Code Climate. 
/home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/activesupport-4.1.1/lib/active_support/values/time_zone.rb:285: warning: circular argument reference - now 
[Simple Form] Simple Form is not configured in the application and will use the default values. Use rails generate simple_form:install to generate the Simple Form configuration. 
............. 

Finished in 1.24 seconds 
13 examples, 0 failures 

Randomized with seed 45226 

Coverage = 100.0%. Sending report to https://codeclimate.com for branch contact_form... /home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/webmock-1.24.0/lib/webmock/http_lib_adapters/net_http.rb:114:in request': Real HTTP connections are disabled. Unregistered request: POST https://codeclimate.com/test_reports with body '���mW��X�n�8�=g�/����á#DC�����5m�X�s���"%��3g�P���y�������h\����8��1j�N��d}A (WebMock::NetConnectNotAllowedError) 
*{UP�:Z��P]TӰ��Ҵ4U�_�:�W�v{�C?�C��8]�}� ������c�w�vHu�yU�EA2Ep)��"xk�JK# L 
�E8����[_�E�kۧ���?gP���;���Z 
q)�ǧy�~3���e�mz�����<T�0C[]�_�kuQu�4-�����(�-�-�l:T�D&�(�ǐ���+�iހ��)�� 
�>�?��Z��@-�H�D$��R, 
����&.��ȂYO�"z�U�D,�����p���ĕ�7��u��Pa�-�8|���Yx��� 
:��c���p,��\|0����20�B 9����WG��/���K���� �T��z#t�Fert��d��z�6��� �}F2�/I�8��� 
�M�s*�����b�]�S1���y���}��h� 
{qt�#�3�O<��6���F�@��$��<� 
w�dn��G�[email protected]��D������W�|���adڮ�3h�X�m���J��K�X��m���C�~��>E��(_/�q�װ��8��A�+�q�ڸ�ዊ��P��.�NtQm�yY{C��D2x�BK��D,1��J"'�W�K�g����k�w���X��4B�7O�4�uƮ�o�5>��˭O]��-��-!�z{����f��j���?�g���дS=r�{j��t[.r�ݫ37���E4x����b�-6�C�k����d^3b��B�]�ff�iJC#?�KU�=���xO���� �@��' with headers {'Accept'=>'/', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Encoding'=>'gzip', 'Content-Type'=>'application/json', 'User-Agent'=>'Code Climate (Ruby Test Reporter v0.5.0)'} 

You can stub this request with the following snippet: 

stub_request(:post, "https://codeclimate.com/test_reports"). 
with(:body => "\u001F\x8B\b\u0000\xA5m\u0014W\u0000\u0003\xCDX\xDBn\xDB8\u0010\xFD\u0017=g\u0013\xDE/\xF9\x95\xA2\u0010\x86á#D\u0017C\x92\x93\xEE\u0006\xF9\xF7\u001D5m\xE3X\xB5s\x81\x83\u0016\u0001\f\x89\"%\x9E\xE1\x993g\xF2P\x8D\xB4\u001D\xEAy\xB8\xA5\xBE\xBA\xAE\x82\xA1h\\x88\x94\u001D\x99\u0012\xD08\e\x8B\xD71j\x90N\x89\u0000d}A \n*{\u0011UP\u000E\x92\u0017:Z\xE7\x93\xC0P]TӰ\e\x91\xEAҴ4U\xD7_\u001E\xAA\u001E:\xE2W\xC3v{\x85C?\x8FC\xDB\xD28]\xF1}\xDB \xCC\xCD\xD0\xD7\xCF\xE3\x97c\xE2w\xA4vHu\x93yU\u000E\xDAEA2Ep)\xE7\u0000\"xk\x92\u000EJK\u001F# \u0015L\n\x96E8\xDC\xD1\b\x9B\xE5[\xE4E\xBFkۧ\x9F\xA7\xEB\xAF?gP\xAE\xB7\xC4;\xEC\xE7\xEAZ\nq)\x9Eǧy\xA4~3\xDF\xF0\x83e\xB8mz\xE2\xAD\xED\xFA\x99\x81\xF3\xABkuQu\xCD4-\x97\xE2\xF1\xF1\xE2(\xD6-\xE0-\xEFl:\u0001T\xC5D&\xA1(\xC1ǐ\xB4\xCC\xCE+\xE9\u0012i\fހ\u0000\xE9)\u0005\xAD\xCB\n\xE8>\xD4?\u000E\xF4\x9EZ\u001C\xBA\[email protected]\xB3H\xE5D$\xB4\xC4R,\nT!&\xA9\x9D\xC6b\xB2\xCBI\xA5\xE0\xD2\xFAD\xFF8\xD0\ej\xB7\x87\xCC}\u001A[\xB1\x96\xF8\xE4|4\u0016\u001D\xD8\xC8\aJI0U\xA5\xF7\xB9萄\xA5\u0018P\u0015\xF1[֞\r\x97\xDA\xC3%\x8F\xE0\xE2s*\xCDf\u001F\xD2!\u0016']\u0006#|\xC9%\xBAཊ\x85\xF7P4)\x95Ddq\xC8Y#\x9C\xCC\xC0翗g\xB8\x9F\xA1\xFB\u0013\xE4z\xE1\xB1\xC5\u001F\xFB9[\x90\x8D\xD9g\x8F8\u001D\xE64\f\xF3*\u001F\xC8\u0016\x81\xB2\u0000\x8A\x84\x99l\x88\xDAY-\x80\x83^2\xE7JB(\u0016\x9C9\x88\xEF\x8B0\x9D\u000F\xCD\eR\xE1\a\u0016\xEA\xEF\x9Aq\xE8;\xFE\xD6!$.\u000F9\x8A\x8C\xCE\xCAh\xB8D\xC4\"9\xA5c\xB4\xBA\u0014a\xBC7\xE4\xB5\xD7\u009F\x80tf\\oI\xF15\xAE\xE9j\xA6i\x85.g\f\u0010\xB5\xB2V\u0014\xCFUR\u0018k#\xA7D\x88^\u0014祱\xB2PR\x87\a\xF6\u001A{O\xA6Ưl8~\xF7\xBE7\u001D\x9Fq>.\xC9}\xFDy%\xEAM\xDF\xCC\r\xB4\xCD\u007F\x8B\xC0&.\x97\xF3ȂYO\xEC\"z\xE4\xB1U\xD6D\u001D,\xB2\x9A\xFA\x98\xB2p\u0010\xB2\xD2\xCAĕ\xB57\xF3\u0013\x9Bu\xB1\xE9Pa\xCF-\f\xE28|\xBF\x87\xFE\u0015Yx\u0001\u001E\x87\xE1\xB6\xE1\n:\xD1\xF8c\xEC\u0010\xBB\x87\u0005p,\xA2\xC4\\|0\x89\x8D\x99\xCF20\xE7B\t9\xA0\xF7\x82\x92WG\xB1\x9F/\xAF\xF4\xDBK\xCC\v\x90\xB9\x99 \xB5T\u007F\xEB\xDAz\v#t\xAB\u0003Fert\xEC\xFA\u001Cd\xAB\u0014\b\xE5\u0005z\x926\x82\x8F\xD2\t\x91}F2\xF6/\u0006I\xE38\xAC\x99\xEB\x93\nĞ\x80M\xB3s*\xB3\xB6\x87\u0000\xD2\u0006b\xE9\xB0]\xC2S1\xF4\xAA\xFFy\xAF\x94\xBC}\xD2\xE7h\xB0\n{qt\xEF\x88#\xB7\u00123\x8DO<\xA1\xE5\xAA\u001D6\x9B\xA6\xDF\u001CF\[email protected]\x8C\x86$\xF9\x94<\x92\n\xCC\u000Fd/\r\xD9\u0004n\u001FB\x94L\u0019B+Ok\xC2\xE7\u0014\xD3\xF7\xF0\xA6\xE9KK\xB8x\xB1\u0015y\xD8$h\x9D8\xEF1\u0018'\x85\xD4Jd\x8F\x89\u0014X.S\xE0\eB\u0011ûe\xEF\u0013\xCD\xD3\t\x8D\x94\xEE\x83\"\xD95\u001D\xD5\xF3\xBF[ZE(\xA3\f\x91\x8D*[S\x89\u001A\u001C\x8B\x88\xD7\u0005\x8A7\x8E\x94\xB6%9S\xD0\xE4\xE3\xE2x~\x94\xE6\x83 \xB9\u0002\xDE\xD63#\u001Dv+\u0013\u0002Ƹ\xC51j\x8A9\b\u0015ـ\x8B\xA0،(\u001F\b\xB5WY\x92TJ\u001F\xAA\xC8\xD9\xC8-?Hii\x9C\xA6y\u0018\xE9\u0010U\xC8Fr)/ML1\xB1\xC2s\xF7+\x8CJ\x890\xE5\u0014Q\xA2/E\u001E\xF6\u001A\u007F\x93\xE8ߏ\xB0}\x96\xAA\u0015=5\u001F\rw\u007F\xB6dn\x9E\xA2G\xEC-\u0015.\u0004\[email protected]\x83\xA4D\xD1\xFC\xD6\u001A\x9F\xD0\xEBW\u0014\xFF|\xA7\xFE\x8E\u0006adڮ\xF33h\xE7X\x8Fm\u0006\x9F\xBD\xF1J\x98\x94K\xF1\u0005X\xD5\u0002\u001A\xB6m\x8B\x9D\x81C\x91~\xEE\xFF>E\x9E\xF5\v(_/\xAAq\xD7װ\xBC\xD88\u0011\xAD\xB3A\x9E+\x82q\xBF\fڸ\xFFዊ\x89\xB3P\xA9\xBA.\xD0NtQm\x9AyY{C\xF0\xFD\u007FD2x\xCCBK\u0003\xE4\xC0D,1\xA5\xECJ\"'\u0012\xB7W\x85K\u0000g\x88\xFB\u001E\xA1\xAEk\xE6\x99w\xB5\x87\xC2X\xD6\xDB4B\x8F7O\xC74\u0003\xCEu\u0019Ʈ\xE2o\xEF5>\xDF\xF7˭O]\u0016\u001E\xDF\u000F\xE3-\xCF\u001F\xA7-!\xBFz{\xBF\xEC\xE5\xEAf\xE8\xE8j\x97\u0018\xDE\xF2?\x8Cg\xF7\x8D\u001F\x8FдS=r\xA7{j\xD6\xD4t[.r\xC3ݫ37\xD4\xD5\u001C\xADE4x\x9A\xB8\xB4\x97b\xD9-6\x8BC\xBEk\x90\x96\xCD\xFEd^3b\x8B\xCDB\xB8]\xD3ff\u001C\x83iJC#?\x94KU\xFC=\xFA\x9F\xF1\xAA\xA7\exO\x9C\u001F\u001F\xFF\a\x94\xB3\t\[email protected]\u0015\u0000\u0000", 
:headers => {'Accept'=>'/', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Encoding'=>'gzip', 'Content-Type'=>'application/json', 'User-Agent'=>'Code Climate (Ruby Test Reporter v0.5.0)'}). 
to_return(:status => 200, :body => "", :headers => {}) 

============================================================ 
from /home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/codeclimate-test-reporter-0.5.0/lib/code_climate/test_reporter/client.rb:67:in post_results' 
from /home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/codeclimate-test-reporter-0.5.0/lib/code_climate/test_reporter/formatter.rb:29:informat' 
from /home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/simplecov-0.11.2/lib/simplecov/result.rb:47:in format!' 
from /home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/simplecov-0.11.2/lib/simplecov/configuration.rb:172:inblock in at_exit' 
from /home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/simplecov-0.11.2/lib/simplecov/defaults.rb:67:in call' 
from /home/ubuntu/msd-redux/vendor/bundle/ruby/2.2.0/gems/simplecov-0.11.2/lib/simplecov/defaults.rb:67:inblock in ' 

((bundle exec rspec "--color" "" "spec" --format "progress")) returned exit code 1 

Répondre

1

Selon le document climate docs, vous devez autoriser webmock à faire des demandes externes: https://docs.codeclimate.com/v1.0/docs/test-coverage-troubleshooting-tips#section--known-error-messages-. Dit que, vous devez ajouter WebMock.allow_net_connect! ou WebMock.allow_net_connect!(:net_http_connect_on_start => true) juste avant CodeClimate::TestReporter.start appel (dans ce cas, je pense que vous devez vous assurer que vos web mocks sont configurés correctement.)