Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
epm-docker-test
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
epm-docker-test
Commits
29659f6f
Commit
29659f6f
authored
May 25, 2026
by
Ivan Mazhukin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add latest toggle to extension actions
parent
cc0458f0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
15 deletions
+52
-15
README.md
vscode-extension/README.md
+3
-2
extension.js
vscode-extension/extension.js
+45
-8
package.json
vscode-extension/package.json
+4
-5
No files found.
vscode-extension/README.md
View file @
29659f6f
...
...
@@ -38,6 +38,7 @@ code --install-extension epm-docker-test-runner-0.1.0.vsix
-
`Run app on systems`
: спрашивает приложение и целевые системы.
-
`Run app on systems parallel`
: спрашивает приложение, затем даёт выбрать пресет или вручную ввести системы, и передаёт
`--parallel`
.
-
`Run app preset`
: спрашивает приложение и пресет
`main`
,
`russian`
или
`all`
.
-
`--latest for app tests`
: checkbox в дереве действий, который добавляет
`--latest`
к app-тестам.
-
`Run exec command`
: спрашивает shell-команду и целевые системы или пресет.
-
`./bin/epm play <app>`
: запускает локальный
`epm play`
вне Docker.
-
`./bin/epm play --latest <app>`
: запускает локальный
`epm play --latest`
вне Docker.
...
...
@@ -56,7 +57,8 @@ code --install-extension epm-docker-test-runner-0.1.0.vsix
{
"label"
:
"ayugram main"
,
"app"
:
"ayugram"
,
"preset"
:
"main"
"preset"
:
"main"
,
"latest"
:
true
},
{
"label"
:
"os-release fedora"
,
...
...
@@ -76,7 +78,6 @@ code --install-extension epm-docker-test-runner-0.1.0.vsix
-
`epmDockerTest.defaultSystems`
: системы по умолчанию для запусков app/exec.
-
`epmDockerTest.defaultPreset`
: пресет по умолчанию для запусков по пресету.
-
`epmDockerTest.defaultMode`
:
`auto`
,
`local`
или
`remote`
.
-
`epmDockerTest.latest`
: передавать
`--latest`
.
-
`epmDockerTest.parallelJobs`
: передавать
`-j N`
, если значение больше
`1`
.
-
`epmDockerTest.localEpmRoot`
: локальное дерево eepm для команд
`./bin/epm play`
вне контейнера.
-
`epmDockerTest.eepmDir`
,
`epmDockerTest.eepmSource`
,
`epmDockerTest.remoteHost`
,
`epmDockerTest.remoteUser`
,
`epmDockerTest.builderUser`
,
`epmDockerTest.builderPath`
,
`epmDockerTest.logRoot`
: соответствуют одноимённым опциям скрипта.
...
...
vscode-extension/extension.js
View file @
29659f6f
...
...
@@ -9,11 +9,22 @@ const TERMINAL_NAME = 'EPM Docker Test';
let
lastRun
=
undefined
;
let
terminal
=
undefined
;
let
extensionContext
=
undefined
;
let
actionsProvider
=
undefined
;
function
activate
(
context
)
{
extensionContext
=
context
;
const
provider
=
new
ActionsProvider
();
vscode
.
window
.
registerTreeDataProvider
(
'epmDockerTest.actions'
,
provider
);
actionsProvider
=
provider
;
const
treeView
=
vscode
.
window
.
createTreeView
(
'epmDockerTest.actions'
,
{
treeDataProvider
:
provider
});
const
checkboxSubscription
=
treeView
.
onDidChangeCheckboxState
((
event
)
=>
{
for
(
const
[
item
,
state
]
of
event
.
items
)
{
if
(
item
.
contextValue
===
'epmDockerTest.latestToggle'
)
{
provider
.
setLatest
(
state
===
vscode
.
TreeItemCheckboxState
.
Checked
);
}
}
});
const
status
=
vscode
.
window
.
createStatusBarItem
(
vscode
.
StatusBarAlignment
.
Left
,
100
);
status
.
name
=
'EPM Docker Test'
;
...
...
@@ -23,6 +34,8 @@ function activate(context) {
status
.
show
();
context
.
subscriptions
.
push
(
treeView
,
checkboxSubscription
,
status
,
vscode
.
commands
.
registerCommand
(
'epmDockerTest.runQuick'
,
runQuick
),
vscode
.
commands
.
registerCommand
(
'epmDockerTest.runApp'
,
()
=>
runApp
(
false
)),
...
...
@@ -52,12 +65,19 @@ class ActionsProvider {
constructor
()
{
this
.
emitter
=
new
vscode
.
EventEmitter
();
this
.
onDidChangeTreeData
=
this
.
emitter
.
event
;
this
.
latest
=
Boolean
(
getWorkspaceState
(
'latestEnabled'
,
false
));
}
refresh
()
{
this
.
emitter
.
fire
();
}
setLatest
(
latest
)
{
this
.
latest
=
latest
;
setWorkspaceState
(
'latestEnabled'
,
latest
);
this
.
refresh
();
}
getTreeItem
(
item
)
{
return
item
;
}
...
...
@@ -78,6 +98,7 @@ class ActionsProvider {
));
const
builtIns
=
[
checkboxItem
(
'--latest for app tests'
,
this
.
latest
),
commandItem
(
'Run app on systems'
,
'epmDockerTest.runApp'
,
undefined
,
new
vscode
.
ThemeIcon
(
'run'
)),
commandItem
(
'Run app on systems parallel'
,
'epmDockerTest.runAppParallel'
,
undefined
,
new
vscode
.
ThemeIcon
(
'run-all'
)),
commandItem
(
'Run app preset'
,
'epmDockerTest.runPreset'
,
undefined
,
new
vscode
.
ThemeIcon
(
'list-selection'
)),
...
...
@@ -112,6 +133,17 @@ function separatorItem(label) {
return
item
;
}
function
checkboxItem
(
label
,
checked
)
{
const
item
=
new
vscode
.
TreeItem
(
label
,
vscode
.
TreeItemCollapsibleState
.
None
);
item
.
contextValue
=
'epmDockerTest.latestToggle'
;
item
.
checkboxState
=
checked
?
vscode
.
TreeItemCheckboxState
.
Checked
:
vscode
.
TreeItemCheckboxState
.
Unchecked
;
item
.
tooltip
=
'Pass --latest to app test commands'
;
item
.
iconPath
=
new
vscode
.
ThemeIcon
(
'cloud-download'
);
return
item
;
}
async
function
runQuick
()
{
const
choice
=
await
vscode
.
window
.
showQuickPick
([
{
label
:
'$(run) Run app on systems'
,
command
:
'epmDockerTest.runApp'
},
...
...
@@ -149,12 +181,12 @@ async function runApp(parallel) {
await
setWorkspaceState
(
'lastApp'
,
app
);
if
(
target
.
preset
)
{
await
executeTest
({
app
,
preset
:
target
.
preset
,
parallel
});
await
executeTest
({
app
,
preset
:
target
.
preset
,
parallel
,
latest
:
latestEnabled
()
});
return
;
}
await
setWorkspaceState
(
'lastSystems'
,
target
.
systems
);
await
executeTest
({
app
,
systems
:
splitArgs
(
target
.
systems
),
parallel
});
await
executeTest
({
app
,
systems
:
splitArgs
(
target
.
systems
),
parallel
,
latest
:
latestEnabled
()
});
return
;
}
...
...
@@ -169,7 +201,7 @@ async function runApp(parallel) {
await
setWorkspaceState
(
'lastApp'
,
app
);
await
setWorkspaceState
(
'lastSystems'
,
systems
);
await
executeTest
({
app
,
systems
:
splitArgs
(
systems
),
parallel
});
await
executeTest
({
app
,
systems
:
splitArgs
(
systems
),
parallel
,
latest
:
latestEnabled
()
});
}
async
function
pickParallelTarget
()
{
...
...
@@ -232,7 +264,7 @@ async function runPreset() {
}
await
setWorkspaceState
(
'lastApp'
,
app
);
await
executeTest
({
app
,
preset
});
await
executeTest
({
app
,
preset
,
latest
:
latestEnabled
()
});
}
async
function
runExec
()
{
...
...
@@ -466,6 +498,7 @@ async function runFavorite(favorite) {
systems
:
favorite
.
systems
,
preset
:
favorite
.
preset
,
exec
:
favorite
.
exec
,
latest
:
favorite
.
latest
,
favoriteArgs
:
favorite
.
args
});
}
...
...
@@ -493,6 +526,9 @@ async function executeTest(request) {
if
(
request
.
parallel
&&
!
args
.
includes
(
'--parallel'
)
&&
!
args
.
includes
(
'-j'
))
{
args
.
push
(
'--parallel'
);
}
if
(
!
request
.
exec
&&
request
.
latest
)
{
args
.
push
(
'--latest'
);
}
if
(
request
.
exec
)
{
args
.
push
(
'--exec'
,
request
.
exec
);
...
...
@@ -547,9 +583,6 @@ function buildCommonArgs() {
addStringArg
(
args
,
'--builder-path'
,
config
.
get
(
'builderPath'
,
''
));
addStringArg
(
args
,
'--log-root'
,
config
.
get
(
'logRoot'
,
''
));
if
(
config
.
get
(
'latest'
,
false
))
{
args
.
push
(
'--latest'
);
}
if
(
parallelJobs
>
1
)
{
args
.
push
(
'-j'
,
String
(
parallelJobs
));
}
...
...
@@ -882,6 +915,10 @@ async function setWorkspaceState(key, value) {
await
extensionContext
?.
workspaceState
.
update
(
key
,
value
);
}
function
latestEnabled
()
{
return
Boolean
(
actionsProvider
?.
latest
);
}
module
.
exports
=
{
activate
,
deactivate
...
...
vscode-extension/package.json
View file @
29659f6f
...
...
@@ -108,11 +108,6 @@
"default"
:
"auto"
,
"description"
:
"Default runner mode."
},
"epmDockerTest.latest"
:
{
"type"
:
"boolean"
,
"default"
:
false
,
"description"
:
"Pass --latest to epm play."
},
"epmDockerTest.parallelJobs"
:
{
"type"
:
"number"
,
"default"
:
0
,
...
...
@@ -201,6 +196,10 @@
"exec"
:
{
"type"
:
"string"
},
"latest"
:
{
"type"
:
"boolean"
,
"description"
:
"Pass --latest for this favorite app test."
},
"args"
:
{
"type"
:
"array"
,
"items"
:
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment