Fix undefined error in Gitlab::Git::Diff
What does this MR do?
It adds tests to highlight the problem when we initialize Gitlab::Git::Diff
with Gitaly::CommitDelta
instance.
Gitaly::CommitDelta
does not have a patch
attribute. That leads to the problem with methods #too_large?
, #collapsed?
, #has_binary_notice?
and #to_hash
. Any calls to these methods raise an exception.
Here is an example of the error:
Failure/Error: @too_large = @diff.bytesize >= self.class.patch_hard_limit_bytes
NoMethodError:
undefined method `bytesize' for nil:NilClass
Solution
I was considering the option of providing safe-handing (&.
for instance) for methods that rely on @diff
being a String
object. However, it doesn't solve the root problem that @diff
has a nil
value. As a result, I explicitly set @diff
to have an empty string value if the #patch
attribute is not defined.
Screenshots
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry - [-] Documentation (if required)
-
Code review guidelines -
Merge request performance guidelines -
Style guides - [-] Database guides
- [-] Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. - [-] Tested in all supported browsers
- [-] Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
- [-] Label as security and @ mention
@gitlab-com/gl-security/appsec
- [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
- [-] Security reports checked/validated by a reviewer from the AppSec team