Codeception icon indicating copy to clipboard operation
Codeception copied to clipboard

Multi app setup breaks if vendor dependency contains codeception.yml file

Open calvinalkan opened this issue 3 years ago • 4 comments

The following root config

include:
  - src/components/*

Will recursively traverse all directories inside src/components and look for codeception.yml files.

Now I faced the following situation:

A dependent of one component forgot to put codeception.yml into .gitattributes so that it ends up in the directory when installed with composer.

src/components/component-a/vendor/some-dependency/codeception.yml

When running tests for all included suites, codeception will also try to run tests for src/components/component-a/vendor/some-dependency.

This is due to the fact that the include config is passed here as is into Finder::in() from symfony/finder.

This method makes the finder traverse all child directories recursively which leads to src/components/component-a/vendor/some-dependency/codeception.yml getting picked up.

At least I find this behavior confusing. Given the above configuration I expect only direct child directories of src/components to be evaluated by codeception and not the entire tree under src/components.

Possible fixes:

Assuming this is a bug and not intended, there a two ways to fix this.

  1. Limit finder depth to 0, this will include only direct child directories.
  2. Exclude vendor directories from search

calvinalkan avatar Aug 03 '22 10:08 calvinalkan

How do you avoid version conflicts when components have different versions of the same libraries installed?

Naktibalda avatar Aug 04 '22 11:08 Naktibalda

@Naktibalda https://github.com/symplify/monorepo-builder

This hoists all vendor deps to the root codeception.yml

calvinalkan avatar Aug 04 '22 13:08 calvinalkan

@Naktibalda Why is that relevant tho?

Do you think that this is a bug, if yes Ill create a PR.

calvinalkan avatar Aug 05 '22 16:08 calvinalkan

On a somewhat related note, since it's on the same line (https://github.com/Codeception/Codeception/blob/cbaa347a683bd5d2f44aefeef57aec31989525ea/src/Codeception/Configuration.php#L750-L752), what about allowing .yaml as an extension? .yml seems so Windows-y, even DOS, the 3-letter file extension.

tacman avatar Sep 15 '22 12:09 tacman