Skip to content

Errors in config files are no longer presented to the user #114

@mattem

Description

@mattem

Using commit abcaf80, running copybara <command> <path to copy.bara.sky> where the copy.bara.sky file is invalid (incorrect call signatures for example) no longer shows the user the error, but instead throws a ClassCastException.

matt@Matts-MacBook-Pro $ copybara -v info ./ev/tooling/changelog/copy.bara.sky
Jan 12, 2020 8:51:09 AM com.google.copybara.Main configureLog
INFO: Setting up LogManager
Copybara source mover (Version: Unknown version)
Task: Cleaning output directory
INFO: PROFILE:     14 //copybara/clean_outputdir
Task: Loading config ev/tooling/changelog/copy.bara.sky
ERROR: /Users/matt/Documents/workspace/evertz/ev/tooling/changelog/copy.bara.sky:24:5: positional argument is misplaced (positional arguments come first)
INFO: PROFILE:    238 //copybara/loading_config
java.lang.ClassCastException: com.google.devtools.build.lib.syntax.Argument$Positional cannot be cast to com.google.devtools.build.lib.syntax.Argument$Keyword
	at com.google.devtools.build.lib.syntax.Eval.doEval(Eval.java:572)
	at com.google.devtools.build.lib.syntax.Eval.eval(Eval.java:459)
	at com.google.devtools.build.lib.syntax.Eval.execDispatch(Eval.java:250)
	at com.google.devtools.build.lib.syntax.Eval.exec(Eval.java:238)
	at com.google.devtools.build.lib.syntax.Eval.execStatements(Eval.java:74)
	at com.google.devtools.build.lib.syntax.Eval.execFunctionBody(Eval.java:59)
	at com.google.devtools.build.lib.syntax.StarlarkFunction.fastcall(StarlarkFunction.java:103)
	at com.google.devtools.build.lib.syntax.Starlark.fastcall(Starlark.java:259)
	at com.google.devtools.build.lib.syntax.EvalUtils.exec(EvalUtils.java:899)
	at com.google.copybara.config.SkylarkParser$Evaluator.eval(SkylarkParser.java:232)
	at com.google.copybara.config.SkylarkParser$Evaluator.access$200(SkylarkParser.java:178)
	at com.google.copybara.config.SkylarkParser.loadConfigInternal(SkylarkParser.java:82)
	at com.google.copybara.config.SkylarkParser.getConfigWithTransitiveImports(SkylarkParser.java:124)
	at com.google.copybara.config.SkylarkParser.loadConfig(SkylarkParser.java:73)
	at com.google.copybara.ConfigLoader.loadForConfigFile(ConfigLoader.java:80)
	at com.google.copybara.ConfigLoader.load(ConfigLoader.java:57)
	at com.google.copybara.InfoCmd.run(InfoCmd.java:68)
	at com.google.copybara.Main.runInternal(Main.java:244)
	at com.google.copybara.Main.run(Main.java:122)
	at com.google.copybara.Main.main(Main.java:101)
ERROR: Unexpected error (please file a bug against copybara): com.google.devtools.build.lib.syntax.Argument$Positional cannot be cast to com.google.devtools.build.lib.syntax.Argument$Keyword (java.lang.ClassCastException: com.google.devtools.build.lib.syntax.Argument$Positional cannot be cast to com.google.devtools.build.lib.syntax.Argument$Keyword)
INFO: PROFILE:    305 //copybara

To reproduce, call copybara with an invalid copy.bara.config file. Note that syntax errors are shown to the user, albeit along with the exception above.
In my config, I was missing the required authoring attr of core.workflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions