/* | |
* Copyright (C) 2014 The Android Open Source Project | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package com.android.sdklib; | |
import com.android.annotations.Nullable; | |
import com.android.sdklib.repository.FullRevision; | |
import com.android.sdklib.repository.NoPreviewRevision; | |
import com.android.utils.ILogger; | |
import java.util.Properties; | |
public class BuildToolInfoTest extends SdkManagerTestCase { | |
/** | |
* Wraps an *existing* build-tool info object to expose some of its internals for testing. | |
*/ | |
public static class BuildToolInfoWrapper extends BuildToolInfo { | |
private final BuildToolInfo mInfo; | |
private NoPreviewRevision mOverrideJvmVersion; | |
public BuildToolInfoWrapper(BuildToolInfo info) { | |
super(info.getRevision(), info.getLocation()); | |
mInfo = info; | |
} | |
@Override | |
public String getPath(PathId pathId) { | |
return mInfo.getPath(pathId); | |
} | |
@Override | |
public Properties getRuntimeProps() { | |
return mInfo.getRuntimeProps(); | |
} | |
@Override | |
public boolean isValid(ILogger log) { | |
return mInfo.isValid(log); | |
} | |
@Override | |
public boolean canRunOnJvm() { | |
// This runs canRunOnJvm on *this* instance so that it can | |
// access the overridden getCurrentJvmVersion below rather than | |
// the original that we are wrapping. | |
return super.canRunOnJvm(); | |
} | |
@Override | |
protected NoPreviewRevision getCurrentJvmVersion() throws NumberFormatException { | |
if (mOverrideJvmVersion != null) { | |
return mOverrideJvmVersion; | |
} | |
return mInfo.getCurrentJvmVersion(); | |
} | |
public void overrideJvmVersion(@Nullable NoPreviewRevision jvmVersion) { | |
mOverrideJvmVersion = jvmVersion; | |
} | |
} | |
public void testGetCurrentJvmVersion() { | |
SdkManager sdkman = getSdkManager(); | |
BuildToolInfo bt = sdkman.getBuildTool(new FullRevision(18, 3, 4, 5)); | |
assertNotNull(bt); | |
// Check the actual JVM running this test. | |
NoPreviewRevision curr = bt.getCurrentJvmVersion(); | |
// We can reasonably expect this to at least run with JVM 1.5 or more | |
assertTrue(curr.compareTo(new FullRevision(1, 5, 0)) > 0); | |
// and we can reasonably expect to not be running with JVM 42.0.0 | |
assertTrue(curr.compareTo(new FullRevision(42, 0, 0)) < 0); | |
} | |
} |