Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

testscript: add kill command #243

Merged
merged 1 commit into from
Apr 15, 2024
Merged

testscript: add kill command #243

merged 1 commit into from
Apr 15, 2024

Conversation

kortschak
Copy link
Contributor

This allows sending a termination signal to backgrounded commands.

Please take a look.

Closes #242

if bg == nil {
ts.Fatalf("unknown background process %q", bgName)
}
signal := os.Interrupt

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be more generic to be able to choose the signal? (hup vs int vs kill...)

Copy link
Contributor Author

@kortschak kortschak Dec 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I was thinking that. I was wondering about the API for that. Would you be happy with kill [-SIG] [name]? (SIG would be numeric only in the first instance on second thought, named signal would be better). With that, the default would probably be SIGKILL.

@kortschak
Copy link
Contributor Author

ping

As noted in the slack conversation about this PR, if adding a kill command is too much, an alternative would be to expose TestScript.findBackground so that client code can build the command within its test code.

Copy link
Collaborator

@mvdan mvdan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know @rogpeppe isn't sure whether this is the perfect solution, but I'm perfectly comfortable to choose a solution that's good enough over no solution at all :)

testscript/doc.go Outdated Show resolved Hide resolved
! exec sleep 5 &

kill -KILL test_sleep
wait test_sleep
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you please add failure test cases? in particular:

  • trying to kill a running background process that was started with & rather than &word& (i.e. using a background process name that doesn't exist)
  • trying to kill a background process that already stopped or was already killed

Please also cover the kill and kill name forms, as otherwise we can't be sure they will keep working in the future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These negated tests are not currently possible since the kill command is not negatable. This is consistent with wait.

The positive tests for without name are possible.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding more tests!

I see your point about consistency with wait not being negatable. I personally think both should be, and both should fail if given an unknown/exited process, but we can always add that later - especially once we have ? to ignore the result of a command.

testscript/testdata/kill.txt Show resolved Hide resolved
@mvdan
Copy link
Collaborator

mvdan commented Apr 11, 2024

As noted in the slack conversation about this PR, if adding a kill command is too much, an alternative would be to expose TestScript.findBackground so that client code can build the command within its test code.

I would personally also be fine with this, but given that the majority of users would presumably use that to write their own kill commands, I'm fine with adding the command directly. We can always choose to expose the Go API later as well.

This allows sending a termination signal to backgrounded commands.
Copy link
Collaborator

@mvdan mvdan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! LGTM

@mvdan mvdan merged commit 2af95f2 into rogpeppe:master Apr 15, 2024
6 checks passed
dmathieu referenced this pull request in open-telemetry/opentelemetry-go-contrib Sep 24, 2024
…#6147)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/rogpeppe/go-internal](https://redirect.github.com/rogpeppe/go-internal)
| `v1.12.0` -> `v1.13.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2frogpeppe%2fgo-internal/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2frogpeppe%2fgo-internal/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2frogpeppe%2fgo-internal/v1.12.0/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2frogpeppe%2fgo-internal/v1.12.0/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>rogpeppe/go-internal
(github.com/rogpeppe/go-internal)</summary>

###
[`v1.13.1`](https://redirect.github.com/rogpeppe/go-internal/releases/tag/v1.13.1)

[Compare
Source](https://redirect.github.com/rogpeppe/go-internal/compare/v1.13.0...v1.13.1)

#### What's Changed

- testscript: fix ptyName() returning /dev/pts/4294967296 on s390x by
[@&#8203;anthonyfok](https://redirect.github.com/anthonyfok) in
[https://github.com/rogpeppe/go-internal/pull/246](https://redirect.github.com/rogpeppe/go-internal/pull/246)
- all: Move away from ioutil by
[@&#8203;abhinav](https://redirect.github.com/abhinav) in
[https://github.com/rogpeppe/go-internal/pull/248](https://redirect.github.com/rogpeppe/go-internal/pull/248)
- testscript/doc: add `go` to the list of testscript commands by
[@&#8203;rudifa](https://redirect.github.com/rudifa) in
[https://github.com/rogpeppe/go-internal/pull/249](https://redirect.github.com/rogpeppe/go-internal/pull/249)
- testscript: Add Chdir method to change directory by
[@&#8203;abhinav](https://redirect.github.com/abhinav) in
[https://github.com/rogpeppe/go-internal/pull/247](https://redirect.github.com/rogpeppe/go-internal/pull/247)
- testscript: add kill command by
[@&#8203;kortschak](https://redirect.github.com/kortschak) in
[https://github.com/rogpeppe/go-internal/pull/243](https://redirect.github.com/rogpeppe/go-internal/pull/243)
- testscript: clarify HOME and TMPDIR env var names by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/240](https://redirect.github.com/rogpeppe/go-internal/pull/240)
- all: Add Go 1.22, drop Go 1.20 by
[@&#8203;abhinav](https://redirect.github.com/abhinav) in
[https://github.com/rogpeppe/go-internal/pull/252](https://redirect.github.com/rogpeppe/go-internal/pull/252)
- update dependencies and rely on Go 1.21 APIs by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/256](https://redirect.github.com/rogpeppe/go-internal/pull/256)
- cmd/testscript: remove redundant use of Failed by
[@&#8203;rogpeppe](https://redirect.github.com/rogpeppe) in
[https://github.com/rogpeppe/go-internal/pull/257](https://redirect.github.com/rogpeppe/go-internal/pull/257)
- testscript: add Config.Files by
[@&#8203;rogpeppe](https://redirect.github.com/rogpeppe) in
[https://github.com/rogpeppe/go-internal/pull/258](https://redirect.github.com/rogpeppe/go-internal/pull/258)
- cmd/testscript: do not create an extra temporary directory by
[@&#8203;rogpeppe](https://redirect.github.com/rogpeppe) in
[https://github.com/rogpeppe/go-internal/pull/259](https://redirect.github.com/rogpeppe/go-internal/pull/259)
- Fix typos discovered by codespell by
[@&#8203;cclauss](https://redirect.github.com/cclauss) in
[https://github.com/rogpeppe/go-internal/pull/262](https://redirect.github.com/rogpeppe/go-internal/pull/262)
- testscript: ignore result when interrupting background processes by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/265](https://redirect.github.com/rogpeppe/go-internal/pull/265)
- add goproxytest testing API, forward dirhash by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/272](https://redirect.github.com/rogpeppe/go-internal/pull/272)
- update Go, update the README by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/273](https://redirect.github.com/rogpeppe/go-internal/pull/273)

#### New Contributors

- [@&#8203;anthonyfok](https://redirect.github.com/anthonyfok) made
their first contribution in
[https://github.com/rogpeppe/go-internal/pull/246](https://redirect.github.com/rogpeppe/go-internal/pull/246)
- [@&#8203;abhinav](https://redirect.github.com/abhinav) made their
first contribution in
[https://github.com/rogpeppe/go-internal/pull/248](https://redirect.github.com/rogpeppe/go-internal/pull/248)
- [@&#8203;rudifa](https://redirect.github.com/rudifa) made their first
contribution in
[https://github.com/rogpeppe/go-internal/pull/249](https://redirect.github.com/rogpeppe/go-internal/pull/249)
- [@&#8203;kortschak](https://redirect.github.com/kortschak) made their
first contribution in
[https://github.com/rogpeppe/go-internal/pull/243](https://redirect.github.com/rogpeppe/go-internal/pull/243)
- [@&#8203;cclauss](https://redirect.github.com/cclauss) made their
first contribution in
[https://github.com/rogpeppe/go-internal/pull/262](https://redirect.github.com/rogpeppe/go-internal/pull/262)

**Full Changelog**:
rogpeppe/go-internal@v1.12.0...v1.13.1

###
[`v1.13.0`](https://redirect.github.com/rogpeppe/go-internal/compare/v1.12.0...v1.13.0)

[Compare
Source](https://redirect.github.com/rogpeppe/go-internal/compare/v1.12.0...v1.13.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-go-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: dmathieu <42@dmathieu.com>
dmathieu referenced this pull request in open-telemetry/opentelemetry-go Sep 25, 2024
…#5835)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/rogpeppe/go-internal](https://redirect.github.com/rogpeppe/go-internal)
| `v1.12.0` -> `v1.13.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2frogpeppe%2fgo-internal/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2frogpeppe%2fgo-internal/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2frogpeppe%2fgo-internal/v1.12.0/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2frogpeppe%2fgo-internal/v1.12.0/v1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>rogpeppe/go-internal
(github.com/rogpeppe/go-internal)</summary>

###
[`v1.13.1`](https://redirect.github.com/rogpeppe/go-internal/releases/tag/v1.13.1)

[Compare
Source](https://redirect.github.com/rogpeppe/go-internal/compare/v1.13.0...v1.13.1)

#### What's Changed

- testscript: fix ptyName() returning /dev/pts/4294967296 on s390x by
[@&#8203;anthonyfok](https://redirect.github.com/anthonyfok) in
[https://github.com/rogpeppe/go-internal/pull/246](https://redirect.github.com/rogpeppe/go-internal/pull/246)
- all: Move away from ioutil by
[@&#8203;abhinav](https://redirect.github.com/abhinav) in
[https://github.com/rogpeppe/go-internal/pull/248](https://redirect.github.com/rogpeppe/go-internal/pull/248)
- testscript/doc: add `go` to the list of testscript commands by
[@&#8203;rudifa](https://redirect.github.com/rudifa) in
[https://github.com/rogpeppe/go-internal/pull/249](https://redirect.github.com/rogpeppe/go-internal/pull/249)
- testscript: Add Chdir method to change directory by
[@&#8203;abhinav](https://redirect.github.com/abhinav) in
[https://github.com/rogpeppe/go-internal/pull/247](https://redirect.github.com/rogpeppe/go-internal/pull/247)
- testscript: add kill command by
[@&#8203;kortschak](https://redirect.github.com/kortschak) in
[https://github.com/rogpeppe/go-internal/pull/243](https://redirect.github.com/rogpeppe/go-internal/pull/243)
- testscript: clarify HOME and TMPDIR env var names by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/240](https://redirect.github.com/rogpeppe/go-internal/pull/240)
- all: Add Go 1.22, drop Go 1.20 by
[@&#8203;abhinav](https://redirect.github.com/abhinav) in
[https://github.com/rogpeppe/go-internal/pull/252](https://redirect.github.com/rogpeppe/go-internal/pull/252)
- update dependencies and rely on Go 1.21 APIs by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/256](https://redirect.github.com/rogpeppe/go-internal/pull/256)
- cmd/testscript: remove redundant use of Failed by
[@&#8203;rogpeppe](https://redirect.github.com/rogpeppe) in
[https://github.com/rogpeppe/go-internal/pull/257](https://redirect.github.com/rogpeppe/go-internal/pull/257)
- testscript: add Config.Files by
[@&#8203;rogpeppe](https://redirect.github.com/rogpeppe) in
[https://github.com/rogpeppe/go-internal/pull/258](https://redirect.github.com/rogpeppe/go-internal/pull/258)
- cmd/testscript: do not create an extra temporary directory by
[@&#8203;rogpeppe](https://redirect.github.com/rogpeppe) in
[https://github.com/rogpeppe/go-internal/pull/259](https://redirect.github.com/rogpeppe/go-internal/pull/259)
- Fix typos discovered by codespell by
[@&#8203;cclauss](https://redirect.github.com/cclauss) in
[https://github.com/rogpeppe/go-internal/pull/262](https://redirect.github.com/rogpeppe/go-internal/pull/262)
- testscript: ignore result when interrupting background processes by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/265](https://redirect.github.com/rogpeppe/go-internal/pull/265)
- add goproxytest testing API, forward dirhash by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/272](https://redirect.github.com/rogpeppe/go-internal/pull/272)
- update Go, update the README by
[@&#8203;mvdan](https://redirect.github.com/mvdan) in
[https://github.com/rogpeppe/go-internal/pull/273](https://redirect.github.com/rogpeppe/go-internal/pull/273)

#### New Contributors

- [@&#8203;anthonyfok](https://redirect.github.com/anthonyfok) made
their first contribution in
[https://github.com/rogpeppe/go-internal/pull/246](https://redirect.github.com/rogpeppe/go-internal/pull/246)
- [@&#8203;abhinav](https://redirect.github.com/abhinav) made their
first contribution in
[https://github.com/rogpeppe/go-internal/pull/248](https://redirect.github.com/rogpeppe/go-internal/pull/248)
- [@&#8203;rudifa](https://redirect.github.com/rudifa) made their first
contribution in
[https://github.com/rogpeppe/go-internal/pull/249](https://redirect.github.com/rogpeppe/go-internal/pull/249)
- [@&#8203;kortschak](https://redirect.github.com/kortschak) made their
first contribution in
[https://github.com/rogpeppe/go-internal/pull/243](https://redirect.github.com/rogpeppe/go-internal/pull/243)
- [@&#8203;cclauss](https://redirect.github.com/cclauss) made their
first contribution in
[https://github.com/rogpeppe/go-internal/pull/262](https://redirect.github.com/rogpeppe/go-internal/pull/262)

**Full Changelog**:
rogpeppe/go-internal@v1.12.0...v1.13.1

###
[`v1.13.0`](https://redirect.github.com/rogpeppe/go-internal/compare/v1.12.0...v1.13.0)

[Compare
Source](https://redirect.github.com/rogpeppe/go-internal/compare/v1.12.0...v1.13.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-go).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: dmathieu <damien.mathieu@elastic.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add "kill" command to terminate background exec
3 participants