mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
Bug 413678: trigger discovery after command line change
Change-Id: I543b95ba08c0f2a482799a6c37fe13759bc21550 Also-by: Andrew Gvozdev <angvoz.dev@gmail.com> Signed-off-by: Andrew Gvozdev <angvoz.dev@gmail.com> Signed-off-by: Liviu Ionescu <ilg@livius.net>
This commit is contained in:
parent
e2661d9993
commit
775dc3fc68
2 changed files with 40 additions and 0 deletions
|
@ -888,6 +888,41 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
|
|||
provider.unregisterListener();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test running a provider after changing the compiler command.
|
||||
*/
|
||||
public void testAbstractBuiltinSpecsDetector_RerunOnCommandArgsChange() throws Exception {
|
||||
// Create test "compiler"
|
||||
java.io.File compiler = new java.io.File("compiler");
|
||||
compiler.createNewFile();
|
||||
assertTrue(compiler.exists());
|
||||
String compilerPath = compiler.getAbsolutePath();
|
||||
|
||||
// Create provider
|
||||
MockBuiltinSpecsDetectorWithRunCount provider = new MockBuiltinSpecsDetectorWithRunCount();
|
||||
provider.setCommand(compilerPath + " arg1");
|
||||
// register environment listener on workspace
|
||||
provider.registerListener(null);
|
||||
waitForProviderToFinish();
|
||||
assertEquals(1, provider.getExecutedCount());
|
||||
|
||||
// Check that an event doesn't trigger unnecessary rerun
|
||||
provider.handleEvent(null);
|
||||
waitForProviderToFinish();
|
||||
assertEquals(1, provider.getExecutedCount());
|
||||
|
||||
// Change the compiler command
|
||||
provider.setCommand(compilerPath + " arg2");
|
||||
|
||||
// Check that an event triggers rerun after changing the compiler command
|
||||
provider.handleEvent(null);
|
||||
waitForProviderToFinish();
|
||||
assertEquals(2, provider.getExecutedCount());
|
||||
|
||||
// unregister listeners
|
||||
provider.unregisterListener();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check that entries get grouped by kinds by stock built-in specs detector.
|
||||
*/
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*
|
||||
* Contributors:
|
||||
* Andrew Gvozdev - initial API and implementation
|
||||
* Liviu Ionescu - Bug 413678: trigger discovery after command line change
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.managedbuilder.language.settings.providers;
|
||||
|
@ -419,6 +420,10 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
|||
for (String languageId : languageIds) {
|
||||
try {
|
||||
String command = resolveCommand(languageId);
|
||||
if (command != null) {
|
||||
envHashNew = 31*envHashNew + command.hashCode();
|
||||
}
|
||||
|
||||
String[] cmdArray = CommandLineUtil.argumentsToArray(command);
|
||||
if (cmdArray != null && cmdArray.length > 0) {
|
||||
IPath location = new Path(cmdArray[0]);
|
||||
|
|
Loading…
Add table
Reference in a new issue