From 63223a4b8aa291c69de2ebcc323e84ba02b019d5 Mon Sep 17 00:00:00 2001 From: Remko Popma Date: Thu, 30 Apr 2020 21:42:12 +0900 Subject: [PATCH] [#1007] Added test for bugfix for repeated subcommands. --- RELEASE-NOTES.md | 1 + src/main/java/picocli/CommandLine.java | 94 ++++++------ .../picocli/RepeatableSubcommandsTest.java | 143 +++++++++++++++++- 3 files changed, 187 insertions(+), 51 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 6a21ab5f3..57b209024 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -203,6 +203,7 @@ class AdvancedMixin { * [#988][#1002] Bugfix: Option group sections in the usage help message now include subgroup options. Thanks to [Wycer](https://github.com/Wycers) for the pull request. * [#957] Bugfix: Debug tracing now shows variable value instead of variable name. * [#955] Bugfix: TargetInvocationMessage handling in `MethodBinding.set` methods should use `getTargetException` not `getCause`; better error reporting. +* [#1007] Bugfix: Custom Type Converters are missing for repeated subcommands. Thanks to [Bastian Diehl](https://github.com/diba1013) for raising this. * [#963] DOC: Fixed broken link in README. Thanks to [vladimirf7](https://github.com/vladimirf7) for the pull request. * [#895] DOC: Added [Initialization Before Execution](https://picocli.info/#_initialization_before_execution) section on initialization with subcommands to the user manual. Thanks to [Walter Scott Johnson](https://github.com/li-wjohnson) for raising this. * [#951] DOC: Fixed typo in `picocli-codegen` annotation processor documentation: `disable.resource.config` is correct (the option name was incorrectly spelled as `disable.resources.config`). Thanks to [Max Rydahl Andersen](https://github.com/maxandersen) for raising this. diff --git a/src/main/java/picocli/CommandLine.java b/src/main/java/picocli/CommandLine.java index 92eeb7388..d32cdc464 100644 --- a/src/main/java/picocli/CommandLine.java +++ b/src/main/java/picocli/CommandLine.java @@ -7262,80 +7262,88 @@ void updateFromCommand(Command cmd, CommandSpec commandSpec, boolean loadResourc messages(new Messages(commandSpec, cmd.resourceBundle(), rb)); } } - if (isNonDefault(cmd.synopsisHeading(), DEFAULT_SYNOPSIS_HEADING)) {synopsisHeading = cmd.synopsisHeading();} - if (isNonDefault(cmd.synopsisSubcommandLabel(), DEFAULT_SYNOPSIS_SUBCOMMANDS)){synopsisSubcommandLabel = cmd.synopsisSubcommandLabel();} - if (isNonDefault(cmd.commandListHeading(), DEFAULT_COMMAND_LIST_HEADING)) {commandListHeading = cmd.commandListHeading();} - if (isNonDefault(cmd.requiredOptionMarker(), DEFAULT_REQUIRED_OPTION_MARKER)) {requiredOptionMarker = cmd.requiredOptionMarker();} if (isNonDefault(cmd.abbreviateSynopsis(), DEFAULT_ABBREVIATE_SYNOPSIS)) {abbreviateSynopsis = cmd.abbreviateSynopsis();} - if (isNonDefault(cmd.sortOptions(), DEFAULT_SORT_OPTIONS)) {sortOptions = cmd.sortOptions();} - if (isNonDefault(cmd.showDefaultValues(), DEFAULT_SHOW_DEFAULT_VALUES)) {showDefaultValues = cmd.showDefaultValues();} - if (isNonDefault(cmd.showAtFileInUsageHelp(), DEFAULT_SHOW_AT_FILE)) {showAtFileInUsageHelp = cmd.showAtFileInUsageHelp();} - if (isNonDefault(cmd.hidden(), DEFAULT_HIDDEN)) {hidden = cmd.hidden();} + if (isNonDefault(cmd.usageHelpAutoWidth(), DEFAULT_USAGE_AUTO_WIDTH)) {autoWidth = cmd.usageHelpAutoWidth();} + if (isNonDefault(cmd.commandListHeading(), DEFAULT_COMMAND_LIST_HEADING)) {commandListHeading = cmd.commandListHeading();} if (isNonDefault(cmd.customSynopsis(), DEFAULT_MULTI_LINE)) {customSynopsis = cmd.customSynopsis().clone();} if (isNonDefault(cmd.description(), DEFAULT_MULTI_LINE)) {description = cmd.description().clone();} if (isNonDefault(cmd.descriptionHeading(), DEFAULT_SINGLE_VALUE)) {descriptionHeading = cmd.descriptionHeading();} - if (isNonDefault(cmd.header(), DEFAULT_MULTI_LINE)) {header = cmd.header().clone();} - if (isNonDefault(cmd.headerHeading(), DEFAULT_SINGLE_VALUE)) {headerHeading = cmd.headerHeading();} if (isNonDefault(cmd.exitCodeList(), DEFAULT_MULTI_LINE)) {exitCodeListStrings = cmd.exitCodeList().clone();} if (isNonDefault(cmd.exitCodeListHeading(), DEFAULT_SINGLE_VALUE)) {exitCodeListHeading = cmd.exitCodeListHeading();} if (isNonDefault(cmd.footer(), DEFAULT_MULTI_LINE)) {footer = cmd.footer().clone();} if (isNonDefault(cmd.footerHeading(), DEFAULT_SINGLE_VALUE)) {footerHeading = cmd.footerHeading();} - if (isNonDefault(cmd.parameterListHeading(), DEFAULT_SINGLE_VALUE)) {parameterListHeading = cmd.parameterListHeading();} + if (isNonDefault(cmd.header(), DEFAULT_MULTI_LINE)) {header = cmd.header().clone();} + if (isNonDefault(cmd.headerHeading(), DEFAULT_SINGLE_VALUE)) {headerHeading = cmd.headerHeading();} + if (isNonDefault(cmd.hidden(), DEFAULT_HIDDEN)) {hidden = cmd.hidden();} if (isNonDefault(cmd.optionListHeading(), DEFAULT_SINGLE_VALUE)) {optionListHeading = cmd.optionListHeading();} - if (isNonDefault(cmd.usageHelpAutoWidth(), DEFAULT_USAGE_AUTO_WIDTH)) {autoWidth = cmd.usageHelpAutoWidth();} + if (isNonDefault(cmd.parameterListHeading(), DEFAULT_SINGLE_VALUE)) {parameterListHeading = cmd.parameterListHeading();} + if (isNonDefault(cmd.requiredOptionMarker(), DEFAULT_REQUIRED_OPTION_MARKER)) {requiredOptionMarker = cmd.requiredOptionMarker();} + if (isNonDefault(cmd.showAtFileInUsageHelp(), DEFAULT_SHOW_AT_FILE)) {showAtFileInUsageHelp = cmd.showAtFileInUsageHelp();} + if (isNonDefault(cmd.showDefaultValues(), DEFAULT_SHOW_DEFAULT_VALUES)) {showDefaultValues = cmd.showDefaultValues();} + if (isNonDefault(cmd.sortOptions(), DEFAULT_SORT_OPTIONS)) {sortOptions = cmd.sortOptions();} + if (isNonDefault(cmd.synopsisHeading(), DEFAULT_SYNOPSIS_HEADING)) {synopsisHeading = cmd.synopsisHeading();} + if (isNonDefault(cmd.synopsisSubcommandLabel(), DEFAULT_SYNOPSIS_SUBCOMMANDS)){synopsisSubcommandLabel = cmd.synopsisSubcommandLabel();} if (isNonDefault(cmd.usageHelpWidth(), DEFAULT_USAGE_WIDTH)) {width(cmd.usageHelpWidth());} // validate } void initFromMixin(UsageMessageSpec mixin, CommandSpec commandSpec) { - if (initializable(synopsisHeading, mixin.synopsisHeading(), DEFAULT_SYNOPSIS_HEADING)) {synopsisHeading = mixin.synopsisHeading();} - if (initializable(synopsisSubcommandLabel, mixin.synopsisSubcommandLabel(), DEFAULT_SYNOPSIS_SUBCOMMANDS)) {synopsisHeading = mixin.synopsisHeading();} - if (initializable(commandListHeading, mixin.commandListHeading(), DEFAULT_COMMAND_LIST_HEADING)) {commandListHeading = mixin.commandListHeading();} - if (initializable(requiredOptionMarker, mixin.requiredOptionMarker(), DEFAULT_REQUIRED_OPTION_MARKER)) {requiredOptionMarker = mixin.requiredOptionMarker();} if (initializable(abbreviateSynopsis, mixin.abbreviateSynopsis(), DEFAULT_ABBREVIATE_SYNOPSIS)) {abbreviateSynopsis = mixin.abbreviateSynopsis();} - if (initializable(sortOptions, mixin.sortOptions(), DEFAULT_SORT_OPTIONS)) {sortOptions = mixin.sortOptions();} - if (initializable(showDefaultValues, mixin.showDefaultValues(), DEFAULT_SHOW_DEFAULT_VALUES)) {showDefaultValues = mixin.showDefaultValues();} - if (initializable(showAtFileInUsageHelp, mixin.showAtFileInUsageHelp(), DEFAULT_SHOW_AT_FILE)) {showAtFileInUsageHelp = mixin.showAtFileInUsageHelp();} - if (initializable(hidden, mixin.hidden(), DEFAULT_HIDDEN)) {hidden = mixin.hidden();} + if (initializable(adjustLineBreaksForWideCJKCharacters, mixin.adjustLineBreaksForWideCJKCharacters(), DEFAULT_ADJUST_CJK)) {adjustLineBreaksForWideCJKCharacters = mixin.adjustLineBreaksForWideCJKCharacters();} + if (initializable(autoWidth, mixin.autoWidth(), DEFAULT_USAGE_AUTO_WIDTH)) {autoWidth = mixin.autoWidth();} + if (initializable(commandListHeading, mixin.commandListHeading(), DEFAULT_COMMAND_LIST_HEADING)) {commandListHeading = mixin.commandListHeading();} if (initializable(customSynopsis, mixin.customSynopsis(), DEFAULT_MULTI_LINE)) {customSynopsis = mixin.customSynopsis().clone();} if (initializable(description, mixin.description(), DEFAULT_MULTI_LINE)) {description = mixin.description().clone();} if (initializable(descriptionHeading, mixin.descriptionHeading(), DEFAULT_SINGLE_VALUE)) {descriptionHeading = mixin.descriptionHeading();} - if (initializable(header, mixin.header(), DEFAULT_MULTI_LINE)) {header = mixin.header().clone();} - if (initializable(headerHeading, mixin.headerHeading(), DEFAULT_SINGLE_VALUE)) {headerHeading = mixin.headerHeading();} if (initializable(exitCodeList, mixin.exitCodeList(), Collections.emptyMap()) && exitCodeListStrings == null) {exitCodeList = Collections.unmodifiableMap(new LinkedHashMap(mixin.exitCodeList()));} if (initializable(exitCodeListHeading, mixin.exitCodeListHeading(), DEFAULT_SINGLE_VALUE)) {exitCodeListHeading = mixin.exitCodeListHeading();} if (initializable(footer, mixin.footer(), DEFAULT_MULTI_LINE)) {footer = mixin.footer().clone();} if (initializable(footerHeading, mixin.footerHeading(), DEFAULT_SINGLE_VALUE)) {footerHeading = mixin.footerHeading();} - if (initializable(parameterListHeading, mixin.parameterListHeading(), DEFAULT_SINGLE_VALUE)) {parameterListHeading = mixin.parameterListHeading();} - if (initializable(optionListHeading, mixin.optionListHeading(), DEFAULT_SINGLE_VALUE)) {optionListHeading = mixin.optionListHeading();} + if (initializable(header, mixin.header(), DEFAULT_MULTI_LINE)) {header = mixin.header().clone();} + if (initializable(headerHeading, mixin.headerHeading(), DEFAULT_SINGLE_VALUE)) {headerHeading = mixin.headerHeading();} + if (initializable(hidden, mixin.hidden(), DEFAULT_HIDDEN)) {hidden = mixin.hidden();} if (Messages.empty(messages) && Messages.resourceBundleBaseName(messages) == null) { messages(Messages.copy(commandSpec, mixin.messages())); } - if (initializable(adjustLineBreaksForWideCJKCharacters, mixin.adjustLineBreaksForWideCJKCharacters(), DEFAULT_ADJUST_CJK)) {adjustLineBreaksForWideCJKCharacters = mixin.adjustLineBreaksForWideCJKCharacters();} + if (initializable(optionListHeading, mixin.optionListHeading(), DEFAULT_SINGLE_VALUE)) {optionListHeading = mixin.optionListHeading();} + if (initializable(parameterListHeading, mixin.parameterListHeading(), DEFAULT_SINGLE_VALUE)) {parameterListHeading = mixin.parameterListHeading();} + if (initializable(requiredOptionMarker, mixin.requiredOptionMarker(), DEFAULT_REQUIRED_OPTION_MARKER)) {requiredOptionMarker = mixin.requiredOptionMarker();} + if (initializable(showAtFileInUsageHelp, mixin.showAtFileInUsageHelp(), DEFAULT_SHOW_AT_FILE)) {showAtFileInUsageHelp = mixin.showAtFileInUsageHelp();} + if (initializable(showDefaultValues, mixin.showDefaultValues(), DEFAULT_SHOW_DEFAULT_VALUES)) {showDefaultValues = mixin.showDefaultValues();} + if (initializable(sortOptions, mixin.sortOptions(), DEFAULT_SORT_OPTIONS)) {sortOptions = mixin.sortOptions();} + if (initializable(synopsisHeading, mixin.synopsisHeading(), DEFAULT_SYNOPSIS_HEADING)) {synopsisHeading = mixin.synopsisHeading();} + if (initializable(synopsisSubcommandLabel, mixin.synopsisSubcommandLabel(), DEFAULT_SYNOPSIS_SUBCOMMANDS)) {synopsisHeading = mixin.synopsisHeading();} if (initializable(width, mixin.width(), DEFAULT_USAGE_WIDTH)) {width = mixin.width();} - if (initializable(autoWidth, mixin.autoWidth(), DEFAULT_USAGE_AUTO_WIDTH)) {autoWidth = mixin.autoWidth();} } void initFrom(UsageMessageSpec settings, CommandSpec commandSpec) { - description = settings.description; + abbreviateSynopsis = settings.abbreviateSynopsis; + adjustLineBreaksForWideCJKCharacters = settings.adjustLineBreaksForWideCJKCharacters; + autoWidth = settings.autoWidth; + // cachedTerminalWidth not copied + commandListHeading = settings.commandListHeading; customSynopsis = settings.customSynopsis; - header = settings.header; + description = settings.description; + descriptionHeading = settings.descriptionHeading; + exitCodeList = settings.exitCodeList; + exitCodeListHeading = settings.exitCodeListHeading; + exitCodeListStrings = settings.exitCodeListStrings; footer = settings.footer; - abbreviateSynopsis = settings.abbreviateSynopsis; - sortOptions = settings.sortOptions; - showDefaultValues = settings.showDefaultValues; - showAtFileInUsageHelp = settings.showAtFileInUsageHelp; + footerHeading = settings.footerHeading; + header = settings.header; + headerHeading = settings.headerHeading; + helpFactory = settings.helpFactory; + helpSectionRendererMap = settings.helpSectionRendererMap; hidden = settings.hidden; + longOptionsMaxWidth = settings.longOptionsMaxWidth; + messages = Messages.copy(commandSpec, settings.messages()); + optionListHeading = settings.optionListHeading; + parameterListHeading = settings.parameterListHeading; requiredOptionMarker = settings.requiredOptionMarker; - headerHeading = settings.headerHeading; + sectionKeys = settings.sectionKeys; + showAtFileInUsageHelp = settings.showAtFileInUsageHelp; + showDefaultValues = settings.showDefaultValues; + sortOptions = settings.sortOptions; + synopsisAutoIndentThreshold = settings.synopsisAutoIndentThreshold; synopsisHeading = settings.synopsisHeading; - synopsisSubcommandLabel = settings.synopsisSubcommandLabel; synopsisIndent = settings.synopsisIndent; - synopsisAutoIndentThreshold = settings.synopsisAutoIndentThreshold; - descriptionHeading = settings.descriptionHeading; - parameterListHeading = settings.parameterListHeading; - optionListHeading = settings.optionListHeading; - commandListHeading = settings.commandListHeading; - footerHeading = settings.footerHeading; + synopsisSubcommandLabel = settings.synopsisSubcommandLabel; width = settings.width; - autoWidth = settings.autoWidth; - messages = Messages.copy(commandSpec, settings.messages()); - adjustLineBreaksForWideCJKCharacters = settings.adjustLineBreaksForWideCJKCharacters; } } /** Models parser configuration specification. diff --git a/src/test/java/picocli/RepeatableSubcommandsTest.java b/src/test/java/picocli/RepeatableSubcommandsTest.java index 32119d987..96a85f791 100644 --- a/src/test/java/picocli/RepeatableSubcommandsTest.java +++ b/src/test/java/picocli/RepeatableSubcommandsTest.java @@ -12,14 +12,8 @@ import picocli.CommandLine.ParentCommand; import picocli.CommandLine.ParseResult; -import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.*; +import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; @@ -743,4 +737,137 @@ public void testCustomConverter() { assertEquals(0, exitCode); assertEquals(2, cmd.count); } + + @Test + public void testCommandLinePublicSetter() throws IOException { + PrintWriter ERR = new PrintWriter(new StringWriter()); + PrintWriter OUT = new PrintWriter(new StringWriter()); + CommandLine.IExecutionExceptionHandler xxh = new CommandLine.IExecutionExceptionHandler() { + public int handleExecutionException(Exception ex, CommandLine commandLine, ParseResult parseResult) throws Exception { + ex.printStackTrace(); + return 0; + } + }; + CommandLine.IExitCodeExceptionMapper xcxm = new CommandLine.IExitCodeExceptionMapper() { + public int getExitCode(Throwable exception) { + return 0; + } + }; + CommandLine.IHelpFactory helpFactory = new CommandLine.IHelpFactory() { + public CommandLine.Help create(CommandLine.Model.CommandSpec commandSpec, CommandLine.Help.ColorScheme colorScheme) { + return null; + } + }; + List helpKeys = Arrays.asList("A", "B", "C"); + CommandLine.INegatableOptionTransformer transformer = new CommandLine.INegatableOptionTransformer() { + public String makeNegative(String optionName, CommandLine.Model.CommandSpec cmd) { + return null; + } + + public String makeSynopsis(String optionName, CommandLine.Model.CommandSpec cmd) { + return null; + } + }; + CommandLine.IParameterExceptionHandler pex = new CommandLine.IParameterExceptionHandler() { + public int handleParseException(CommandLine.ParameterException ex, String[] args) throws Exception { + ex.printStackTrace(); + return 0; + } + }; + ResourceBundle rb = new PropertyResourceBundle(new ByteArrayInputStream(new byte[0])); + + //TestUtil.setTraceLevel("DEBUG"); + + Issue1007CommandWithCustomConverter cmd = new Issue1007CommandWithCustomConverter(); + CommandLine line = new CommandLine(cmd); + line.registerConverter(Issue1007CommandWithCustomConverter.MyBean.class, new Issue1007CommandWithCustomConverter.CustomConverter()); + line.setAdjustLineBreaksForWideCJKCharacters(false); + line.setAtFileCommentChar('!'); + line.setCaseInsensitiveEnumValuesAllowed(true); + line.setColorScheme(new CommandLine.Help.ColorScheme.Builder().commands(CommandLine.Help.Ansi.Style.fg_cyan).build()); + line.setCommandName("abcdefg"); + line.setDefaultValueProvider(new CommandLine.PropertiesDefaultProvider()); + line.setEndOfOptionsDelimiter("EOF"); + line.setErr(ERR); + line.setExecutionExceptionHandler(xxh); + + final CommandLine.IExecutionStrategy original = line.getExecutionStrategy(); + CommandLine.IExecutionStrategy xs = new CommandLine.IExecutionStrategy() { + public int execute(ParseResult parseResult) throws CommandLine.ExecutionException, CommandLine.ParameterException { + return original.execute(parseResult); + } + }; + line.setExecutionStrategy(xs); + + line.setExitCodeExceptionMapper(xcxm); + line.setExpandAtFiles(false); + line.setHelpFactory(helpFactory); + line.setHelpSectionKeys(helpKeys); + line.setHelpSectionMap(Collections.emptyMap()); + line.setInterpolateVariables(false); + line.setNegatableOptionTransformer(transformer); + line.setOut(OUT); + line.setOverwrittenOptionsAllowed(true); + line.setParameterExceptionHandler(pex); + line.setPosixClusteredShortOptionsAllowed(false); + line.setResourceBundle(rb); + line.setSeparator(":"); + line.setSplitQuotedStrings(true); + line.setStopAtPositional(true); + line.setStopAtUnmatched(true); + line.setToggleBooleanFlags(true); + line.setTrimQuotes(true); + line.setUnmatchedArgumentsAllowed(true); + line.setUnmatchedOptionsArePositionalParams(true); + line.setUsageHelpAutoWidth(true); + line.setUsageHelpLongOptionsMaxWidth(55); + line.setUsageHelpWidth(99); + line.setUseSimplifiedAtFiles(true); + + assertEquals(0, cmd.count); + int exitCode = line.execute("sub -x:abc sub -x:xyz".split(" ")); + assertEquals(0, exitCode); + assertEquals(2, cmd.count); + + assertEquals(2, line.getParseResult().subcommands().size()); + for (int i = 0; i < line.getParseResult().subcommands().size(); i++) { + checkEquals(line, line.getParseResult().subcommands().get(i).commandSpec().commandLine()); + } + } + + private void checkEquals(CommandLine line, CommandLine other) { + assertSame(line.getAtFileCommentChar(), other.getAtFileCommentChar()); + assertSame(line.isCaseInsensitiveEnumValuesAllowed(), other.isCaseInsensitiveEnumValuesAllowed()); + assertSame(line.getColorScheme(), other.getColorScheme()); + //assertSame(line.getCommandName(), other.getCommandName()); + assertSame(line.getDefaultValueProvider(), other.getDefaultValueProvider()); + assertSame(line.getEndOfOptionsDelimiter(), other.getEndOfOptionsDelimiter()); + assertSame(line.getErr(), other.getErr()); + assertSame(line.getExecutionExceptionHandler(), other.getExecutionExceptionHandler()); + assertSame(line.getExecutionStrategy(), other.getExecutionStrategy()); + assertSame(line.getExitCodeExceptionMapper(), other.getExitCodeExceptionMapper()); + //assertSame(line.isExpandAtFiles(), other.isExpandAtFiles()); + assertSame(line.getHelpFactory(), other.getHelpFactory()); + assertEquals(line.getHelpSectionKeys(), other.getHelpSectionKeys()); + assertEquals(line.getHelpSectionMap(), other.getHelpSectionMap()); + assertSame(line.isInterpolateVariables(), other.isInterpolateVariables()); + assertSame(line.getNegatableOptionTransformer(), other.getNegatableOptionTransformer()); + assertSame(line.getOut(), other.getOut()); + assertSame(line.isOverwrittenOptionsAllowed(), other.isOverwrittenOptionsAllowed()); + assertSame(line.getParameterExceptionHandler(), other.getParameterExceptionHandler()); + assertSame(line.isPosixClusteredShortOptionsAllowed(), other.isPosixClusteredShortOptionsAllowed()); + assertSame(line.getResourceBundle(), other.getResourceBundle()); + assertSame(line.getSeparator(), other.getSeparator()); + assertSame(line.isSplitQuotedStrings(), other.isSplitQuotedStrings()); + assertSame(line.isStopAtPositional(), other.isStopAtPositional()); + assertSame(line.isStopAtUnmatched(), other.isStopAtUnmatched()); + assertSame(line.isToggleBooleanFlags(), other.isToggleBooleanFlags()); + assertSame(line.isTrimQuotes(), other.isTrimQuotes()); + assertSame(line.isUnmatchedArgumentsAllowed(), other.isUnmatchedArgumentsAllowed()); + assertSame(line.isUnmatchedOptionsArePositionalParams(), other.isUnmatchedOptionsArePositionalParams()); + assertSame(line.isUsageHelpAutoWidth(), other.isUsageHelpAutoWidth()); + assertSame(line.getUsageHelpLongOptionsMaxWidth(), other.getUsageHelpLongOptionsMaxWidth()); + assertSame(line.getUsageHelpWidth(), other.getUsageHelpWidth()); + //assertSame(line.isUseSimplifiedAtFiles(), other.isUseSimplifiedAtFiles()); + } }