Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[READY] Let ycmd check rustup configured path as the last means to finding rust src path #785

Merged
merged 1 commit into from
Sep 17, 2017

Conversation

bstaletic
Copy link
Collaborator

@bstaletic bstaletic commented Jun 28, 2017

In ycm-core/YouCompleteMe#2379 there was talk about enabling ycmd to check rust src path provided by rustup.

This allows users to have rust completion with zero ycmd configuration.

Tests are not included because tests themselves should behave differently based on how rustup was used and I'm not sure how to test that.


This change is Reviewable

@Valloric
Copy link
Member

A testing approach I'd take would be to mock out the troubling parts. For instance, you can mock out utils.SafePopen to ensure the code that's calling it behaves correctly. Similar for FindExecutable, if necessary.


Review status: 0 of 1 files reviewed at latest revision, all discussions resolved.


Comments from Reviewable

@codecov-io
Copy link

codecov-io commented Jun 28, 2017

Codecov Report

Merging #785 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #785      +/-   ##
==========================================
+ Coverage   94.83%   94.83%   +<.01%     
==========================================
  Files          79       79              
  Lines        5398     5406       +8     
  Branches      169      169              
==========================================
+ Hits         5119     5127       +8     
  Misses        231      231              
  Partials       48       48

@bstaletic bstaletic changed the title Let ycmd check rustup configured path as the last means to finding rust src path [WIP] Let ycmd check rustup configured path as the last means to finding rust src path Jun 28, 2017
@bstaletic
Copy link
Collaborator Author

Before I push the tests, one question.
To where should I point the SafePopen() in test that should end with valid completion results?
Or should I change the scripts in ci folder and not mock anything in that case?


Review status: 0 of 1 files reviewed at latest revision, all discussions resolved, some commit checks broke.


Comments from Reviewable

@Valloric
Copy link
Member

To where should I point the SafePopen() in test that should end with valid completion results?

I don't think I understand the question.


Review status: 0 of 1 files reviewed at latest revision, all discussions resolved, some commit checks broke.


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

rustc --print sysroot will always have some value. In case of rustup on my system that's /home/bstaletic/.rustup/toolchains/stable-x86_64-unknown-linux-gnu. Something like this path is what is expected of SafePopen() to return.

Do we have something like that? Do we have a valid rust src on continous integration bots?

I just think this needs a test where we show that semantic completion is working without any setup required.

I hope I was clearer now.


Review status: 0 of 1 files reviewed at latest revision, all discussions resolved, some commit checks broke.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Jun 29, 2017

What I would do is create the ycmd/tests/rust/testdata/rustup-toolchain/lib/rustlib/src/rust/src/libstd folder with an empty file (e.g. path.rs), wrap the rustc call in a function, mock that function to return the path ycmd/tests/rust/testdata/rustup-toolchain, and send a debug_info request to check that the value of rust_src_path is equal to ycmd/tests/rust/testdata/rustup-toolchain/lib/rustlib/src/rust/src.


Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, 4 unresolved discussions, some commit checks failed.


ycmd/completers/rust/rust_completer.py, line 142 at r1 (raw file):

    # Try to figure out the src path using rustup
    if not FindExecutable( 'rustc' ):

I would assign the result of this function to a variable and then use this variable in the SafePopen call.


ycmd/completers/rust/rust_completer.py, line 143 at r1 (raw file):

    # Try to figure out the src path using rustup
    if not FindExecutable( 'rustc' ):
        return None

Indentation should be two spaces.


ycmd/completers/rust/rust_completer.py, line 145 at r1 (raw file):

        return None

    rust_sysroot = ToUnicode( utils.SafePopen( [ 'rustc',

SafePopen won't work on Windows because of the CREATE_NO_WINDOW flag. rustc will not print anything to stdout if there is no console window. We should directly use subprocess.Popen.


ycmd/completers/rust/rust_completer.py, line 150 at r1 (raw file):

                                               stdout = subprocess.PIPE )
                                   .communicate()[ 0 ][ : -1 ] )
    rust_src_path = p.join( rust_sysroot, 'lib/rustlib/src/rust/src' )

This should be rewritten to p.join( rust_sysroot, 'lib', 'rustlib', 'src', 'rust', 'src' ) to get a proper path on Windows (a path with only \ separators).


Comments from Reviewable

@Valloric
Copy link
Member

Yup, pretty much what @micbou said. :)


