Skip to content

Commit

Permalink
Remove stale "pants.pex for integration tests" mechanism (pantsbuild#…
Browse files Browse the repository at this point in the history
…10279)

### Problem

Since pantsbuild#8265, we have been running `PantsRunIntegrationTest`s from loose sources in the repository, which are included via `src/python/pants/testutil:int-test`'s dependency on `src/python/pants/bin:pants_local_binary`. That change thus removed the need for the `pants.pex` from our wrapper scripts.

### Solution

Remove the "`pants.pex` for integration tests" mechanism. Post pantsbuild#8625, pants is run from the PYTHONPATH of the test target, which will automatically include either loose sources or a `pants_requirement` target, depending on whether the test is run in or out of the pantsbuild/pants repo.

Additionally, remove one set of tests that was attempting to test that nested runs of pants do not deadlock. pantsbuild#7654 will eventually allow that issue to be resolved by allowing the concurrent run rather than via any sort of automatic disabling of `pantsd`, and that is much easier to test via concurrent runs _without_ nesting.

[ci skip-rust-tests]
  • Loading branch information
stuhood authored Jul 7, 2020
1 parent fbb8712 commit 9dd7328
Show file tree
Hide file tree
Showing 11 changed files with 0 additions and 121 deletions.
7 changes: 0 additions & 7 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,3 @@ files(
name = 'pyproject',
sources = ['pyproject.toml'],
)

# NB: This is used for integration tests. This is generated automatically via `./pants` and
# `build-support/bin/bootstrap_pants_pex.sh`.
files(
name = 'pants_pex',
sources = ['pants.pex'],
)
23 changes: 0 additions & 23 deletions pants
Original file line number Diff line number Diff line change
Expand Up @@ -106,27 +106,4 @@ else
export PANTS_DEV=1
fi

# Integration tests depend on an up-to-date `pants.pex`. Here, we check if we're running tests
# and ensure the `pants.pex` is generated if so. We do this here, rather than via `pants-plugins`,
# because we want the file to be generated _before_ any tests run, not during that Pants invocation,
# as the dependency is marked via BUILD files so should not be constructed at runtime.
#
# Note that we have no way to distinguish between integration tests vs unit tests here, so we
# unfortunately rebuild the pants.pex for unit tests too.
#
# We do not do this when in CI because CI downloads the PEX from AWS and we never want a worker
# shard to try bootstrapping the PEX itself.
test_goal_used=false
for arg in "$@"; do
if [[ "${arg}" == 'test' || "${arg}" == 'test.*' ]]; then
test_goal_used=true
fi
done

no_regen_pex="${NO_REGEN_PEX:-${TRAVIS}}"
if [[ "${test_goal_used}" == 'true' && "${no_regen_pex}" != 'true' ]]; then
"$HERE/build-support/bin/bootstrap_pants_pex.sh"
echo -e "Finished bootstrapping pants.pex for integration tests.\n" >&2
fi

