Skip to content

Bug when handling assert statements #21

@mgyucht

Description

@mgyucht

Discovered the following behavior difference between sjsonnet and jsonnet.

test.jsonnet:

// Returns true if any key from base is overridden in object
local isAnyKeyOverridden = function (base, object)
  local keys = std.objectFields(base);
  std.foldl(function(acc, field) acc || base[field] != object[field], keys, false);

local base = {
  paramA: null,
  paramB: null,
};

base + {
  assert !isAnyKeyOverridden(base, $),
}

test2.jsonnet:

local base = import "test.jsonnet";
local Parameterized = base + { paramA:: 3 };
Parameterized

Output from jsonnet test2.jsonnet:

RUNTIME ERROR: Object assertion failed.
        ../universe/test.jsonnet:12:10-38       thunk <object_assert>
        During manifestation

Output from sjsonnet test2.jsonnet:

{
   "paramB": null
}

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