FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
opencode/packages/opencode/test/git/git.test.ts at dev · codedeep/opencode · GitHub
codedeep
/
opencode
Public
forked from
anomalyco/opencode
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
opencode
/
packages
/
opencode
/
test
/
git
/
git.test.ts
Copy path
More file actions
More file actions
Latest commit
History
History
History
128 lines (111 loc) · 4.31 KB
Breadcrumbs
opencode
/
packages
/
opencode
/
test
/
git
/
git.test.ts
Copy path
File metadata and controls
128 lines (111 loc) · 4.31 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import
{
$
}
from
"bun"
import
{
describe
,
expect
,
test
}
from
"bun:test"
import
fs
from
"fs/promises"
import
path
from
"path"
import
{
ManagedRuntime
}
from
"effect"
import
{
Git
}
from
"../../src/git"
import
{
tmpdir
}
from
"../fixture/fixture"
const
weird
=
process
.
platform
===
"win32"
?
"space file.txt"
:
"tab\tfile.txt"
async
function
withGit
<
T
>
(
body
:
(
rt
:
ManagedRuntime
.
ManagedRuntime
<
Git
.
Service
,
never
>
)
=>
Promise
<
T
>
)
{
const
rt
=
ManagedRuntime
.
make
(
Git
.
defaultLayer
)
try
{
return
await
body
(
rt
)
}
finally
{
await
rt
.
dispose
(
)
}
}
describe
(
"Git"
,
(
)
=>
{
test
(
"branch() returns current branch name"
,
async
(
)
=>
{
await
using
tmp
=
await
tmpdir
(
{
git
:
true
}
)
await
withGit
(
async
(
rt
)
=>
{
const
branch
=
await
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
branch
(
tmp
.
path
)
)
)
expect
(
branch
)
.
toBeDefined
(
)
expect
(
typeof
branch
)
.
toBe
(
"string"
)
}
)
}
)
test
(
"branch() returns undefined for non-git directories"
,
async
(
)
=>
{
await
using
tmp
=
await
tmpdir
(
)
await
withGit
(
async
(
rt
)
=>
{
const
branch
=
await
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
branch
(
tmp
.
path
)
)
)
expect
(
branch
)
.
toBeUndefined
(
)
}
)
}
)
test
(
"branch() returns undefined for detached HEAD"
,
async
(
)
=>
{
await
using
tmp
=
await
tmpdir
(
{
git
:
true
}
)
const
hash
=
(
await
$
`git rev-parse HEAD`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
.
text
(
)
)
.
trim
(
)
await
$
`git checkout --detach
${
hash
}
`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
withGit
(
async
(
rt
)
=>
{
const
branch
=
await
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
branch
(
tmp
.
path
)
)
)
expect
(
branch
)
.
toBeUndefined
(
)
}
)
}
)
test
(
"defaultBranch() uses init.defaultBranch when available"
,
async
(
)
=>
{
await
using
tmp
=
await
tmpdir
(
{
git
:
true
}
)
await
$
`git branch -M trunk`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
$
`git config init.defaultBranch trunk`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
withGit
(
async
(
rt
)
=>
{
const
branch
=
await
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
defaultBranch
(
tmp
.
path
)
)
)
expect
(
branch
?.
name
)
.
toBe
(
"trunk"
)
expect
(
branch
?.
ref
)
.
toBe
(
"trunk"
)
}
)
}
)
test
(
"status() handles special filenames"
,
async
(
)
=>
{
await
using
tmp
=
await
tmpdir
(
{
git
:
true
}
)
await
fs
.
writeFile
(
path
.
join
(
tmp
.
path
,
weird
)
,
"hello\n"
,
"utf-8"
)
await
withGit
(
async
(
rt
)
=>
{
const
status
=
await
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
status
(
tmp
.
path
)
)
)
expect
(
status
)
.
toEqual
(
expect
.
arrayContaining
(
[
expect
.
objectContaining
(
{
file
:
weird
,
status
:
"added"
,
}
)
,
]
)
,
)
}
)
}
)
test
(
"diff(), stats(), and mergeBase() parse tracked changes"
,
async
(
)
=>
{
await
using
tmp
=
await
tmpdir
(
{
git
:
true
}
)
await
$
`git branch -M main`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
fs
.
writeFile
(
path
.
join
(
tmp
.
path
,
weird
)
,
"before\n"
,
"utf-8"
)
await
$
`git add .`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
$
`git commit --no-gpg-sign -m "add file"`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
$
`git checkout -b feature/test`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
fs
.
writeFile
(
path
.
join
(
tmp
.
path
,
weird
)
,
"after\n"
,
"utf-8"
)
await
withGit
(
async
(
rt
)
=>
{
const
[
base
,
diff
,
stats
]
=
await
Promise
.
all
(
[
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
mergeBase
(
tmp
.
path
,
"main"
)
)
)
,
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
diff
(
tmp
.
path
,
"HEAD"
)
)
)
,
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
stats
(
tmp
.
path
,
"HEAD"
)
)
)
,
]
)
expect
(
base
)
.
toBeTruthy
(
)
expect
(
diff
)
.
toEqual
(
expect
.
arrayContaining
(
[
expect
.
objectContaining
(
{
file
:
weird
,
status
:
"modified"
,
}
)
,
]
)
,
)
expect
(
stats
)
.
toEqual
(
expect
.
arrayContaining
(
[
expect
.
objectContaining
(
{
file
:
weird
,
additions
:
1
,
deletions
:
1
,
}
)
,
]
)
,
)
}
)
}
)
test
(
"show() returns empty text for binary blobs"
,
async
(
)
=>
{
await
using
tmp
=
await
tmpdir
(
{
git
:
true
}
)
await
fs
.
writeFile
(
path
.
join
(
tmp
.
path
,
"bin.dat"
)
,
new
Uint8Array
(
[
0
,
1
,
2
,
3
]
)
)
await
$
`git add .`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
$
`git commit --no-gpg-sign -m "add binary"`
.
cwd
(
tmp
.
path
)
.
quiet
(
)
await
withGit
(
async
(
rt
)
=>
{
const
text
=
await
rt
.
runPromise
(
Git
.
Service
.
use
(
(
git
)
=>
git
.
show
(
tmp
.
path
,
"HEAD"
,
"bin.dat"
)
)
)
expect
(
text
)
.
toBe
(
""
)
}
)
}
)
}
)
Back
|
FazBrowse Home
|
New Git URL