Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions dev/archery/archery/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -712,28 +712,28 @@ def _set_default(opt, default):
'in integration tests'))
@click.option('--random-seed', type=int, default=12345,
help="Seed for PRNG when generating test data")
@click.option('--with-cpp', type=bool, default=False,
@click.option('--with-cpp', type=bool, default=None,
help='Include C++ in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_CPP")
@click.option('--with-dotnet', type=bool, default=False,
@click.option('--with-dotnet', type=bool, default=None,
help='Include .NET in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_DOTNET")
@click.option('--with-java', type=bool, default=False,
@click.option('--with-java', type=bool, default=None,
help='Include Java in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_JAVA")
@click.option('--with-js', type=bool, default=False,
@click.option('--with-js', type=bool, default=None,
help='Include JavaScript in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_JS")
@click.option('--with-go', type=bool, default=False,
@click.option('--with-go', type=bool, default=None,
help='Include Go in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_GO")
@click.option('--with-nanoarrow', type=bool, default=False,
@click.option('--with-nanoarrow', type=bool, default=None,
help='Include nanoarrow in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_NANOARROW")
@click.option('--with-ruby', type=bool, default=False,
@click.option('--with-ruby', type=bool, default=None,
help='Include Ruby in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_RUBY")
@click.option('--with-rust', type=bool, default=False,
@click.option('--with-rust', type=bool, default=None,
help='Include Rust in integration tests',
envvar="ARCHERY_INTEGRATION_WITH_RUST")
@click.option('--target-implementations', default='',
Expand Down Expand Up @@ -842,6 +842,12 @@ def integration(with_all=False, random_seed=12345, write_generated_json="",
param = f'run_{fmt}'
enabled_formats += args[param]

# --with-all only supplies the default for the individual --with-<lang>
# options, which is why those default to None: it keeps "not given" apart
# from an explicit "--with-java=0", so the explicit value still wins.
for name in [key for key in args if key.startswith('with_')]:
args[name] = _set_default(args[name], with_all)

testers, other_testers = select_testers(**args)

if write_generated_json:
Expand Down
42 changes: 42 additions & 0 deletions dev/archery/archery/tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,45 @@ def test_linking_check_dependencies(fn):
fn.assert_called_once_with(
Path('somelib.so'), allowed={'libarrow'}, disallowed={'libcurl'}
)


@patch("archery.integration.runner.run_all_tests")
@patch("archery.integration.runner.select_testers")
def test_integration_with_all_enables_every_implementation(select_testers,
run_all_tests):
select_testers.return_value = (["tester"], [])
result = CliRunner().invoke(
archery, ["integration", "--with-all", "--run-ipc"])
assert result.exit_code == 0
enabled = {name: value
for name, value in select_testers.call_args.kwargs.items()
if name.startswith("with_")}
assert enabled
assert all(enabled.values()), enabled


@patch("archery.integration.runner.run_all_tests")
@patch("archery.integration.runner.select_testers")
def test_integration_with_all_yields_to_an_explicit_option(select_testers,
run_all_tests):
select_testers.return_value = (["tester"], [])
result = CliRunner().invoke(
archery, ["integration", "--with-all", "--with-java=0", "--run-ipc"])
assert result.exit_code == 0
kwargs = select_testers.call_args.kwargs
assert kwargs["with_java"] is False
assert kwargs["with_cpp"] is True


@patch("archery.integration.runner.run_all_tests")
@patch("archery.integration.runner.select_testers")
def test_integration_without_with_all_enables_nothing(select_testers,
run_all_tests):
select_testers.return_value = (["tester"], [])
result = CliRunner().invoke(archery, ["integration", "--run-ipc"])
assert result.exit_code == 0
enabled = {name: value
for name, value in select_testers.call_args.kwargs.items()
if name.startswith("with_")}
assert enabled
assert not any(enabled.values()), enabled
Loading