facebookresearch / WavAugment

A library for speech data augmentation in time-domain
MIT License
640 stars 57 forks source link

Failing tests? #15

Closed vincentqb closed 3 years ago

vincentqb commented 3 years ago

I'm running the tests, and I'm getting several errors. Am I missing something?

base ❯ conda create -n audio-old -c pytorch torchaudio==0.6
base ❯ conda activate audio-conda                          
audio-old ❯ conda install -c conda-forge sox                    
audio-old ❯ python setup.py develop
audio-old ❯ python -m pytest -v --doctest-modules

=============================================================================================================== test session starts ================================================================================================================
platform darwin -- Python 3.8.5, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /Users/vincentqb/opt/anaconda3/envs/audio-old/bin/python
cachedir: .pytest_cache
rootdir: /Users/vincentqb/WavAugment
collected 14 items                                                                                                                                                                                                                                 

augment/effects.py::augment.effects.EffectChain PASSED                                                                                                                                                                                       [  7%]
augment/effects.py::augment.effects.EffectChain.additive_noise PASSED                                                                                                                                                                        [ 14%]
augment/effects.py::augment.effects.EffectChain.clip PASSED                                                                                                                                                                                  [ 21%]
augment/effects.py::augment.effects.EffectChain.time_dropout PASSED                                                                                                                                                                          [ 28%]
augment/effects.py::augment.effects.SoxEffect.instantiate PASSED                                                                                                                                                                             [ 35%]
tests/augment_test.py::test_empty_chain PASSED                                                                                                                                                                                               [ 42%]
tests/augment_test.py::test_non_empty_chain FAILED                                                                                                                                                                                           [ 50%]
tests/augment_test.py::test_agains_cl FAILED                                                                                                                                                                                                 [ 57%]
tests/augment_test.py::test_stochastic_pitch FAILED                                                                                                                                                                                          [ 64%]
tests/augment_test.py::test_additive_noise PASSED                                                                                                                                                                                            [ 71%]
tests/augment_test.py::test_number_effects FAILED                                                                                                                                                                                            [ 78%]
tests/compare_to_sox_test.py::test_pitch FAILED                                                                                                                                                                                              [ 85%]
tests/compare_to_sox_test.py::test_reverb FAILED                                                                                                                                                                                             [ 92%]
tests/compare_to_sox_test.py::test_bandreject FAILED                                                                                                                                                                                         [100%]

===================================================================================================================== FAILURES =====================================================================================================================
_______________________________________________________________________________________________________________ test_non_empty_chain _______________________________________________________________________________________________________________

    def test_non_empty_chain():
        x, sr = torchaudio.load(test_wav)

        src_info = {'channels': 1,
                    'length': x.size(1),
                    'precision': 32,
                    'rate': 16000.0,
                    'bits_per_sample': 32}

        target_info = {'channels': 1,
                       'length': 0,
                       'precision': 32,
                       'rate': 16000.0,
                       'bits_per_sample': 32}

        effects = augment.EffectChain().bandreject(1, 20000)

>       y = effects.apply(x, src_info=src_info,
                              target_info=target_info)

