Skip to content

Make sure Travis installs IO::Scalar before building Net::FTPServer

Marek Szuba requested to merge bugfix/test-ftp-server_deps into master

Created by: mkszuba


One of the dependencies of Test::FTP::Server requires IO::Scalar to be installed yet does not declare it as a dependency. It is not possible to either specify the order in which modules listed in the cpanfile are processed (these are passed to the module CPAN::Meta::Prereqs, which stores them in a hash - meaning their order is essentially random, if influenced by what data gets put in that hash or even on the Perl version used) or explicitly declare one cpanfile entry to be dependent on another (upstream have clearly expressed they have no intention to implement workarounds for other people's broken install scripts), therefore the only way to make sure installing Test::FTP::Server via the cpanfile succeeds is to install IO::Scalar before running cpanm --installdeps ..

Use case

Heisenbugs currently present in our Travis builds: installing Perl modules works under one Perl version yet fails under another, seemingly unrelated changes to the cpanfile such as adding another module there make the problem either disappear or suddently reappear, and so on.


Stops Travis builds from semi-randomly failing due to being unable to install Test::FTP::Server.

Possible Drawbacks

Only applies to Travis, i.e. installing dependencies from the cpanfile might still fail on other platforms. Addressing this systematically would require either fixing the dependency tree of the problematic module (Net::FTPServer) or phasing out Test::FTP::Server.


Have you added/modified unit tests to test the changes?


If so, do the tests pass/fail?


Have you run the entire test suite and no regression was detected?

Yes, no regression detected.

Merge request reports