FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
setup-python/__tests__/setup-python.test.ts at main · solveforceapp/setup-python · GitHub
solveforceapp
/
setup-python
Public
forked from
actions/setup-python
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
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
setup-python
/
__tests__
/
setup-python.test.ts
Copy path
More file actions
More file actions
Latest commit
History
History
History
149 lines (122 loc) · 4.88 KB
Breadcrumbs
setup-python
/
__tests__
/
setup-python.test.ts
Copy path
File metadata and controls
149 lines (122 loc) · 4.88 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
import
*
as
core
from
'@actions/core'
;
import
*
as
fs
from
'fs'
;
import
*
as
path
from
'path'
;
import
{
cacheDependencies
}
from
'../src/setup-python'
;
import
{
getCacheDistributor
}
from
'../src/cache-distributions/cache-factory'
;
jest
.
mock
(
'fs'
,
(
)
=>
{
const
actualFs
=
jest
.
requireActual
(
'fs'
)
;
return
{
...
actualFs
,
promises
:
{
access
:
jest
.
fn
(
)
,
mkdir
:
jest
.
fn
(
)
,
copyFile
:
jest
.
fn
(
)
,
writeFile
:
jest
.
fn
(
)
,
appendFile
:
jest
.
fn
(
)
}
}
;
}
)
;
jest
.
mock
(
'@actions/core'
)
;
jest
.
mock
(
'../src/cache-distributions/cache-factory'
)
;
const
mockedFsPromises
=
fs
.
promises
as
jest
.
Mocked
<
typeof
fs
.
promises
>
;
const
mockedCore
=
core
as
jest
.
Mocked
<
typeof
core
>
;
const
mockedGetCacheDistributor
=
getCacheDistributor
as
jest
.
Mock
;
describe
(
'cacheDependencies'
,
(
)
=>
{
const
mockRestoreCache
=
jest
.
fn
(
)
;
beforeEach
(
(
)
=>
{
jest
.
clearAllMocks
(
)
;
process
.
env
.
GITHUB_ACTION_PATH
=
'/github/action'
;
process
.
env
.
GITHUB_WORKSPACE
=
'/github/workspace'
;
mockedCore
.
getInput
.
mockReturnValue
(
'nested/deps.lock'
)
;
// Simulate file exists by resolving access without error
mockedFsPromises
.
access
.
mockImplementation
(
async
p
=>
{
const
pathStr
=
typeof
p
===
'string'
?
p
:
p
.
toString
(
)
;
if
(
pathStr
===
'/github/action/nested/deps.lock'
)
{
return
Promise
.
resolve
(
)
;
}
// Simulate directory doesn't exist to test mkdir
if
(
pathStr
===
path
.
dirname
(
'/github/workspace/nested/deps.lock'
)
)
{
return
Promise
.
reject
(
new
Error
(
'no dir'
)
)
;
}
return
Promise
.
resolve
(
)
;
}
)
;
// Simulate mkdir success
mockedFsPromises
.
mkdir
.
mockResolvedValue
(
undefined
)
;
// Simulate copyFile success
mockedFsPromises
.
copyFile
.
mockResolvedValue
(
undefined
)
;
mockedGetCacheDistributor
.
mockReturnValue
(
{
restoreCache
:
mockRestoreCache
}
)
;
}
)
;
it
(
'copies the dependency file and resolves the path with directory structure'
,
async
(
)
=>
{
await
cacheDependencies
(
'pip'
,
'3.12'
)
;
const
sourcePath
=
path
.
resolve
(
'/github/action'
,
'nested/deps.lock'
)
;
const
targetPath
=
path
.
resolve
(
'/github/workspace'
,
'nested/deps.lock'
)
;
expect
(
mockedFsPromises
.
access
)
.
toHaveBeenCalledWith
(
sourcePath
,
fs
.
constants
.
F_OK
)
;
expect
(
mockedFsPromises
.
mkdir
)
.
toHaveBeenCalledWith
(
path
.
dirname
(
targetPath
)
,
{
recursive
:
true
}
)
;
expect
(
mockedFsPromises
.
copyFile
)
.
toHaveBeenCalledWith
(
sourcePath
,
targetPath
)
;
expect
(
mockedCore
.
info
)
.
toHaveBeenCalledWith
(
`Copied
${
sourcePath
}
to
${
targetPath
}
`
)
;
expect
(
mockedCore
.
info
)
.
toHaveBeenCalledWith
(
`Resolved cache-dependency-path: nested/deps.lock`
)
;
expect
(
mockRestoreCache
)
.
toHaveBeenCalled
(
)
;
}
)
;
it
(
'warns if the dependency file does not exist'
,
async
(
)
=>
{
// Simulate file does not exist by rejecting access
mockedFsPromises
.
access
.
mockRejectedValue
(
new
Error
(
'file not found'
)
)
;
await
cacheDependencies
(
'pip'
,
'3.12'
)
;
expect
(
mockedCore
.
warning
)
.
toHaveBeenCalledWith
(
expect
.
stringContaining
(
'does not exist'
)
)
;
expect
(
mockedFsPromises
.
copyFile
)
.
not
.
toHaveBeenCalled
(
)
;
expect
(
mockRestoreCache
)
.
toHaveBeenCalled
(
)
;
}
)
;
it
(
'warns if file copy fails'
,
async
(
)
=>
{
// Simulate copyFile failure
mockedFsPromises
.
copyFile
.
mockRejectedValue
(
new
Error
(
'copy failed'
)
)
;
await
cacheDependencies
(
'pip'
,
'3.12'
)
;
expect
(
mockedCore
.
warning
)
.
toHaveBeenCalledWith
(
expect
.
stringContaining
(
'Failed to copy file'
)
)
;
expect
(
mockRestoreCache
)
.
toHaveBeenCalled
(
)
;
}
)
;
it
(
'skips path logic if no input is provided'
,
async
(
)
=>
{
mockedCore
.
getInput
.
mockReturnValue
(
''
)
;
await
cacheDependencies
(
'pip'
,
'3.12'
)
;
expect
(
mockedFsPromises
.
copyFile
)
.
not
.
toHaveBeenCalled
(
)
;
expect
(
mockedCore
.
warning
)
.
not
.
toHaveBeenCalled
(
)
;
expect
(
mockRestoreCache
)
.
toHaveBeenCalled
(
)
;
}
)
;
it
(
'does not copy if dependency file is already inside the workspace but still sets resolved path'
,
async
(
)
=>
{
// Simulate cacheDependencyPath inside workspace
mockedCore
.
getInput
.
mockReturnValue
(
'deps.lock'
)
;
// Override sourcePath and targetPath to be equal
const
actionPath
=
'/github/workspace'
;
// same path for action and workspace
process
.
env
.
GITHUB_ACTION_PATH
=
actionPath
;
process
.
env
.
GITHUB_WORKSPACE
=
actionPath
;
// access resolves to simulate file exists
mockedFsPromises
.
access
.
mockResolvedValue
(
)
;
await
cacheDependencies
(
'pip'
,
'3.12'
)
;
const
sourcePath
=
path
.
resolve
(
actionPath
,
'deps.lock'
)
;
const
targetPath
=
sourcePath
;
// same path
expect
(
mockedFsPromises
.
copyFile
)
.
not
.
toHaveBeenCalled
(
)
;
expect
(
mockedCore
.
info
)
.
toHaveBeenCalledWith
(
`Dependency file is already inside the workspace:
${
sourcePath
}
`
)
;
expect
(
mockedCore
.
info
)
.
toHaveBeenCalledWith
(
`Resolved cache-dependency-path: deps.lock`
)
;
expect
(
mockRestoreCache
)
.
toHaveBeenCalled
(
)
;
}
)
;
}
)
;
Back
|
FazBrowse Home
|
New Git URL