Review status: all files reviewed at latest revision, 4 unresolved discussions, some commit checks failed.


ycmd/completers/rust/rust_completer.py, line 145 at r1 (raw file):

Previously, micbou wrote…

SafePopen won't work on Windows because of the CREATE_NO_WINDOW flag. rustc will not print anything to stdout if there is no console window. We should directly use subprocess.Popen.

Can we wrap that somehow or fix utils.SafePopen? I'd like to fix this for good so we don't have to think about it again.


ycmd/completers/rust/rust_completer.py, line 150 at r1 (raw file):

Previously, micbou wrote…

This should be rewritten to p.join( rust_sysroot, 'lib', 'rustlib', 'src', 'rust', 'src' ) to get a proper path on Windows (a path with only \ separators).

Good catch!


Comments from Reviewable

@bstaletic bstaletic force-pushed the rustup_heuristics branch from 88a4216 to 79a895b Compare July 1, 2017 16:21
@bstaletic
Copy link
Collaborator Author

I must me doing something stupid, but I can't figure out what's wrong. The tests I added all say:

TypeError: <My new test name> takes 1 positional argument but 2 were given

Review status: 0 of 3 files reviewed at latest revision, 4 unresolved discussions.


ycmd/completers/rust/rust_completer.py, line 142 at r1 (raw file):

Previously, micbou wrote…

I would assign the result of this function to a variable and then use this variable in the SafePopen call.

Done.


ycmd/completers/rust/rust_completer.py, line 143 at r1 (raw file):

Previously, micbou wrote…

Indentation should be two spaces.

Done.


ycmd/completers/rust/rust_completer.py, line 145 at r1 (raw file):

Previously, Valloric (Val Markovic) wrote…

Can we wrap that somehow or fix utils.SafePopen? I'd like to fix this for good so we don't have to think about it again.

Done.


ycmd/completers/rust/rust_completer.py, line 150 at r1 (raw file):

Previously, Valloric (Val Markovic) wrote…

Good catch!

Done.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Jul 5, 2017

That's because you are patching the FindExecutable function and thus passing an additional parameter to the tests. If you don't need the parameter, just add *args to the parameter list.


Reviewed 3 of 3 files at r2.
Review status: all files reviewed at latest revision, 5 unresolved discussions, some commit checks failed.


ycmd/completers/rust/rust_completer.py, line 145 at r1 (raw file):

Previously, bstaletic wrote…

Done.

Found out that it works on Windows when we also open a pipe to stdin and stderr:

utils.SafePopen( [ 'rustc', '--print', 'sysroot' ], stdin_windows = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE )

so we could do that.


ycmd/completers/rust/rust_completer.py, line 76 at r2 (raw file):

                                        'sysroot' ],
                                      stdout = subprocess.PIPE )
                              .communicate()[ 0 ][ : -1 ] )

I would use rstrip to remove the trailing \n.


ycmd/tests/rust/get_completions_test.py, line 151 at r2 (raw file):

@IsolatedYcmd()
@patch( 'ycmd.completers.rust.rust_completer._GetRustSysroot',
        return_value = '/non/existing/file/path' )

Why don't we use PathToTestFile here?


ycmd/tests/rust/get_completions_test.py, line 163 at r2 (raw file):

@IsolatedYcmd()
@patch( 'ycmd.completers.rust.rust_completer._GetRustSysroot',
        return_value = abspath( 'ycmd/tests/rust/testdata/rustup-toolchain' ) )

Same comment.


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

I've added *args to argument list, but it seems like my tests fail after sending the /ready request. Rust completer ends up writing this to log:

