diff --git a/lib/private/action_subject.bzl b/lib/private/action_subject.bzl index c9e21eb..54fe849 100644 --- a/lib/private/action_subject.bzl +++ b/lib/private/action_subject.bzl @@ -67,6 +67,7 @@ def _action_subject_new(action, meta): meta = meta, mnemonic = mkmethod(self, _action_subject_mnemonic), not_contains_arg = mkmethod(self, _action_subject_not_contains_arg), + outputs = mkmethod(self, _action_subject_outputs), substitutions = mkmethod(self, _action_subject_substitutions), # keep sorted end ) @@ -226,6 +227,17 @@ def _action_subject_inputs(self): meta = self.meta.derive("inputs()") return DepsetFileSubject.new(self.action.inputs, meta) +def _action_subject_outputs(self): + """Returns a DepsetFileSubject for the action's outputs. + + Method: ActionSubject.outputs + + Returns: + `DepsetFileSubject` of the action's outputs. + """ + meta = self.meta.derive("outputs()") + return DepsetFileSubject.new(self.action.outputs, meta) + def _action_subject_contains_flag_values(self, flag_values): """Assert that an action's argv has the given ("--flag", "value") entries. diff --git a/lib/private/depset_file_subject.bzl b/lib/private/depset_file_subject.bzl index fc7df70..fe5a20b 100644 --- a/lib/private/depset_file_subject.bzl +++ b/lib/private/depset_file_subject.bzl @@ -61,6 +61,7 @@ def _depset_file_subject_new(files, meta, container_name = "depset", element_plu contains_exactly = lambda *a, **k: _depset_file_subject_contains_exactly(self, *a, **k), contains_none_of = lambda *a, **k: _depset_file_subject_contains_none_of(self, *a, **k), contains_predicate = lambda *a, **k: _depset_file_subject_contains_predicate(self, *a, **k), + has_size = lambda *a, **k: _depset_file_subject_has_size(self, *a, **k), is_empty = lambda *a, **k: _depset_file_subject_is_empty(self, *a, **k), is_not_empty = lambda *a, **k: _depset_file_subject_is_not_empty(self, *a, **k), not_contains = lambda *a, **k: _depset_file_subject_not_contains(self, *a, **k), @@ -77,6 +78,22 @@ def _depset_file_subject_new(files, meta, container_name = "depset", element_plu ) return public +def _depset_file_subject_has_size(self, expected): + """Asserts that `expected` is the size of the depset of files. + + Method: DepsetFileSubject.has_size + + Args: + self: implicitly added. + expected: ([`int`]) the expected size of the depset of files. + """ + return CollectionSubject.new( + self.files, + meta = self.meta, + container_name = self.container_name, + element_plural_name = self.element_plural_name, + ).has_size(expected) + def _depset_file_subject_is_empty(self): """Asserts that the depset of files is empty.