forcedotcom / LightningTestingService

Apache License 2.0
122 stars 35 forks source link

Packaging with source:convert #49

Closed maniax89 closed 6 years ago

maniax89 commented 6 years ago

When attempting to setup the project structure like the following:

force-app
├── main
│   └── default
│       ├── aura
│       │   ├── Search
│       │   │   ├── Search.cmp
│       │   │   ├── Search.cmp-meta.xml
│       │   │   ├── Search.css
│       │   │   ├── Search.scss
│       │   │   └── SearchController.js
└── test
    └── default
        ├── aura
        │   └── searchTests
        │       ├── searchTests.app
        │       ├── searchTests.app-meta.xml
        │       └── searchTests.auradoc
        └── staticresources
            ├── Search.resource
            ├── Search.resource-meta.xml
            ├── testHelpers.resource
            └── testHelpers.resource-meta.xml

Everything works great for running tests and pushing source like sfdx force:source:push

However, when I do sfdx force:source:convert, it includes the test path and all its pieces as well.

My sfdx-project.json looks like this:

{
  "packageDirectories": [
    {
      "path": "force-app",
      "default": true
    }
  ],
  "namespace": "",
  "sfdcLoginUrl": "https://login.salesforce.com",
  "sourceApiVersion": "41.0"
}

is there any way to continue including the test package for the sfdx force:source:push command but exclude it when running sfdx force:source:convert?

maniax89 commented 6 years ago

on a separate note, it would be really nice if the .forceignore file was honored for AuraDefinitionBundles -> https://salesforce.stackexchange.com/questions/200173/sfdx-forcesourcepush-does-not-allow-forceignore-for-auradefinitionbundle

I am tying this in to this issue because we could potentially leverage a similar feature for this test directory on source:convert-ing - either allowing the commandline to take a set of globs to ignore or just utilize a .forceignore file

esalman-sfdc commented 6 years ago

@maniax89 could to try this. I had written this blob for a slightly different usecase but think it may help you as well.

Approach 1: LTS tests have a dependency on LTS package. In some scenarios, user may just wish to deploy the dev code without having to satisfy this additional package dependency. As LTS tests only need to be deployed when the user wants to run the tests, user should be be able to control this by putting the tests metadata in a different directory and controlling what needs to be deployed via sfdx-project.json

"packageDirectories": [ { "path": "force-app/main", "default": true }, { "path": "force-app/test" } ]

Easy way to do this is via following commands in “sfdx-oss-plugin” sfdx waw:project:pdir:delete -p force-app/test Skip the test directory when not needed sfdx waw:project:pdir:create -p force-app/test Add it back

Approach 2 : An alternate way is to create a .forceignore file and add the files/directories you would like to ignore during push.

I think your second comment is regarding Approach 2. I'll touch base with the sfdx cli team on what you described and get you a response.

ashpurik commented 6 years ago

Hi @maniax89, I tried this out for my project, and I am seeing that the .forceignore is respected during force:source:convert. I have my project structure similar to yours, and I added test to my .forceignore. After converting, I see that everything in my test directory is not included in the resulting directory. Will you please let me know if including test works for you? Otherwise I will create a bug.

maniax89 commented 6 years ago

@ashpurik yes you are correct - .forceignore is honored during the source:convert - however, it is also honored on source:push, so I would have to have a separate .forceignore created when pushing vs when converting. This is why I suggested having a commandline tool to augment the existing .forceignore

maniax89 commented 6 years ago

@esalman-sfdc yes - your solution works. thanks for the help

So in the future if I have more package directories that I would like to include with the source:convert, I have to utilize the sfdx waw:project:pdir:create -p force-app/my_package commands?

I can close this issue as resolved