radicle-cli/tests: Add `rad_jj_patch`

This commit is contained in:
Lorenz Leutgeb 2025-05-28 19:26:30 +02:00 committed by Fintan Halpenny
parent 731688d3f2
commit abc963f2f2
4 changed files with 131 additions and 0 deletions

View File

@ -0,0 +1,19 @@
Let's make sure that the config is exactly what we expect.
```
$ jj config list
ui.editor = "true"
user.name = "Test User"
user.email = "test.user@example.com"
debug.commit-timestamp = "2001-02-03T04:05:06+07:00"
debug.randomness-seed = 0
debug.operation-timestamp = "2001-02-03T04:05:06+07:00"
operation.hostname = "host.example.com"
operation.username = "test-username"
```
We enable writing Change ID headers to our commits.
```
$ jj config set --user git.write-change-id-header true
```

View File

@ -0,0 +1,10 @@
We initialize Jujutusu for our repository by colocating with Git.
```(stderr)
$ jj git init --colocate
Done importing changes from the underlying Git repo.
Hint: The following remote bookmarks aren't associated with the existing local bookmarks:
master@rad
Hint: Run `jj bookmark track master@rad` to keep local bookmarks updated on future pulls.
Initialized repo in "."
```

View File

@ -0,0 +1,91 @@
The scenario in this file is a variation of the one in `rad-patch.md`,
but uses Jujutsu.
```
$ touch REQUIREMENTS
$ jj describe --message "Define power requirements"
$ jj status
Working copy changes:
A REQUIREMENTS
Working copy (@) : lvxkkpmk a6ea7b72 Define power requirements
Parent commit (@-): xpnzuzwn f2de534b master master@rad | Second commit
```
```
$ jj new
```
Just making sure that Git sees the Change ID…
```
$ git cat-file commit a6ea7b72
tree [..]
parent f2de534b[..]
author Test User <test.user@example.com> 981147906 +0700
committer Test User <test.user@example.com> 981147906 +0700
change-id lvxkkpmk[..]
Define power requirements
```
As of 2025-05 we can't use `jj` to do push with options directly, see:
- <https://github.com/jj-vcs/jj/issues/4075>
- <https://github.com/jj-vcs/jj/pull/2098>
However, since we initialized Jujutusu to colocate with Git, we can just use
Git to push.
``` (stderr)
$ git push rad -o patch.message="Define power requirements" -o patch.message="See details." HEAD:refs/patches
✓ Patch 1e31055ed3c41a48f2a71ba5317feb863b089700 opened
To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
* [new reference] HEAD -> refs/patches
```
It will now be listed as one of the open patches.
```
$ rad patch
╭─────────────────────────────────────────────────────────────────────────────────────────╮
│ ● ID Title Author Reviews Head + - Updated │
├─────────────────────────────────────────────────────────────────────────────────────────┤
│ ● 1e31055 Define power requirements alice (you) - a6ea7b7 +0 -0 now │
╰─────────────────────────────────────────────────────────────────────────────────────────╯
```
Let's also create a bookmark for it.
```
$ jj bookmark create flux-capacitor-power
```
```
$ rad patch show 1e31055 -p
╭───────────────────────────────────────────────────╮
│ Title Define power requirements │
│ Patch 1e31055[.. ] │
│ Author alice (you) │
│ Head a6ea7b7[.. ] │
│ Base f2de534[.. ] │
│ Commits ahead 1, behind 0 │
│ Status open │
│ │
│ See details. │
├───────────────────────────────────────────────────┤
│ a6ea7b7 Define power requirements │
├───────────────────────────────────────────────────┤
│ ● Revision 1e31055 @ a6ea7b7 by alice (you) now │
╰───────────────────────────────────────────────────╯
commit a6ea7b7[..]
Author: Test User <test.user@example.com>
Date: Sat Feb 3 04:05:06 2001 +0700
Define power requirements
diff --git a/REQUIREMENTS b/REQUIREMENTS
new file mode 100644
index 0000000..e69de29
```

View File

@ -858,6 +858,17 @@ fn rad_patch() {
Environment::alice(["rad-init", "rad-patch"]);
}
#[test]
fn rad_jj_colocated_patch() {
// We test whether `jj` is installed, and have this test succeed if it is not.
// Programmatic skipping of tests is not supported as of 2024-08.
if !program_reports_version("jj") {
return;
}
Environment::alice(["rad-init", "jj-config", "jj-init-colocate", "rad-patch-jj"])
}
#[test]
fn rad_patch_diff() {
Environment::alice(["rad-init", "rad-patch-diff"]);