A few days after first seeing this, I realized that there may be another option: simply skip the test if running in the repository working tree. As an untested example using Test::More and if:
use if (-d '.git'), Test::More => skip_all => 'in dev tree; distributi
+on metadata not present';
use Test::More tests => #... # Your original "use Test::More" line g
+oes here...
This assumes that you are using Git and that the tests are run with the repository root as the current directory. The test for the .git directory will be true if the current directory is the repository root, but false when building from a release file set. With this approach, make disttest should still run the test, since it checks the actual release file set instead of the development tree.
Edit 2021-02-22 by jcb: Quote bareword, oops. Thanks to choroba for noticing the error. I said it was untested! :-D