exec_pants_bare "$@"
1 change: 0 additions & 1 deletion src/python/pants/testutil/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ python_library(
sources = ['pants_run_integration_test.py'],
dependencies = [
'//:build_root',
'//:pants_pex',
'3rdparty/python:ansicolors',
'3rdparty/python:dataclasses',
'src/python/pants/base:build_environment',
Expand Down
6 changes: 0 additions & 6 deletions testprojects/src/python/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ target(
':build_file_imports_module_directory',
':coordinated_runs_directory',
':interpreter_selection_directory',
':nested_runs_directory',
':no_build_file_directory',
':plugins_directory',
':print_env_directory',
Expand Down Expand Up @@ -44,11 +43,6 @@ files(
sources = ['interpreter_selection/**/*'],
)

files(
name = 'nested_runs_directory',
sources = ['nested_runs/**/*'],
)

files(
name = 'no_build_file_directory',
sources = ['no_build_file/**/*'],
Expand Down
6 changes: 0 additions & 6 deletions testprojects/src/python/nested_runs/BUILD

This file was deleted.

Empty file.
26 changes: 0 additions & 26 deletions testprojects/src/python/nested_runs/run_pants_with_pantsd.py

This file was deleted.

1 change: 0 additions & 1 deletion tests/python/pants_test/bin/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ python_tests(
'src/python/pants/option',
'src/python/pants/testutil:int-test',
'testprojects:pants_plugins_directory',
'testprojects/src/python:nested_runs_directory',
],
tags = ['integration'],
timeout = 120,
Expand Down
31 changes: 0 additions & 31 deletions tests/python/pants_test/bin/test_runner_integration.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Copyright 2019 Pants project contributors (see CONTRIBUTORS.md).
# Licensed under the Apache License, Version 2.0 (see LICENSE).

import os
from pathlib import Path

from pants.base.build_environment import get_buildroot
Expand Down Expand Up @@ -42,33 +41,3 @@ def test_warning_filter(self):
)
self.assert_success(non_warning_run)
self.assertNotIn("test warning", non_warning_run.stderr_data)

def test_parent_build_id_set_only_for_pants_runs_called_by_other_pants_runs(self):
with self.temporary_workdir() as workdir:
command = [
"run",
"testprojects/src/python/nested_runs",
"--",
workdir,
]
result = self.run_pants_with_workdir(command, workdir,)
self.assert_success(result)

run_tracker_dir = os.path.join(workdir, "run-tracker")
self.assertTrue(
os.path.isdir(run_tracker_dir), f"dir path {run_tracker_dir} does not exist!"
)
run_tracker_sub_dirs = (
os.path.join(run_tracker_dir, dir_name)
for dir_name in os.listdir(run_tracker_dir)
if dir_name != "latest"
)
for run_tracker_sub_dir in run_tracker_sub_dirs:
info_path = os.path.join(run_tracker_sub_dir, "info")
assert os.path.isfile(info_path) is True
with open(info_path, "r") as info_f:
lines = dict(line.split(": ", 1) for line in info_f.readlines())
if "goals" in lines["cmd_line"]:
self.assertIn("parent_build_id", lines)
else:
self.assertNotIn("parent_build_id", lines)
1 change: 0 additions & 1 deletion tests/python/pants_test/pantsd/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ python_tests(
'examples/src/python/example:hello_directory',
'testprojects/src/python:bad_requirements_directory',
'testprojects/src/python:coordinated_runs_directory',
'testprojects/src/python:nested_runs_directory',
'testprojects/src/python:print_env_directory',
],
tags = ['integration'],
Expand Down
19 changes: 0 additions & 19 deletions tests/python/pants_test/pantsd/test_pantsd_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -676,22 +676,3 @@ def test_unhandled_exceptions_only_log_exceptions_once(self):
"pants.bin.daemon_pants_runner._PantsRunFinishedWithFailureException: Terminated with 1",
result.stderr_data,
)

def test_inner_runs_dont_deadlock(self):
"""Create a pantsd run that calls testprojects/src/python/nested_runs with the appropriate
bootstrap options to avoid restarting pantsd.
Regression test for issue https://github.com/pantsbuild/pants/issues/7881
When a run under pantsd calls pants with pantsd inside it, the inner run will time out
waiting for the outer run to end.
NB: testprojects/src/python/nested_runs assumes that the pants.toml file is in ${workdir}/pants.toml
"""
config = {"GLOBAL": {"pantsd_timeout_when_multiple_invocations": 1}}
with self.pantsd_successful_run_context(extra_config=config) as ctx:
result = ctx.runner(
["run", "testprojects/src/python/nested_runs", "--", ctx.workdir], expected_runs=2
)
ctx.checker.assert_started()
self.assert_success(result)
self.assertNotIn("Another pants invocation is running", result.stderr_data)

0 comments on commit 9dd7328

Please sign in to comment.