diff options
author | cparsons <cparsons@google.com> | 2017-04-17 21:16:13 +0200 |
---|---|---|
committer | Klaus Aehlig <aehlig@google.com> | 2017-04-18 11:33:40 +0200 |
commit | 6748b39f87de76f0ad1a4a192f3ee3965a14bc71 (patch) | |
tree | e2139f249d6002db847ebc4a79b99eb35539e303 /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | 391d5d9d06f18d49baab037ebc10e4ec5efdb233 (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.java | 17 |
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)); } } } |