tests/augment_test.py:58: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
augment/effects.py:172: in apply
    x, _ = EffectChain._apply_sox_effects(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

chain = [<augment.effects.SoxEffect object at 0x7fc1e00e39d0>], input_tensor = tensor([[-3604480., -2293760., -1966080.,  ...,   -65536.,   -65536.,
           -65536.]])
src_info = {'bits_per_sample': 32, 'channels': 1, 'length': 227360, 'precision': 32, ...}, target_info = {'bits_per_sample': 32, 'channels': 1, 'length': 0, 'precision': 32, ...}

    @staticmethod
    def _apply_sox_effects(chain: List[SoxEffect],
                           input_tensor: torch.Tensor,
                           src_info: Dict,
                           target_info: Dict) -> Tuple[torch.Tensor, int]:
        instantiated_chain = [x.instantiate() for x in chain]
        sox_chain = _augment.PyEffectChain()
        for effect_name, effect_args in instantiated_chain:
            sox_chain.add_effect(effect_name, effect_args)

        input_tensor.mul_(EffectChain._NORMALIZER)

        out = input_tensor
>       sr = sox_chain.apply_flow_effects(input_tensor,
                                          out,
                                          src_info,
                                          target_info)
E       RuntimeError: Error opening output output memstream

augment/effects.py:92: RuntimeError
--------------------------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------------------------
formats: can't open output file `': No such file or directory
__________________________________________________________________________________________________________________ test_agains_cl __________________________________________________________________________________________________________________

    def test_agains_cl():
        y1, _ = convert_pitch_cl(test_wav)
>       y2, _ = convert_pitch_augment(test_wav)

tests/augment_test.py:98: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/augment_test.py:92: in convert_pitch_augment
    y = augment.EffectChain().pitch(100).rate(16000).apply(
augment/effects.py:172: in apply
    x, _ = EffectChain._apply_sox_effects(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

chain = [<augment.effects.SoxEffect object at 0x7fc1e00ce400>, <augment.effects.SoxEffect object at 0x7fc200187af0>], input_tensor = tensor([[-3604480., -2293760., -1966080.,  ...,   -65536.,   -65536.,
           -65536.]])
src_info = {'bits_per_sample': 32, 'channels': 1, 'length': 227360, 'precision': 32, ...}, target_info = {'bits_per_sample': 32, 'channels': 1, 'length': 0, 'precision': 32, ...}

    @staticmethod
    def _apply_sox_effects(chain: List[SoxEffect],
                           input_tensor: torch.Tensor,
                           src_info: Dict,
                           target_info: Dict) -> Tuple[torch.Tensor, int]:
        instantiated_chain = [x.instantiate() for x in chain]
        sox_chain = _augment.PyEffectChain()
        for effect_name, effect_args in instantiated_chain:
            sox_chain.add_effect(effect_name, effect_args)

        input_tensor.mul_(EffectChain._NORMALIZER)

        out = input_tensor
>       sr = sox_chain.apply_flow_effects(input_tensor,
                                          out,
                                          src_info,
                                          target_info)
E       RuntimeError: Error opening output output memstream

augment/effects.py:92: RuntimeError
--------------------------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------------------------
formats: can't open output file `': No such file or directory
______________________________________________________________________________________________________________ test_stochastic_pitch _______________________________________________________________________________________________________________

    def test_stochastic_pitch():
        x, sr = torchaudio.load(test_wav)

        assert sr == 16000

        src_info = {'channels': x.size(0),
                    'length': x.size(1),
                    'precision': 32,
                    'rate': 16000.0,
                    'bits_per_sample': 32}

        target_info = {'channels': 1,
                       'length': 0,
                       'precision': 32,
                       'rate': 16000.0,
                       'bits_per_sample': 32}

        def random_pitch(): return np.random.randint(100, 500)
>       y = augment.EffectChain().pitch(random_pitch).rate(16000).apply(
            x, src_info=src_info, target_info=target_info)

tests/augment_test.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
augment/effects.py:172: in apply
    x, _ = EffectChain._apply_sox_effects(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

chain = [<augment.effects.SoxEffect object at 0x7fc1e01275b0>, <augment.effects.SoxEffect object at 0x7fc1e01275e0>], input_tensor = tensor([[-3604480., -2293760., -1966080.,  ...,   -65536.,   -65536.,
           -65536.]])
src_info = {'bits_per_sample': 32, 'channels': 1, 'length': 227360, 'precision': 32, ...}, target_info = {'bits_per_sample': 32, 'channels': 1, 'length': 0, 'precision': 32, ...}

    @staticmethod
    def _apply_sox_effects(chain: List[SoxEffect],
                           input_tensor: torch.Tensor,
                           src_info: Dict,
                           target_info: Dict) -> Tuple[torch.Tensor, int]:
        instantiated_chain = [x.instantiate() for x in chain]
        sox_chain = _augment.PyEffectChain()
        for effect_name, effect_args in instantiated_chain:
            sox_chain.add_effect(effect_name, effect_args)

        input_tensor.mul_(EffectChain._NORMALIZER)

        out = input_tensor
>       sr = sox_chain.apply_flow_effects(input_tensor,
                                          out,
                                          src_info,
                                          target_info)
E       RuntimeError: Error opening output output memstream

augment/effects.py:92: RuntimeError
--------------------------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------------------------
formats: can't open output file `': No such file or directory
_______________________________________________________________________________________________________________ test_number_effects ________________________________________________________________________________________________________________

    def test_number_effects():
>       assert len(augment.EffectChain.KNOWN_EFFECTS) == 64
E       assert 63 == 64
E         +63
E         -64

tests/augment_test.py:156: AssertionError
____________________________________________________________________________________________________________________ test_pitch ____________________________________________________________________________________________________________________

    def test_pitch():
        y1, _ = run_sox_command(test_wav, ["pitch", "-100"])

        chain = augment.EffectChain().pitch(-100).rate(16000)
>       y2 = apply_chain(test_wav, chain)

tests/compare_to_sox_test.py:58: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/compare_to_sox_test.py:50: in apply_chain
    y = chain.apply(
augment/effects.py:172: in apply
    x, _ = EffectChain._apply_sox_effects(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

chain = [<augment.effects.SoxEffect object at 0x7fc1e00cebe0>, <augment.effects.SoxEffect object at 0x7fc1e00ce760>], input_tensor = tensor([[-3604480., -2293760., -1966080.,  ...,   -65536.,   -65536.,
           -65536.]])
src_info = {'bits_per_sample': 32, 'channels': 1, 'length': 227360, 'precision': 32, ...}, target_info = {'bits_per_sample': 32, 'channels': 1, 'length': 0, 'precision': 32, ...}

    @staticmethod
    def _apply_sox_effects(chain: List[SoxEffect],
                           input_tensor: torch.Tensor,
                           src_info: Dict,
                           target_info: Dict) -> Tuple[torch.Tensor, int]:
        instantiated_chain = [x.instantiate() for x in chain]
        sox_chain = _augment.PyEffectChain()
        for effect_name, effect_args in instantiated_chain:
            sox_chain.add_effect(effect_name, effect_args)

        input_tensor.mul_(EffectChain._NORMALIZER)

        out = input_tensor
>       sr = sox_chain.apply_flow_effects(input_tensor,
                                          out,
                                          src_info,
                                          target_info)
E       RuntimeError: Error opening output output memstream

augment/effects.py:92: RuntimeError
--------------------------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------------------------
formats: can't open output file `': No such file or directory
___________________________________________________________________________________________________________________ test_reverb ____________________________________________________________________________________________________________________

    def test_reverb():
        y1, _ = run_sox_command(test_wav, ["reverb", "50", "50", "100"])

        chain = augment.EffectChain().reverb(50, 50, 100).channels()
>       y2 = apply_chain(test_wav, chain)

tests/compare_to_sox_test.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/compare_to_sox_test.py:50: in apply_chain
    y = chain.apply(
augment/effects.py:172: in apply
    x, _ = EffectChain._apply_sox_effects(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

chain = [<augment.effects.SoxEffect object at 0x7fc1f0783430>, <augment.effects.SoxEffect object at 0x7fc1f0783dc0>], input_tensor = tensor([[-3604480., -2293760., -1966080.,  ...,   -65536.,   -65536.,
           -65536.]])
src_info = {'bits_per_sample': 32, 'channels': 1, 'length': 227360, 'precision': 32, ...}, target_info = {'bits_per_sample': 32, 'channels': 1, 'length': 0, 'precision': 32, ...}

    @staticmethod
    def _apply_sox_effects(chain: List[SoxEffect],
                           input_tensor: torch.Tensor,
                           src_info: Dict,
                           target_info: Dict) -> Tuple[torch.Tensor, int]:
        instantiated_chain = [x.instantiate() for x in chain]
        sox_chain = _augment.PyEffectChain()
        for effect_name, effect_args in instantiated_chain:
            sox_chain.add_effect(effect_name, effect_args)

        input_tensor.mul_(EffectChain._NORMALIZER)

        out = input_tensor
>       sr = sox_chain.apply_flow_effects(input_tensor,
                                          out,
                                          src_info,
                                          target_info)
E       RuntimeError: Error opening output output memstream

augment/effects.py:92: RuntimeError
--------------------------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------------------------
formats: can't open output file `': No such file or directory
_________________________________________________________________________________________________________________ test_bandreject __________________________________________________________________________________________________________________

    def test_bandreject():
        y1, _ = run_sox_command(test_wav, ["sinc", "-a", "120", "2000-1000"])

        chain = augment.EffectChain().sinc("-a", "120", "2000-1000")
>       y2 = apply_chain(test_wav, chain)

tests/compare_to_sox_test.py:82: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/compare_to_sox_test.py:50: in apply_chain
    y = chain.apply(
augment/effects.py:172: in apply
    x, _ = EffectChain._apply_sox_effects(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

chain = [<augment.effects.SoxEffect object at 0x7fc1e0104310>], input_tensor = tensor([[-3604480., -2293760., -1966080.,  ...,   -65536.,   -65536.,
           -65536.]])
src_info = {'bits_per_sample': 32, 'channels': 1, 'length': 227360, 'precision': 32, ...}, target_info = {'bits_per_sample': 32, 'channels': 1, 'length': 0, 'precision': 32, ...}

    @staticmethod
    def _apply_sox_effects(chain: List[SoxEffect],
                           input_tensor: torch.Tensor,
                           src_info: Dict,
                           target_info: Dict) -> Tuple[torch.Tensor, int]:
        instantiated_chain = [x.instantiate() for x in chain]
        sox_chain = _augment.PyEffectChain()
        for effect_name, effect_args in instantiated_chain:
            sox_chain.add_effect(effect_name, effect_args)

        input_tensor.mul_(EffectChain._NORMALIZER)

        out = input_tensor
>       sr = sox_chain.apply_flow_effects(input_tensor,
                                          out,
                                          src_info,
                                          target_info)
E       RuntimeError: Error opening output output memstream

augment/effects.py:92: RuntimeError
--------------------------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------------------------
formats: can't open output file `': No such file or directory
============================================================================================================= short test summary info ==============================================================================================================
FAILED tests/augment_test.py::test_non_empty_chain - RuntimeError: Error opening output output memstream
FAILED tests/augment_test.py::test_agains_cl - RuntimeError: Error opening output output memstream
FAILED tests/augment_test.py::test_stochastic_pitch - RuntimeError: Error opening output output memstream
FAILED tests/augment_test.py::test_number_effects - assert 63 == 64
FAILED tests/compare_to_sox_test.py::test_pitch - RuntimeError: Error opening output output memstream
FAILED tests/compare_to_sox_test.py::test_reverb - RuntimeError: Error opening output output memstream
FAILED tests/compare_to_sox_test.py::test_bandreject - RuntimeError: Error opening output output memstream
=========================================================================================================== 7 failed, 7 passed in 5.74s ============================================================================================================

I also tried with torchaudio==0.7 with the same result.

vincentqb commented 3 years ago

I just saw the notice about macos not being supported. This works in linux :)

python -m pytest -v --doctest-modules
========================================================== test session starts ==========================================================
platform linux -- Python 3.8.6, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /private/home/vincentqb/anaconda3/envs/wavaugment/bin/python
cachedir: .pytest_cache
rootdir: /private/home/vincentqb/WavAugment
collected 14 items                                                                                                                      

augment/effects.py::augment.effects.EffectChain PASSED                                                                            [  7%]
augment/effects.py::augment.effects.EffectChain.additive_noise PASSED                                                             [ 14%]
augment/effects.py::augment.effects.EffectChain.clip PASSED                                                                       [ 21%]
augment/effects.py::augment.effects.EffectChain.time_dropout PASSED                                                               [ 28%]
augment/effects.py::augment.effects.SoxEffect.instantiate PASSED                                                                  [ 35%]
tests/augment_test.py::test_empty_chain PASSED                                                                                    [ 42%]
tests/augment_test.py::test_non_empty_chain PASSED                                                                                [ 50%]
tests/augment_test.py::test_agains_cl PASSED                                                                                      [ 57%]
tests/augment_test.py::test_stochastic_pitch PASSED                                                                               [ 64%]
tests/augment_test.py::test_additive_noise PASSED                                                                                 [ 71%]
tests/augment_test.py::test_number_effects PASSED                                                                                 [ 78%]
tests/compare_to_sox_test.py::test_pitch PASSED                                                                                   [ 85%]
tests/compare_to_sox_test.py::test_reverb PASSED                                                                                  [ 92%]
tests/compare_to_sox_test.py::test_bandreject PASSED                                                                              [100%]

=========================================================== warnings summary ============================================================
../anaconda3/envs/wavaugment/lib/python3.8/site-packages/torchaudio/backend/utils.py:53
  /private/home/vincentqb/anaconda3/envs/wavaugment/lib/python3.8/site-packages/torchaudio/backend/utils.py:53: UserWarning: "sox" backend is being deprecated. The default backend will be changed to "sox_io" backend in 0.8.0 and "sox" backend will be removed in 0.9.0. Please migrate to "sox_io" backend. Please refer to https://github.com/pytorch/audio/issues/903 for the detail.
    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/warnings.html
===================================================== 14 passed, 1 warning in 1.54s =====================================================