import sys
import platform
import multiprocessing

import pytest

import keyring


def subprocess_get():
    keyring.get_password('test_app', 'test_user')


def test_multiprocess_get():
    proc1 = multiprocessing.Process(target=subprocess_get)
    proc1.start()
    proc1.join()
    assert proc1.exitcode == 0


@pytest.mark.skipif(
    sys.version_info < (3, 8) and platform.system() == 'Darwin',
    reason="#281: Prior to 3.8, multiprocess invocation fails",
)
def test_multiprocess_get_after_native_get():
    keyring.get_password('test_app', 'test_user')
    test_multiprocess_get()

import sys
import platform
import multiprocessing

import pytest

import keyring


def subprocess_get():
    keyring.get_password('test_app', 'test_user')


def test_multiprocess_get():
    proc1 = multiprocessing.Process(target=subprocess_get)
    proc1.start()
    proc1.join()
    assert proc1.exitcode == 0


@pytest.mark.skipif(
    # always skip as it crashes the interpreter
    sys.version_info < (3, 8) and platform.system() == 'Darwin',
    reason="#281: Prior to 3.8, multiprocess invocation fails",
)
@pytest.mark.xfail(
    sys.version_info > (3, 8) and platform.system() == 'Linux',
    reason="#410: After Python 3.6 or 3.7, tests fail",
)
def test_multiprocess_get_after_native_get():
    keyring.get_password('test_app', 'test_user')
    test_multiprocess_get()

Mark tests as xfail. Ref #410.