apex-enterprise-patterns/force-di

Problem using force-di as a submodule in managed package

Opened this issue · 3 comments

I am trying to deploy force-di as part of a managed package rather than package it as an external dependency. I have included force-di as a submodule and i am trying to deploy the code without modification into a scratch org with a namespace.

The deployment errors because the test suite metadata requires the names of the test classes to be prefixed by the namespace.

I would like the test suite to be modified or removed so that the repo can be deployed into an org with a namespace as is so that i don't have to fork the force-di repo or find some other means to make local changes.

I could copy the code and manually add the namespace prefix but this is a poor developer experience and means we are less likely to use the latest verison of the repo.

Without the namespace prefix i get the following error when deploying the repo into an org with a namespace:

Deploying v58.0 metadata to test-op4lffgkghvd@example.com using the v59.0 SOAP API.
Deploy ID: 0Af3G0000116L3qSAE
Status: Failed | ████████████████████████████████████████ | 1/1 Components (Errors:1) | 0/0 Tests (Errors:0)

Component Failures [2]

| Type Name Problem
| ───── ─────────────────── ─────────────────────────────────────────
| Error force_di_teststuite No classes found for di_BindingParamTest.
| Error force_di_teststuite No classes found for di_BindingParamTest.

You could add the test suite you don't want deployed to your forceignore file

Thanks. Obvious really.

Unfortunately using forceignore does not work. There is a forceignore in the force-di submodule. When using sf project deploy start it overrides the one from the parent to include the test suite metadata event though it was excluded at the parent level. I could fork the force-di repo but that creates a maintenance overhead and is what i was trying to avoid.