| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
| |
Blaze options.
This change is in preparation for unknown commit which also needs to iterate over all options, but has to execute a different action than getOptionsCompletion().
As a result, applying the visitor patterns helps to avoid duplicate iteration code.
PiperOrigin-RevId: 166515117
|
|
|
|
|
|
|
|
| |
non-final and non-static.
Remove the now redundant check in the testing framework, as the cases being tested no longer compile. Keep tests that check the contents of the OptionsBase as a whole, however, as this is still not being tested at compile time.
PiperOrigin-RevId: 166239209
|
|
|
|
|
|
|
|
|
|
|
| |
the options parser.
Removes any direct reads of the annotation outside of OptionDefinition. This allows for fewer manual checks for the annotation's existence, unifies error wording, and paves the way for potentially generifying the OptionsParser to accept different @Option-equivalent annotations.
Also allows for cleanup of duplicate code by giving @Option-specific operations a clear home, such as sorts and default logic. In followup changes, we can eliminate some unnecessarily complex caching by instead memoizing values in the OptionDefinition. This will have the positive side effect of making sure reads come from the cached values.
RELNOTES: None.
PiperOrigin-RevId: 166019075
|
|
|
|
|
|
| |
Like the terminal output, there was some discrepancy between the expansion function and static expansion behavior. Also adds html usage output tests.
PiperOrigin-RevId: 165584454
|
|
|
|
|
|
|
| |
Add unit tests for individual flag usage output. Also move around some of the sample expansion function test options, which could be used more widely, to minimize recreating the boilerplate samples.
RELNOTES: None.
PiperOrigin-RevId: 165478776
|
|
|
|
|
|
| |
This requires us to have OptionsData for all usage messages, since static functionality is being removed, but this should already have been the case. It was added as an optional argument when the expansion function feature was added, but there is actually no reason not to require it, as the public interface for usage text was already computing the optionsData anyway.
PiperOrigin-RevId: 165386893
|
|
|
|
|
|
|
| |
Fix bug where a null value in the expansion text lead to a NullPointerException.
RELNOTES: None.
PiperOrigin-RevId: 164061496
|
|
|
|
|
|
|
| |
Also change it to java.time.Duration, rather than Jodatime. Now that we're on
Java 8, we no longer need Jodatime.
PiperOrigin-RevId: 162917526
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because OptionsBase implements equals() as a final method, subclasses can
only add fields in certain ways for OptionsBase to properly obey equals()
semantics. Specifically, all fields must be public and @Option annotated.
The OptionsTester checks for these two things.
Additionally, Converters must make sure to always return equals() values
on equals() (or equivalent) input. The OptionsTester includes a check that
all Converters named by the OptionsBase subclass being tested have matching
ConverterTesters, and if valid default values are specified (i.e., on
Options which are not multi-valued or default null), that these defaults
are among the values tested by the ConverterTesters.
The ConverterTesters themselves are wrapped EqualsTesters, testing that
the output of a Converter obeys equals() as expected for the same input
(or equivalent ones), and is consistent across calls to the same Converter
instance or different Converter instances.
Between these two, OptionsBase subclasses can have reasonable certainty
that two instances of themselves which were parsed equally - or underwent
equivalent transformations - will be equal.
This does not actually test any OptionsBase subclasses or Converter
implementations; it merely adds a framework. Future changes will cover
automatically testing all of the OptionsBase subclasses in a
RuleClassProvider, but naturally, this requires writing test data for
each Converter in the Bazel codebase first.
RELNOTES: None.
PiperOrigin-RevId: 162522445
|
|
|
|
|
|
| |
//src/main/java/com/google/devtools/common/options:options is now free of bazel protos, once again.
PiperOrigin-RevId: 162385612
|
|
|
|
|
|
|
| |
The option filters proto dependency can be removed from the OptionsParser. This is in response to option parser users that want to avoid the bazel-internal proto file in their dependencies.
RELNOTES: None.
PiperOrigin-RevId: 162249778
|
|
|
|
|
|
|
|
|
|
| |
In order to break out the proto dependency of the OptionsParser, add a java-only enum that users of the options parser can depend on, instead of requiring the dependency on the protobuf. The protocol buffer definition is kept in order to be used for command line reporting in the BEP, so a test is added to make sure that the two are kept in sync.
Also add some clearer guidance for how to go about selecting, and adding, option categories and tags.
Migrating the current uses of the proto enum to this one will happen in a follow-up change.
PiperOrigin-RevId: 161971077
|
|
|
|
|
|
|
|
|
|
| |
OptionMetadataTags.
These are similar, no need to have both fields. Removing the "DOCUMENTED" default, the absence of UNDOCUMENTED will be used instead.
Since requiring a documentation category for undocumented options doesn't make sense, list that as one of the OptionDocumentationCategories, but list HIDDEN and INTERNAL as part of OptionMetadata. These options should list UNDOCUMENTED as their category.
PiperOrigin-RevId: 161515674
|
|
|
|
|
|
|
|
|
|
| |
All options need to explicitly list their category and effect. If they are uncategorized, this makes the lack of information obvious. Remove defaults from the annotation to enforce this.
Also enforce the sanity check that no option should have UNKNOWN or NO_OP effects listed with other effect tags.
Includes some last default sets for options I missed in the previous mass-setting change, and some that were added since.
PiperOrigin-RevId: 160641861
|
|
|
|
|
|
|
|
| |
testing.
Unlike in the production flags, these flags are only used for internal testing. Tagged them as NO_OP instead of the default UNKNOWN to make it clear that we do not need these to become properly tagged.
PiperOrigin-RevId: 160526472
|
|
|
|
|
|
|
| |
This lets us change what it expands based on the argument passed to the flag.
RELNOTES: Allows flags that expand to take values.
PiperOrigin-RevId: 160298412
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It was originally included in runtime due to external dependencies, and
a desire to keep the options parser a general options library. These
dependencies have been or will be removed, and there are plenty of other
general flag libraries.
InvocationPolicy is fundamentally acting on the properties of this
specific OptionsParser and needs proper access to it for the proper
solution to a number of existing bugs, which means having access to
things that should be package private.
PiperOrigin-RevId: 158523111
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 158279811
|
|
|
|
|
|
|
| |
The type was ignored, and it was expected that all expansion flags had
no value of their own, but was not checked.
PiperOrigin-RevId: 158261788
|
|
|
|
| |
PiperOrigin-RevId: 157878648
|
|
|
|
|
|
|
|
| |
The no_ prefix was initially undocumented, but its support has over time
lead to a number of inconsistencies.
RELNOTES: --no_ prefix no longer recognized.
PiperOrigin-RevId: 157631435
|
|
|
|
|
|
| |
RELNOTES: None.
PiperOrigin-RevId: 157378037
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[]
This change has been automatically generated by an Error Prone check that
detects incorrect argument ordering on calls to assertEquals-style methods. See
[]
Cleanup change automatically generated by javacflume/refactory
Refactoring: third_party/java_src/error_prone/project/core/src/main/java/com/google/errorprone/bugpatterns/argumentselectiondefects:AssertEqualsArgumentOrderChecker_refactoring
Tested:
TAP --sample for global presubmit queue
[]
PiperOrigin-RevId: 156539781
|
|
|
|
|
|
|
| |
You can now use the annotation @UsesOnlyCoreTypes on a subclass of OptionsBase, to indicate that all of its options' types are restricted to a whitelist of immutable and serializable types. Subclasses of the annotated class must also follow the same restriction.
RELNOTES: None
PiperOrigin-RevId: 154328920
|
|
|
|
| |
PiperOrigin-RevId: 153610163
|
|
|
|
|
|
|
| |
Added toMap()/fromMap() to OptionsParser, and moved the implementation of OptionsBase#asMap away from OptionsParserImpl.
RELNOTES: None
PiperOrigin-RevId: 153602479
|
|
|
|
|
|
|
|
| |
restrictions.
Prevent the old category strings "undocumented," "hidden," or "internal" from being used as categories, to prevent developers from relying on deprecated behavior.
PiperOrigin-RevId: 153525499
|
|
|
|
|
|
|
| |
This lets us easily get all options classes of a parser, or all fields of those options classes, in a deterministic way.
RELNOTES: None
PiperOrigin-RevId: 153376699
|
|
|
|
|
|
|
|
| |
This prevents having to parse the category, and allows the category to potentially be used in the future for information about all options, included undocumented, hidden, or internal options.
Also rename DocumentationLevel to OptionUsageRestrictions, since INTERNAL was not really documentation related.
PiperOrigin-RevId: 153367769
|
|
|
|
|
|
|
|
|
|
|
| |
OptionsParserTest is kind of massive. This CL splits off tests that only concern IsolatedOptionsData. For example, tests that deal with malformed option specifications, but not string parsing, would go here.
A followup CL will add tests of IsolatedOptionsData's accessor methods.
Also added a unit test for the warning added by https://github.com/bazelbuild/bazel/commit/e11775c2394fc48ac7fe5b632b47ae952dd552b4.
RELNOTES: None
PiperOrigin-RevId: 153346363
|
|
|
|
|
| |
--no_ prefixes for boolean flags are deprecated. Error out nicely if --no_ is supplied.
PiperOrigin-RevId: 152434290
|
|
|
|
|
|
|
|
|
|
| |
The exception is unchecked. The reasoning is that errors during parser construction should not occur, and when they do occur it is an internal error like a failed assertion.
This allows casual uses of the options parser to stay oblivious to the possibility of failures, consistent with how DuplicateOptionDeclarationException is currently [not] handled. At the same time, the dispatcher can catch the exception to fail gracefully (by printing to stdout instead of a log file) when parser construction fails for any reason.
RELNOTES: None
PiperOrigin-RevId: 151839620
|
|
|
|
|
|
|
|
|
| |
Prevent OptionsBases with conflicting names due to --no boolean flag aliases to
successfully combine into parser.
Also remove the comment about --no_ not being documented, since it has been documented since Bazel was open-sourced.
PiperOrigin-RevId: 151738453
|
|
|
|
|
|
|
|
|
|
|
|
| |
This provides a way to programmatically define expansions of options based on what other options are defined for the parser. In particular, it will be used for the --incompatible_* changes mechanism, to turn on all incompatible change flags.
Expansion functions are specified in the @Option annotation, similar to converters. They are computed when an OptionsParser is constructed, and inspect a preliminary version of its OptionsData to determine the expansion result. This is then cached in the final OptionsData used by the parser.
Expansion information for usage strings is available, but only when the usage strings are obtained via the parser.
--
PiperOrigin-RevId: 150817553
MOS_MIGRATED_REVID=150817553
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is intended to be used for "flags" which should never appear on the
command line - things like configuration distinguishers, which are used
internally and must be part of the build options, but should always be set
to their default value at the top level.
This is already a convention within Bazel, but doesn't actually work the way
Bazel expects - flags with spaces can be set by simply escaping or quoting
the spaces so that word splitting will not break on them. This means they
can also be matched by config_settings, which pass a single string.
Forbidding the parser from matching these flags solves both of these
unintended cases.
Existing cases like this have also been converted to internal.
--
PiperOrigin-RevId: 150497246
MOS_MIGRATED_REVID=150497246
|
|
|
|
|
|
|
|
| |
Fixes https://github.com/bazelbuild/bazel/issues/2416
--
PiperOrigin-RevId: 145595491
MOS_MIGRATED_REVID=145595491
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 145473123
MOS_MIGRATED_REVID=145473123
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 145059124
MOS_MIGRATED_REVID=145059124
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=129316675
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=129226221
|
|
|
|
|
|
|
|
|
|
|
| |
missing file to it.
We need to activate this check on presubmits
--
Change-Id: Ia95e92d3816ce92bb69bc0e2cf56e9c60b68d970
Reviewed-on: https://bazel-review.googlesource.com/#/c/3949/
MOS_MIGRATED_REVID=126404792
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for retrieving
the default values of options.
The field defaultMultipleValue was introduced in commit 51a491b89a9cd5f15c9a093a5693bc37e696e6e1 to allow defining a
default value for options that set allowMultiple. However due to the limitations of
the optionsParser end up being not useful since we cannot guarantee that an option
that allows multiple has a converter that returns a list of values.
Thus this CL deletes code that may confuse even more and clarifies the mechanism
that the options currently use to obtain their default values.
--
MOS_MIGRATED_REVID=120317261
|
|
|
|
|
|
|
| |
options classes.
--
MOS_MIGRATED_REVID=120125572
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
default values for
flags whose allowMultiple is true.
The behavior is the following:
- If allowMultiple is false then behave as previously.
- Otherwise for retrieving the default we now look at defaultMultipleValue instead of defaultValue and
in the process it will apply the converter to each element. If no defaultMultipleValue is specified
then the default value will be an empty list.
--
MOS_MIGRATED_REVID=117558645
|
|
|
|
|
|
|
|
|
| |
value of an option with null.
Currently it returns the original default value if the new value is null.
--
MOS_MIGRATED_REVID=115442253
|
|
|
|
|
|
|
|
|
| |
This make those test target compatible with --nolegacy_bazel_java_test.
--
Change-Id: I2316c9aa53327b417ecce5fd5dab95ec726da11d
Reviewed-on: https://bazel-review.googlesource.com/#/c/2690
MOS_MIGRATED_REVID=112446514
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=112267123
|
|
|
|
|
|
|
| |
old name.
--
MOS_MIGRATED_REVID=107611961
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=106597904
|
|
|
|
|
|
|
| |
created for flags that were renamed, but which were specified on the command line using their new name.
--
MOS_MIGRATED_REVID=106458953
|