Skip to content
This repository has been archived by the owner on Apr 3, 2018. It is now read-only.

Commit

Permalink
!API Added correct validation of SDK_PATH pref to widgets.
Browse files Browse the repository at this point in the history
Added LangCoreTests_Actual with mock SDK
  • Loading branch information
bruno-medeiros committed Apr 18, 2016
1 parent 810bcd6 commit d9c0f93
Show file tree
Hide file tree
Showing 35 changed files with 510 additions and 235 deletions.
Expand Up @@ -42,6 +42,7 @@
import melnorme.lang.tooling.ast.ParserError; import melnorme.lang.tooling.ast.ParserError;
import melnorme.lang.tooling.structure.SourceFileStructure; import melnorme.lang.tooling.structure.SourceFileStructure;
import melnorme.utilbox.collections.Indexable; import melnorme.utilbox.collections.Indexable;
import melnorme.utilbox.core.CommonException;


class AnnotationsModelManager { class AnnotationsModelManager {


Expand Down Expand Up @@ -72,7 +73,7 @@ public void dispose() throws Exception {
super.dispose(); super.dispose();
} }


public void initProject() throws CoreException { public void initProject() throws CoreException, CommonException {
fixtureProject = new SampleProject(ModelReconcilationTest.class.getSimpleName()) { fixtureProject = new SampleProject(ModelReconcilationTest.class.getSimpleName()) {
@Override @Override
protected void fillProject() throws CoreException { protected void fillProject() throws CoreException {
Expand All @@ -81,7 +82,6 @@ protected void fillProject() throws CoreException {


ResourceUtils.writeStringToFile(folder.getFile("fileA"), "default contents A", null); ResourceUtils.writeStringToFile(folder.getFile("fileA"), "default contents A", null);
ResourceUtils.writeStringToFile(folder.getFile("fileB"), "default contents B", null); ResourceUtils.writeStringToFile(folder.getFile("fileB"), "default contents B", null);

} }
}; };
} }
Expand Down
Expand Up @@ -29,13 +29,11 @@
import melnorme.lang.ide.core.launch.LaunchMessages; import melnorme.lang.ide.core.launch.LaunchMessages;
import melnorme.lang.ide.core.operations.ILangOperationsListener_Default.NullOperationMonitor; import melnorme.lang.ide.core.operations.ILangOperationsListener_Default.NullOperationMonitor;
import melnorme.lang.ide.core.operations.ToolManager; import melnorme.lang.ide.core.operations.ToolManager;
import melnorme.lang.ide.core.operations.ToolchainPreferences;
import melnorme.lang.ide.core.operations.build.BuildManager_Test.TestsBuildManager.SampleStrictBuildType; import melnorme.lang.ide.core.operations.build.BuildManager_Test.TestsBuildManager.SampleStrictBuildType;
import melnorme.lang.ide.core.operations.build.BuildTargetOperation.BuildOperationParameters; import melnorme.lang.ide.core.operations.build.BuildTargetOperation.BuildOperationParameters;
import melnorme.lang.ide.core.project_model.LangBundleModel; import melnorme.lang.ide.core.project_model.LangBundleModel;
import melnorme.lang.ide.core.tests.BuildTestsHelper; import melnorme.lang.ide.core.tests.BuildTestsHelper;
import melnorme.lang.ide.core.tests.CoreTestWithProject; import melnorme.lang.ide.core.tests.CoreTestWithProject;
import melnorme.lang.ide.core.tests.SampleProject;
import melnorme.lang.tooling.bundle.BuildConfiguration; import melnorme.lang.tooling.bundle.BuildConfiguration;
import melnorme.lang.tooling.bundle.BuildTargetNameParser; import melnorme.lang.tooling.bundle.BuildTargetNameParser;
import melnorme.lang.tooling.data.StatusException; import melnorme.lang.tooling.data.StatusException;
Expand Down Expand Up @@ -157,85 +155,48 @@ protected BuildConfiguration getValidBuildconfiguration(String buildConfigName,
@Test @Test
public void test() throws Exception { test$(); } public void test() throws Exception { test$(); }
public void test$() throws Exception { public void test$() throws Exception {
initSampleProject();


try(SampleProject sampleProj = initSampleProject()){

buildMgr.loadProjectBuildInfo(project, bundleInfo);

ProjectBuildInfo buildInfo = buildMgr.getBuildInfo(project);
assertNotNull(buildInfo);
checkBuildTargets(buildInfo.getBuildTargets().toArrayList(), list(
sampleBT_A,
sampleBT_B,
sampleBT_STRICT)
);

assertEquals(
buildMgr.getBuildTarget(project, "TargetA", true).getData(),
sampleBT_A);
assertEquals(
buildMgr.getBuildTarget(project, "TargetB", true).getData(),
sampleBT_B);
verifyThrows(
() -> buildMgr.getBuildTarget(project, "TargetA#default", true).getData(),
CommonException.class,
LaunchMessages.BuildTarget_NotFound);

verifyThrows(
() -> buildMgr.getBuildTarget(project, "TargetA"+SEP+"bad_config", false).getData(),
CommonException.class,
"No such build type: `bad_config`"); // Build Type not found

assertEquals(
buildMgr.getBuildTarget(project, "ImplicitTarget"+SEP+"default", false).getData(),
bt("ImplicitTarget"+SEP+"default", false, false, null, null));

verifyThrows(
() -> buildMgr.getBuildTarget(project, "ImplicitTarget"+SEP+"strict", false).getData(),
CommonException.class,
"Build configuration `ImplicitTarget` not found"); // Config not found

}

try(SampleProject sampleProj = initSampleProject()){
testSaveLoadProjectInfo();
}

try(SampleProject sampleProj = initSampleProject()){
testBuildOperation();
}
}

protected void testSaveLoadProjectInfo() throws CommonException {

SampleStrictBuildType buildType = buildMgr.new SampleStrictBuildType("default");
BuildConfiguration buildConfig = new BuildConfiguration("configA", null);

BuildTarget btA = new BuildTarget(project, bundleInfo, bt("TargetA", false, true, "new1", "new3"),
buildType, buildConfig);
BuildTarget btNonExistentButValid = new BuildTarget(project, bundleInfo,
new BuildTargetData("TargetA" + SEP + "default", true, false),
buildType, buildConfig);
BuildTarget btNonExistent = new BuildTarget(project, bundleInfo,
new BuildTargetData("TargetA" + SEP + "NonExistentType", false, true),
buildType, buildConfig);

ProjectBuildInfo newProjectBuildInfo = new ProjectBuildInfo(buildMgr, project, bundleInfo,
new ArrayList2<>(btA, btNonExistentButValid, btNonExistent));
buildMgr.setProjectBuildInfo(project, newProjectBuildInfo);
buildMgr.saveProjectInfo(project);

buildMgr.getBuildModel().removeProjectInfo(project);
assertTrue(buildMgr.getBuildModel().getProjectInfo(project) == null);
buildMgr.loadProjectBuildInfo(project, bundleInfo); buildMgr.loadProjectBuildInfo(project, bundleInfo);


ProjectBuildInfo buildInfo = buildMgr.getBuildInfo(project); ProjectBuildInfo buildInfo = buildMgr.getBuildInfo(project);
assertNotNull(buildInfo);
checkBuildTargets(buildInfo.getBuildTargets().toArrayList(), list( checkBuildTargets(buildInfo.getBuildTargets().toArrayList(), list(
bt("TargetA", false, true, "new1", "new3"), // Ensure TargetA uses previous settings sampleBT_A,
sampleBT_B, sampleBT_B,
sampleBT_STRICT) sampleBT_STRICT)
); );

assertEquals(
buildMgr.getBuildTarget(project, "TargetA", true).getData(),
sampleBT_A);
assertEquals(
buildMgr.getBuildTarget(project, "TargetB", true).getData(),
sampleBT_B);
verifyThrows(
() -> buildMgr.getBuildTarget(project, "TargetA#default", true).getData(),
CommonException.class,
LaunchMessages.BuildTarget_NotFound);


verifyThrows(
() -> buildMgr.getBuildTarget(project, "TargetA"+SEP+"bad_config", false).getData(),
CommonException.class,
"No such build type: `bad_config`"); // Build Type not found

assertEquals(
buildMgr.getBuildTarget(project, "ImplicitTarget"+SEP+"default", false).getData(),
bt("ImplicitTarget"+SEP+"default", false, false, null, null));

verifyThrows(
() -> buildMgr.getBuildTarget(project, "ImplicitTarget"+SEP+"strict", false).getData(),
CommonException.class,
"Build configuration `ImplicitTarget` not found"); // Config not found


test_compositeBuildTargetSettings();
test_BuildType();

testBuildOperation();
} }


public void checkBuildTargets(Indexable<BuildTarget> buildTargets, Indexable<BuildTargetDataView> expectedSettings) { public void checkBuildTargets(Indexable<BuildTarget> buildTargets, Indexable<BuildTargetDataView> expectedSettings) {
Expand All @@ -248,28 +209,23 @@ public void checkBuildTargets(Indexable<BuildTarget> buildTargets, Indexable<Bui


/* ----------------- ----------------- */ /* ----------------- ----------------- */


@Test public void test_compositeBuildTargetSettings() throws Exception {
public void test_compositeBuildTargetSettings() throws Exception { test_compositeBuildTargetSettings$(); }
public void test_compositeBuildTargetSettings$() throws Exception {


try(SampleProject sampleProj = initSampleProject()){ assertEquals(

btSettings("TargetA", null, null).getValidBuildTarget().getData(),
assertEquals( bt("TargetA", true, false, null, null));
btSettings("TargetA", null, null).getValidBuildTarget().getData(),
bt("TargetA", true, false, null, null)); assertEquals(

btSettings("TargetB", null, null).getValidBuildTarget().getData(),
assertEquals( bt("TargetB", false, true, "B: build_args", "B: exe_path"));
btSettings("TargetB", null, null).getValidBuildTarget().getData(),
bt("TargetB", false, true, "B: build_args", "B: exe_path")); assertEquals(

btSettings("TargetB", "ARGS", "EXEPATH").getValidBuildTarget().getData(),
assertEquals( bt("TargetB", false, true, "ARGS", "EXEPATH"));
btSettings("TargetB", "ARGS", "EXEPATH").getValidBuildTarget().getData(),
bt("TargetB", false, true, "ARGS", "EXEPATH")); assertEquals(

btSettings("ImplicitTarget", "ARGS", "EXEPATH").getValidBuildTarget().getData(),
assertEquals( bt("ImplicitTarget", false, false, "ARGS", "EXEPATH"));
btSettings("ImplicitTarget", "ARGS", "EXEPATH").getValidBuildTarget().getData(),
bt("ImplicitTarget", false, false, "ARGS", "EXEPATH"));
}


} }


Expand Down Expand Up @@ -314,30 +270,22 @@ public String getExecutablePath() {


/* ----------------- ----------------- */ /* ----------------- ----------------- */


@Test public void test_BuildType() throws Exception {
public void testBuildType() throws Exception { testBuildType$(); }
public void testBuildType$() throws Exception {

BuildManager.BuildType buildType = buildMgr.new SampleBuildType("default"); BuildManager.BuildType buildType = buildMgr.new SampleBuildType("default");


try(SampleProject sampleProj = initSampleProject()){ ProjectBuildInfo buildInfo = buildMgr.getValidBuildInfo(project);

BundleInfo bundleInfo = buildInfo.getBundleInfo();
IProject project = sampleProj.getProject();

BuildTargetData targetA = bt("SampleTarget", true, true, null, null);
ProjectBuildInfo buildInfo = buildMgr.getValidBuildInfo(project); BuildTarget buildTargetA = BuildTarget.create(project, bundleInfo, targetA, buildType, "");
BundleInfo bundleInfo = buildInfo.getBundleInfo(); verifyThrows(() -> buildTargetA.getEffectiveValidExecutablePath(), CommonException.class,

LaunchMessages.MSG_BuildTarget_NoExecutableAvailable());
BuildTargetData targetA = bt("SampleTarget", true, true, null, null);
BuildTarget buildTargetA = BuildTarget.create(project, bundleInfo, targetA, buildType, ""); BuildTargetData target2 = bt("SampleTarget2", true, true, "sample args", "sample path");
verifyThrows(() -> buildTargetA.getEffectiveValidExecutablePath(), CommonException.class, BuildTarget buildTarget2 = BuildTarget.create(project, bundleInfo, target2, buildType, "");
LaunchMessages.MSG_BuildTarget_NoExecutableAvailable());

assertAreEqual(buildTarget2.getEffectiveValidExecutablePath(), "sample path");
BuildTargetData target2 = bt("SampleTarget2", true, true, "sample args", "sample path");
BuildTarget buildTarget2 = BuildTarget.create(project, bundleInfo, target2, buildType, "");

assertAreEqual(buildTarget2.getEffectiveValidExecutablePath(), "sample path");


}
} }


protected NullOperationMonitor opMonitor = new NullOperationMonitor(); protected NullOperationMonitor opMonitor = new NullOperationMonitor();
Expand All @@ -349,30 +297,37 @@ protected void testBuildOperation() throws CommonException, StatusException {
BuildTarget btA = buildMgr.getBuildTarget(project, "TargetA", true); BuildTarget btA = buildMgr.getBuildTarget(project, "TargetA", true);
assertTrue(btA.getData().getBuildArguments() == null); assertTrue(btA.getData().getBuildArguments() == null);


BuildTarget btB = buildMgr.getBuildTarget(project, "TargetB", true);
assertTrue(btB.getData().getBuildArguments() != null);

assertAreEqual( assertAreEqual(
btA.getBuildOperation(toolMgr, opMonitor).getEffectiveProccessCommandLine(), btA.getBuildOperation(toolMgr, opMonitor).getEffectiveProccessCommandLine(),
list("default:", "build_args") list(strSDKTool(), "default:", "build_args")
); );


BuildTarget btB = buildMgr.getBuildTarget(project, "TargetB", true);
assertTrue(btB.getData().getBuildArguments() != null);

assertAreEqual( assertAreEqual(
btB.getBuildOperation(toolMgr, opMonitor).getEffectiveProccessCommandLine(), btB.getBuildOperation(toolMgr, opMonitor).getEffectiveProccessCommandLine(),
list("B:", "build_args") list("B:", "build_args")
); );


testBuildOperation_Vars(buildInfo, btB); testBuildOperation_Vars(buildInfo, btB);

// Test invalid command - empty
verifyThrows(
() -> getBuildOperation(buildInfo, btB, ""),

CommonException.class, "Build command is empty"
);

} }


protected void testBuildOperation_Vars(ProjectBuildInfo buildInfo, BuildTarget btB) throws CommonException { protected void testBuildOperation_Vars(ProjectBuildInfo buildInfo, BuildTarget btB) throws CommonException {
ToolchainPreferences.SDK_PATH2.setValue(project, "my_tool_path");


// Test var resolution - SDK tool var // Test var resolution - SDK tool var
assertAreEqual( assertAreEqual(
getBuildOperation(buildInfo, btB, variableRefString(VAR_NAME_SdkToolPath) + " build"), getBuildOperation(buildInfo, btB, variableRefString(VAR_NAME_SdkToolPath) + " build"),


list("my_tool_path", "build") list(strSDKTool(), "build")
); );


// Test var resolution - undefined var // Test var resolution - undefined var
Expand Down Expand Up @@ -402,4 +357,41 @@ protected Indexable<String> getBuildOperation(ProjectBuildInfo buildInfo, BuildT
return buildOperation.getEffectiveProccessCommandLine(); return buildOperation.getEffectiveProccessCommandLine();
} }


/* ----------------- ----------------- */

@Test
public void test_SaveLoadProjectInfo() throws Exception { test_SaveLoadProjectInfo$(); }
public void test_SaveLoadProjectInfo$() throws Exception {
initSampleProject();

SampleStrictBuildType buildType = buildMgr.new SampleStrictBuildType("default");
BuildConfiguration buildConfig = new BuildConfiguration("configA", null);

BuildTarget btA = new BuildTarget(project, bundleInfo, bt("TargetA", false, true, "new1", "new3"),
buildType, buildConfig);
BuildTarget btNonExistentButValid = new BuildTarget(project, bundleInfo,
new BuildTargetData("TargetA" + SEP + "default", true, false),
buildType, buildConfig);
BuildTarget btNonExistent = new BuildTarget(project, bundleInfo,
new BuildTargetData("TargetA" + SEP + "NonExistentType", false, true),
buildType, buildConfig);

ProjectBuildInfo newProjectBuildInfo = new ProjectBuildInfo(buildMgr, project, bundleInfo,
new ArrayList2<>(btA, btNonExistentButValid, btNonExistent));
buildMgr.setProjectBuildInfo(project, newProjectBuildInfo);
buildMgr.saveProjectInfo(project);

buildMgr.getBuildModel().removeProjectInfo(project);
assertTrue(buildMgr.getBuildModel().getProjectInfo(project) == null);
buildMgr.loadProjectBuildInfo(project, bundleInfo);

ProjectBuildInfo buildInfo = buildMgr.getBuildInfo(project);
checkBuildTargets(buildInfo.getBuildTargets().toArrayList(), list(
bt("TargetA", false, true, "new1", "new3"), // Ensure TargetA uses previous settings
sampleBT_B,
sampleBT_STRICT)
);

}

} }

0 comments on commit d9c0f93

Please sign in to comment.