http://qs321.pair.com?node_id=11129208


in reply to Re^5: Introspecting function signatures
in thread Introspecting function signatures

They could, but this way they are localized to the function, they go out of scope after the function is done and one test will not impact another test.

Replies are listed 'Best First'.
Re^7: Introspecting function signatures
by Corion (Patriarch) on Mar 06, 2021 at 21:02 UTC

    I would use local for that:

    { local $tempdir = '/tmp/foo'; test_someting(); }

    Most likely you need to wrap all these test_something(...) function calls anyway with your code, and that's a good place to set up the localized test fixtures as well.

    I'm wondering a bit how you plan to handle one such function calling another function. Should the fixtures be recreated or not?

    sub test_someting2( $tempdir, $aValue ) { if( $^O !~ /mswin/i ) { test_someting("$tempdir/$aValue"); } else { test_someting("$tempdir\\$aValue"); }; }
      You would not call test functions by yourself, the system would do. In this specific case you'd use File::Spec anyway.

      What is interesting in this case might be how to skip tests. I think the usual SKIP would work inside the test functions, but there might be some way to mark test functions to be skipped conditionally. Pytest uses "decorators" for this.

      @pytest.mark.skipif(sys.platform != 'darwin', reason="Mac tests") def test_func(): ...