Closed Bug 1454514 Opened Last year Closed Last year

[mozversion] Convert tests to pytest format

Categories

(Testing :: Mozbase, defect)

Version 3
defect
Not set

Tracking

(firefox61 fixed)

RESOLVED FIXED
mozilla61
Tracking Status
firefox61 --- fixed

People

(Reporter: davehunt, Assigned: davehunt)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

See bug 1397417 for the tracking bug with motivations for this change.
Comment on attachment 8968355 [details]
Bug 1454514 - [mozversion] Convert tests to pytest format;

https://reviewboard.mozilla.org/r/237040/#review242998

Thanks, looks good!

::: testing/mozbase/mozversion/tests/test_binary.py:23
(Diff revision 1)
> -class BinaryTest(unittest.TestCase):
> -    """test getting application version information from a binary path"""
> +"""test getting application version information from a binary path"""
>  
> -    application_ini = """[App]
> +
> +@pytest.fixture(name='binary')
> +def fixure_binary(tmpdir):

nit: fixture (and two other places below)

Out of curiosity, any reason you like to use `name` here?

::: testing/mozbase/mozversion/tests/test_binary.py:56
(Diff revision 1)
> -SourceRepository = PlatformSourceRepo
> -"""
> +SourceRepository = PlatformSourceRepo""")
> +    return str(ini)
> +
>  
> -    def setUp(self):
> -        self.cwd = os.getcwd()
> +@pytest.mark.skipif(
> +    not os.environ.get('BROWSER_PATH'),

Please use this fixture to find a binary:
https://searchfox.org/mozilla-central/source/testing/mozbase/moztest/moztest/selftest/fixtures.py#97

Just importing `from moztest.selftest.fixtures import binary` should be good enough to use it (you'll need to flake8 ignore the import though).

This fixture will use a local build if one was found, then it'll look for `GECKO_INSTALLER_URL` and automatically bootstrap it, finally it'll look for `GECKO_BINARY_PATH` and use that (this last part just landed and searchfox hasn't updated yet). Finally if no binary was found it'll return None, so you'll need to add a:

    if not binary:
        pytest.skip()

If you like, you could create an autouse fixture that does: 
    
    os.environ.setdefault('GECKO_BINARY_PATH', os.environ.get('BROWSER_PATH'))
Attachment #8968355 - Flags: review?(ahalberstadt) → review+
Comment on attachment 8968355 [details]
Bug 1454514 - [mozversion] Convert tests to pytest format;

https://reviewboard.mozilla.org/r/237040/#review242998

> nit: fixture (and two other places below)
> 
> Out of curiosity, any reason you like to use `name` here?

If the fixture name is taken from the function name, then a test that references the fixture without defining it as an argument will find the fixture function instead of the value returned by the fixture. Naming it this way means I'd get an error that `binary` is not defined rather than getting a reference to the function.
Pushed by dhunt@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/2b620b4826e3
[mozversion] Convert tests to pytest format; r=ahal
https://hg.mozilla.org/mozilla-central/rev/2b620b4826e3
Status: ASSIGNED → RESOLVED
Closed: Last year
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
You need to log in before you can comment on or make changes to this bug.