aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2017-04-17 21:16:13 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-04-18 11:33:40 +0200
commit6748b39f87de76f0ad1a4a192f3ee3965a14bc71 (patch)
treee2139f249d6002db847ebc4a79b99eb35539e303 /src/main/java/com/google/devtools/build/lib/rules/objc
parent391d5d9d06f18d49baab037ebc10e4ec5efdb233 (diff)
Improve DottedVersion validation for minimum_os attribute, and fix error message.
RELNOTES: None. PiperOrigin-RevId: 153372617
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
index de2c187328..5cbb4d98ed 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
@@ -46,6 +46,11 @@ public class MultiArchSplitTransitionProvider implements SplitTransitionProvider
static final String UNSUPPORTED_PLATFORM_TYPE_ERROR_FORMAT =
"Unsupported platform type \"%s\"";
+ @VisibleForTesting
+ static final String INVALID_VERSION_STRING_ERROR_FORMAT =
+ "Invalid version string \"%s\". Version must be of the form 'x.y' without alphabetic "
+ + "characters, such as '4.3'.";
+
private static final ImmutableSet<PlatformType> SUPPORTED_PLATFORM_TYPES =
ImmutableSet.of(
PlatformType.IOS, PlatformType.WATCHOS, PlatformType.TVOS, PlatformType.MACOS);
@@ -79,12 +84,14 @@ public class MultiArchSplitTransitionProvider implements SplitTransitionProvider
// TODO(b/37096178): This should be a mandatory attribute.
if (!Strings.isNullOrEmpty(attributeValue)) {
try {
- // TODO(cparsons): Do more rigorous validation. For example, "8.2beta.3" is invalid, but
- // will pass this validation.
- DottedVersion.fromString(attributeValue);
+ DottedVersion minimumOsVersion = DottedVersion.fromString(attributeValue);
+ if (minimumOsVersion.hasAlphabeticCharacters() || minimumOsVersion.numComponents() > 2) {
+ throw ruleContext.throwWithAttributeError(MultiArchPlatformRule.MINIMUM_OS_VERSION,
+ String.format(INVALID_VERSION_STRING_ERROR_FORMAT, attributeValue));
+ }
} catch (IllegalArgumentException exception) {
- throw ruleContext.throwWithAttributeError(MultiArchPlatformRule.PLATFORM_TYPE_ATTR_NAME,
- String.format(UNSUPPORTED_PLATFORM_TYPE_ERROR_FORMAT, attributeValue));
+ throw ruleContext.throwWithAttributeError(MultiArchPlatformRule.MINIMUM_OS_VERSION,
+ String.format(INVALID_VERSION_STRING_ERROR_FORMAT, attributeValue));
}
}
}