ycmd.completers.rust.rust_completer: ERROR: HTTPConnectionPool(host='127.0.0.1', port=53413): Max retries exceeded with url: /ping (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x40e2490>: Failed to establish a new connection: [Errno 111] Connection refused',))

The log is then followed by a traceback.


Review status: all files reviewed at latest revision, 5 unresolved discussions, some commit checks failed.


ycmd/completers/rust/rust_completer.py, line 76 at r2 (raw file):

Previously, micbou wrote…

I would use rstrip to remove the trailing \n.

Done.


ycmd/tests/rust/get_completions_test.py, line 151 at r2 (raw file):

Previously, micbou wrote…

Why don't we use PathToTestFile here?

My bad. Done.


ycmd/tests/rust/get_completions_test.py, line 163 at r2 (raw file):

Previously, micbou wrote…

Same comment.

Done.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Aug 19, 2017

Reviewed 1 of 1 files at r3.
Review status: all files reviewed at latest revision, 8 unresolved discussions, some commit checks failed.


ycmd/tests/rust/get_completions_test.py, line 163 at r2 (raw file):

Previously, bstaletic (Boris Staletic) wrote…

Done.

Why no PathToTestFile here?


ycmd/tests/rust/get_completions_test.py, line 166 at r2 (raw file):

def GetCompletions_RustupPathHeuristics_test( app ):
  response = app.get( '/ready', { 'subserver': 'rust' } )
  response = app.get( '/debug_info', { 'subserver': 'rust' } )

See the Rust DebugInfo test for an example on how to send the /debug_info request and parse its response.


ycmd/tests/rust/get_completions_test.py, line 139 at r3 (raw file):

@IsolatedYcmd()
@patch( 'ycmd.utils.FindExecutable', return_value = None )

There are two issues in this test. First, FindExecutable must be mocked from where it's looked up (this is explained here) so it should be:

@patch( 'ycmd.completers.rust.rust_completer.FindExecutable', return_value = None )

Second, we don't raise the NON_EXISTING_RUST_SOURCES_PATH_MESSAGE exception when rustc is not found (because the Rust sources path may exist) but we still raise the ERROR_FROM_RACERD_MESSAGE exception when no completions is found in that case. This test should be written like the WhenStandardLibraryCompletionFails_MentionRustSrcPath one above. I would also rename it to something like WhenRustcNotFound_MentionRustSrcPath.


ycmd/tests/rust/get_completions_test.py, line 152 at r3 (raw file):

@patch( 'ycmd.completers.rust.rust_completer._GetRustSysroot',
        return_value = '/non/existing/file/path' )
def GetCompletions_NonExistingPathFromRustup_test( app, *args ):

Same issue as above: we don't raise the NON_EXISTING_RUST_SOURCES_PATH_MESSAGE exception when rustc is not found. I think this case is already covered by the WhenStandardLibraryCompletionFails and WhenNoCompletionsFound tests.


ycmd/tests/rust/get_completions_test.py, line 169 at r3 (raw file):

  entry = { 'rust_src_path':
            abspath( 'ycmd/tests/rust/testdata/rustup-toolchain/lib/' +
                     'rustlib/src/rust/src' ) }

PathToTestFile?


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

Review status: all files reviewed at latest revision, 8 unresolved discussions, some commit checks failed.


ycmd/completers/rust/rust_completer.py, line 145 at r1 (raw file):

Previously, micbou wrote…

Found out that it works on Windows when we also open a pipe to stdin and stderr:

utils.SafePopen( [ 'rustc', '--print', 'sysroot' ], stdin_windows = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE )

so we could do that.

Done.


ycmd/tests/rust/get_completions_test.py, line 163 at r2 (raw file):

Previously, micbou wrote…

Why no PathToTestFile here?

No good reason, fixed.


ycmd/tests/rust/get_completions_test.py, line 166 at r2 (raw file):

Previously, micbou wrote…

See the Rust DebugInfo test for an example on how to send the /debug_info request and parse its response.

Done.


ycmd/tests/rust/get_completions_test.py, line 139 at r3 (raw file):

Previously, micbou wrote…

There are two issues in this test. First, FindExecutable must be mocked from where it's looked up (this is explained here) so it should be:

@patch( 'ycmd.completers.rust.rust_completer.FindExecutable', return_value = None )

Second, we don't raise the NON_EXISTING_RUST_SOURCES_PATH_MESSAGE exception when rustc is not found (because the Rust sources path may exist) but we still raise the ERROR_FROM_RACERD_MESSAGE exception when no completions is found in that case. This test should be written like the WhenStandardLibraryCompletionFails_MentionRustSrcPath one above. I would also rename it to something like WhenRustcNotFound_MentionRustSrcPath.

Done.


ycmd/tests/rust/get_completions_test.py, line 152 at r3 (raw file):

I think this case is already covered by the WhenStandardLibraryCompletionFails and WhenNoCompletionsFound tests.

After taking another look at thte code, I think you're right, so I removed the test.


ycmd/tests/rust/get_completions_test.py, line 169 at r3 (raw file):

Previously, micbou wrote…

PathToTestFile?

Done.


Comments from Reviewable

@bstaletic bstaletic force-pushed the rustup_heuristics branch 4 times, most recently from 3bd53eb to 25963cc Compare August 20, 2017 10:33
@micbou
Copy link
Collaborator

micbou commented Aug 22, 2017

Reviewed 2 of 2 files at r4.
Review status: all files reviewed at latest revision, 6 unresolved discussions, some commit checks failed.


ycmd/tests/rust/get_completions_test.py, line 169 at r3 (raw file):

Previously, bstaletic (Boris Staletic) wrote…

Done.

PathToTestFile should be used like os.path.join to obtain \ on Windows and / on other platforms as separators:

PathToTestFile( 'rustup-toolchain', 'lib', 'rustlib', 'src', 'rust', 'src' )

ycmd/tests/rust/get_completions_test.py, line 142 at r4 (raw file):

def GetCompletions_WhenRustcNotFound_MentionRustSrcPath_test( app, *args ):
  filepath = PathToTestFile( 'rustup-toolchain/lib/rustlib/'
                             'src/rust/src/libstd/path.rs' )

I don't think we want to complete in the Rust standard library but rather in test.rs.


ycmd/tests/rust/get_completions_test.py, line 165 at r4 (raw file):

  request_data = BuildRequest( filetype = 'rust' )

  assert_that( app.post_json( '/debug_request', request_data ).json,

/debug_info instead of /debug_request.


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

Review status: 2 of 3 files reviewed at latest revision, 6 unresolved discussions.


ycmd/tests/rust/get_completions_test.py, line 169 at r3 (raw file):

Previously, micbou wrote…

PathToTestFile should be used like os.path.join to obtain \ on Windows and / on other platforms as separators:

PathToTestFile( 'rustup-toolchain', 'lib', 'rustlib', 'src', 'rust', 'src' )

Done.


ycmd/tests/rust/get_completions_test.py, line 142 at r4 (raw file):

Previously, micbou wrote…

I don't think we want to complete in the Rust standard library but rather in test.rs.

Done.


ycmd/tests/rust/get_completions_test.py, line 165 at r4 (raw file):

Previously, micbou wrote…

/debug_info instead of /debug_request.

Done.


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

I fixed the RustupPathHeuristics test, but I can't figure out what's wrong with the WhenRustcNotFound_MentionRustSrcPath test.


Review status: 2 of 3 files reviewed at latest revision, 3 unresolved discussions.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Aug 29, 2017

Reviewed 1 of 1 files at r5, 1 of 1 files at r6.
Review status: all files reviewed at latest revision, 5 unresolved discussions, some commit checks failed.


ycmd/completers/rust/rust_completer.py, line 76 at r2 (raw file):

Previously, bstaletic (Boris Staletic) wrote…

Done.

I don't see the change.


ycmd/tests/rust/get_completions_test.py, line 58 at r6 (raw file):

@SharedYcmd
def GetCompletions_WhenStandardLibraryCompletionFails_MentionRustSrcPath_test(

_GetRustSysroot should probably be patched to return a non-existing path for this test and the one below otherwise they
fail if the user installed the Rust sources on its machine with rustup.


ycmd/tests/rust/get_completions_test.py, line 151 at r6 (raw file):

                                  column_num = 1 )

  response = app.get( '/completions',

You need post_json here, not get. This should fix the test.


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

Review status: 1 of 3 files reviewed at latest revision, 5 unresolved discussions.


ycmd/completers/rust/rust_completer.py, line 76 at r2 (raw file):

Previously, micbou wrote…

I don't see the change.

My bad. Now it is done.


ycmd/tests/rust/get_completions_test.py, line 58 at r6 (raw file):

Previously, micbou wrote…

_GetRustSysroot should probably be patched to return a non-existing path for this test and the one below otherwise they
fail if the user installed the Rust sources on its machine with rustup.

Done.


ycmd/tests/rust/get_completions_test.py, line 151 at r6 (raw file):

Previously, micbou wrote…

You need post_json here, not get. This should fix the test.

Done.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Aug 29, 2017

Reviewed 1 of 2 files at r7.
Review status: 2 of 3 files reviewed at latest revision, 4 unresolved discussions.


ycmd/completers/rust/rust_completer.py, line 76 at r2 (raw file):

Previously, bstaletic (Boris Staletic) wrote…

My bad. Now it is done.

Should be rstrip without any parameter (\n is a whitespace character).


ycmd/tests/rust/get_completions_test.py, line 80 at r7 (raw file):

@SharedYcmd
def GetCompletions_WhenNoCompletionsFound_MentionRustSrcPath_test( app ):

This test should be patched like GetCompletions_WhenStandardLibraryCompletionFails_MentionRustSrcPath too.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Aug 29, 2017

Review status: 2 of 3 files reviewed at latest revision, 5 unresolved discussions.


ycmd/tests/rust/get_completions_test.py, line 61 at r7 (raw file):

        return_value = PathToTestFile( '/non/existing/rust/src/path' ) )
def GetCompletions_WhenStandardLibraryCompletionFails_MentionRustSrcPath_test(
  app ):

Need to add *args because of the patch.


Comments from Reviewable

@bstaletic bstaletic changed the title [WIP] Let ycmd check rustup configured path as the last means to finding rust src path [READY] Let ycmd check rustup configured path as the last means to finding rust src path Aug 29, 2017
@bstaletic
Copy link
Collaborator Author

@micbou Thanks for the help. This should be READY, if no one has any other changes to request.


Review status: 2 of 3 files reviewed at latest revision, 3 unresolved discussions.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Aug 29, 2017

:lgtm:


Reviewed 1 of 1 files at r11.
Review status: all files reviewed at latest revision, 3 unresolved discussions.


Comments from Reviewable

@puremourning
Copy link
Member

:lgtm: with one minor comment


Review status: all files reviewed at latest revision, 4 unresolved discussions.


ycmd/tests/rust/get_completions_test.py, line 59 at r11 (raw file):

@IsolatedYcmd()
@patch( 'ycmd.completers.rust.rust_completer._GetRustSysroot',
        return_value = PathToTestFile( '/non/existing/rust/src/path' ) )

strictly we should use PathToTestFile( 'non', 'existin', 'rust', 'src', 'path' ) so that the path gets correctly appended on Windows.

though i guess it doesn't really matter in this case.


Comments from Reviewable

@puremourning
Copy link
Member

Reviewed 1 of 3 files at r2, 1 of 2 files at r8, 1 of 1 files at r11.
Review status: all files reviewed at latest revision, 4 unresolved discussions, all commit checks successful.


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

Review status: 2 of 3 files reviewed at latest revision, 3 unresolved discussions.


ycmd/tests/rust/get_completions_test.py, line 59 at r11 (raw file):

Previously, puremourning (Ben Jackson) wrote…

strictly we should use PathToTestFile( 'non', 'existin', 'rust', 'src', 'path' ) so that the path gets correctly appended on Windows.

though i guess it doesn't really matter in this case.

Heh, I though I fixed that everywhere.
Done.


Comments from Reviewable

@micbou
Copy link
Collaborator

micbou commented Sep 16, 2017

Reviewed 1 of 1 files at r12.
Review status: all files reviewed at latest revision, 3 unresolved discussions.


ycmd/tests/rust/get_completions_test.py, line 59 at r11 (raw file):

Previously, bstaletic (Boris Staletic) wrote…

Heh, I though I fixed that everywhere.
Done.

Why don't we just set return_value to /non/existing/rust/src/path? We don't need the PathToTestFile function here.


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

Review status: 2 of 3 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful.


ycmd/tests/rust/get_completions_test.py, line 59 at r11 (raw file):

Previously, micbou wrote…

Why don't we just set return_value to /non/existing/rust/src/path? We don't need the PathToTestFile function here.

Alright, changed.


Comments from Reviewable

@puremourning
Copy link
Member

still :lgtm: with one tiny comment


Reviewed 1 of 1 files at r13.
Review status: all files reviewed at latest revision, 3 unresolved discussions.


ycmd/tests/rust/get_completions_test.py, line 82 at r13 (raw file):

@IsolatedYcmd()
@patch( 'ycmd.completers.rust.rust_completer._GetRustSysroot',
        return_value = PathToTestFile( '/non/existing/rust/src/path' ) )

same here


Comments from Reviewable

@bstaletic
Copy link
Collaborator Author

Review status: 2 of 3 files reviewed at latest revision, 3 unresolved discussions.


ycmd/tests/rust/get_completions_test.py, line 82 at r13 (raw file):

Previously, puremourning (Ben Jackson) wrote…

same here

Done.


Comments from Reviewable

@Valloric
Copy link
Member

:lgtm:

This looks good to go!

@zzbot r=micbou


Review status: 2 of 3 files reviewed at latest revision, 1 unresolved discussion.


Comments from Reviewable

@zzbot
Copy link
Contributor

zzbot commented Sep 17, 2017

📌 Commit a2ad08b has been approved by micbou

@zzbot
Copy link
Contributor

zzbot commented Sep 17, 2017

⌛ Testing commit a2ad08b with merge 238cb7c...

zzbot added a commit that referenced this pull request Sep 17, 2017
[READY] Let ycmd check rustup configured path as the last means to finding rust src path

In ycm-core/YouCompleteMe#2379 there was talk about enabling ycmd to check rust src path provided by rustup.

This allows users to have rust completion with zero ycmd configuration.

Tests are not included because tests themselves should behave differently based on how rustup was used and I'm not sure how to test that.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/valloric/ycmd/785)
<!-- Reviewable:end -->
@zzbot
Copy link
Contributor

zzbot commented Sep 17, 2017

💔 Test failed - status-appveyor

@bstaletic
Copy link
Collaborator Author

What happened to appveyor?

@zzbot retry

@zzbot
Copy link
Contributor

zzbot commented Sep 17, 2017

⌛ Testing commit a2ad08b with merge 4b87ccf...

zzbot added a commit that referenced this pull request Sep 17, 2017
[READY] Let ycmd check rustup configured path as the last means to finding rust src path

In ycm-core/YouCompleteMe#2379 there was talk about enabling ycmd to check rust src path provided by rustup.

This allows users to have rust completion with zero ycmd configuration.

Tests are not included because tests themselves should behave differently based on how rustup was used and I'm not sure how to test that.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/valloric/ycmd/785)
<!-- Reviewable:end -->
@zzbot
Copy link
Contributor

zzbot commented Sep 17, 2017

☀️ Test successful - status-appveyor, status-travis
Approved by: micbou
Pushing 4b87ccf to master...

@zzbot zzbot merged commit a2ad08b into ycm-core:master Sep 17, 2017
@bstaletic bstaletic deleted the rustup_heuristics branch September 17, 2017 11:51
zzbot added a commit that referenced this pull request Sep 30, 2017
[READY] Fix Rust debug info test when rustup is installed

Since PR #785, the Rust debug info test fails if the Rust sources have been downloaded with rustup on the machine running the tests. We should check that the Rust sources value is either `None` or a string.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/valloric/ycmd/850)
<!-- Reviewable:end -->
zzbot added a commit to ycm-core/YouCompleteMe that referenced this pull request Oct 10, 2017
[READY] Update ycmd

Include the following changes:
 - PR ycm-core/ycmd#785: automatically find Rust sources through rustup;
 - PR ycm-core/ycmd#835: do not return canonical type if identical to type in C-family languages;
 - PR ycm-core/ycmd#837: improve support of system Boost and system libclang on Gentoo;
 - PR ycm-core/ycmd#840: improve Red Hat and CentOS detection;
 - PR ycm-core/ycmd#842: consider header file entries in compilation database;
 - PR ycm-core/ycmd#843: improve completion of include statements in C-family languages;
 - PR ycm-core/ycmd#851: rename completer options in installation script;
 - PR ycm-core/ycmd#855: only include one macOS toolchain.

Update documentation according to PRs ycm-core/ycmd#785 and ycm-core/ycmd#851.

Close #2379.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/valloric/youcompleteme/2804)
<!-- Reviewable:end -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants