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
Show 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
...
@@ -38,6 +38,7 @@ code --install-extension epm-docker-test-runner-0.1.0.vsix
-
`Run app on systems`
: спрашивает приложение и целевые системы.
-
`Run app on systems`
: спрашивает приложение и целевые системы.
-
`Run app on systems parallel`
: спрашивает приложение, затем даёт выбрать пресет или вручную ввести системы, и передаёт
`--parallel`
.
-
`Run app on systems parallel`
: спрашивает приложение, затем даёт выбрать пресет или вручную ввести системы, и передаёт
`--parallel`
.
-
`Run app preset`
: спрашивает приложение и пресет
`main`
,
`russian`
или
`all`
.
-
`Run app preset`
: спрашивает приложение и пресет
`main`
,
`russian`
или
`all`
.
-
`--latest for app tests`
: checkbox в дереве действий, который добавляет
`--latest`
к app-тестам.
-
`Run exec command`
: спрашивает shell-команду и целевые системы или пресет.
-
`Run exec command`
: спрашивает shell-команду и целевые системы или пресет.
-
`./bin/epm play <app>`
: запускает локальный
`epm play`
вне Docker.
-
`./bin/epm play <app>`
: запускает локальный
`epm play`
вне Docker.
-
`./bin/epm play --latest <app>`
: запускает локальный
`epm play --latest`
вне 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
...
@@ -56,7 +57,8 @@ code --install-extension epm-docker-test-runner-0.1.0.vsix
{
{
"label"
:
"ayugram main"
,
"label"
:
"ayugram main"
,
"app"
:
"ayugram"
,
"app"
:
"ayugram"
,
"preset"
:
"main"
"preset"
:
"main"
,
"latest"
:
true
},
},
{
{
"label"
:
"os-release fedora"
,
"label"
:
"os-release fedora"
,
...
@@ -76,7 +78,6 @@ code --install-extension epm-docker-test-runner-0.1.0.vsix
...
@@ -76,7 +78,6 @@ code --install-extension epm-docker-test-runner-0.1.0.vsix
-
`epmDockerTest.defaultSystems`
: системы по умолчанию для запусков app/exec.
-
`epmDockerTest.defaultSystems`
: системы по умолчанию для запусков app/exec.
-
`epmDockerTest.defaultPreset`
: пресет по умолчанию для запусков по пресету.
-
`epmDockerTest.defaultPreset`
: пресет по умолчанию для запусков по пресету.
-
`epmDockerTest.defaultMode`
:
`auto`
,
`local`
или
`remote`
.
-
`epmDockerTest.defaultMode`
:
`auto`
,
`local`
или
`remote`
.
-
`epmDockerTest.latest`
: передавать
`--latest`
.
-
`epmDockerTest.parallelJobs`
: передавать
`-j N`
, если значение больше
`1`
.
-
`epmDockerTest.parallelJobs`
: передавать
`-j N`
, если значение больше
`1`
.
-
`epmDockerTest.localEpmRoot`
: локальное дерево eepm для команд
`./bin/epm play`
вне контейнера.
-
`epmDockerTest.localEpmRoot`
: локальное дерево eepm для команд
`./bin/epm play`
вне контейнера.
-
`epmDockerTest.eepmDir`
,
`epmDockerTest.eepmSource`
,
`epmDockerTest.remoteHost`
,
`epmDockerTest.remoteUser`
,
`epmDockerTest.builderUser`
,
`epmDockerTest.builderPath`
,
`epmDockerTest.logRoot`
: соответствуют одноимённым опциям скрипта.
-
`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';
...
@@ -9,11 +9,22 @@ const TERMINAL_NAME = 'EPM Docker Test';
let
lastRun
=
undefined
;
let
lastRun
=
undefined
;
let
terminal
=
undefined
;
let
terminal
=
undefined
;
let
extensionContext
=
undefined
;
let
extensionContext
=
undefined
;
let
actionsProvider
=
undefined
;
function
activate
(
context
)
{
function
activate
(
context
)
{
extensionContext
=
context
;
extensionContext
=
context
;
const
provider
=
new
ActionsProvider
();
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
);
const
status
=
vscode
.
window
.
createStatusBarItem
(
vscode
.
StatusBarAlignment
.
Left
,
100
);
status
.
name
=
'EPM Docker Test'
;
status
.
name
=
'EPM Docker Test'
;
...
@@ -23,6 +34,8 @@ function activate(context) {
...
@@ -23,6 +34,8 @@ function activate(context) {
status
.
show
();
status
.
show
();
context
.
subscriptions
.
push
(
context
.
subscriptions
.
push
(
treeView
,
checkboxSubscription
,
status
,
status
,
vscode
.
commands
.
registerCommand
(
'epmDockerTest.runQuick'
,
runQuick
),
vscode
.
commands
.
registerCommand
(
'epmDockerTest.runQuick'
,
runQuick
),
vscode
.
commands
.
registerCommand
(
'epmDockerTest.runApp'
,
()
=>
runApp
(
false
)),
vscode
.
commands
.
registerCommand
(
'epmDockerTest.runApp'
,
()
=>
runApp
(
false
)),
...
@@ -52,12 +65,19 @@ class ActionsProvider {
...
@@ -52,12 +65,19 @@ class ActionsProvider {
constructor
()
{
constructor
()
{
this
.
emitter
=
new
vscode
.
EventEmitter
();
this
.
emitter
=
new
vscode
.
EventEmitter
();
this
.
onDidChangeTreeData
=
this
.
emitter
.
event
;
this
.
onDidChangeTreeData
=
this
.
emitter
.
event
;
this
.
latest
=
Boolean
(
getWorkspaceState
(
'latestEnabled'
,
false
));
}
}
refresh
()
{
refresh
()
{
this
.
emitter
.
fire
();
this
.
emitter
.
fire
();
}
}
setLatest
(
latest
)
{
this
.
latest
=
latest
;
setWorkspaceState
(
'latestEnabled'
,
latest
);
this
.
refresh
();
}
getTreeItem
(
item
)
{
getTreeItem
(
item
)
{
return
item
;
return
item
;
}
}
...
@@ -78,6 +98,7 @@ class ActionsProvider {
...
@@ -78,6 +98,7 @@ class ActionsProvider {
));
));
const
builtIns
=
[
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'
,
'epmDockerTest.runApp'
,
undefined
,
new
vscode
.
ThemeIcon
(
'run'
)),
commandItem
(
'Run app on systems parallel'
,
'epmDockerTest.runAppParallel'
,
undefined
,
new
vscode
.
ThemeIcon
(
'run-all'
)),
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'
)),
commandItem
(
'Run app preset'
,
'epmDockerTest.runPreset'
,
undefined
,
new
vscode
.
ThemeIcon
(
'list-selection'
)),
...
@@ -112,6 +133,17 @@ function separatorItem(label) {
...
@@ -112,6 +133,17 @@ function separatorItem(label) {
return
item
;
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
()
{
async
function
runQuick
()
{
const
choice
=
await
vscode
.
window
.
showQuickPick
([
const
choice
=
await
vscode
.
window
.
showQuickPick
([
{
label
:
'$(run) Run app on systems'
,
command
:
'epmDockerTest.runApp'
},
{
label
:
'$(run) Run app on systems'
,
command
:
'epmDockerTest.runApp'
},
...
@@ -149,12 +181,12 @@ async function runApp(parallel) {
...
@@ -149,12 +181,12 @@ async function runApp(parallel) {
await
setWorkspaceState
(
'lastApp'
,
app
);
await
setWorkspaceState
(
'lastApp'
,
app
);
if
(
target
.
preset
)
{
if
(
target
.
preset
)
{
await
executeTest
({
app
,
preset
:
target
.
preset
,
parallel
});
await
executeTest
({
app
,
preset
:
target
.
preset
,
parallel
,
latest
:
latestEnabled
()
});
return
;
return
;
}
}
await
setWorkspaceState
(
'lastSystems'
,
target
.
systems
);
await
setWorkspaceState
(
'lastSystems'
,
target
.
systems
);
await
executeTest
({
app
,
systems
:
splitArgs
(
target
.
systems
),
parallel
});
await
executeTest
({
app
,
systems
:
splitArgs
(
target
.
systems
),
parallel
,
latest
:
latestEnabled
()
});
return
;
return
;
}
}
...
@@ -169,7 +201,7 @@ async function runApp(parallel) {
...
@@ -169,7 +201,7 @@ async function runApp(parallel) {
await
setWorkspaceState
(
'lastApp'
,
app
);
await
setWorkspaceState
(
'lastApp'
,
app
);
await
setWorkspaceState
(
'lastSystems'
,
systems
);
await
setWorkspaceState
(
'lastSystems'
,
systems
);
await
executeTest
({
app
,
systems
:
splitArgs
(
systems
),
parallel
});
await
executeTest
({
app
,
systems
:
splitArgs
(
systems
),
parallel
,
latest
:
latestEnabled
()
});
}
}
async
function
pickParallelTarget
()
{
async
function
pickParallelTarget
()
{
...
@@ -232,7 +264,7 @@ async function runPreset() {
...
@@ -232,7 +264,7 @@ async function runPreset() {
}
}
await
setWorkspaceState
(
'lastApp'
,
app
);
await
setWorkspaceState
(
'lastApp'
,
app
);
await
executeTest
({
app
,
preset
});
await
executeTest
({
app
,
preset
,
latest
:
latestEnabled
()
});
}
}
async
function
runExec
()
{
async
function
runExec
()
{
...
@@ -466,6 +498,7 @@ async function runFavorite(favorite) {
...
@@ -466,6 +498,7 @@ async function runFavorite(favorite) {
systems
:
favorite
.
systems
,
systems
:
favorite
.
systems
,
preset
:
favorite
.
preset
,
preset
:
favorite
.
preset
,
exec
:
favorite
.
exec
,
exec
:
favorite
.
exec
,
latest
:
favorite
.
latest
,
favoriteArgs
:
favorite
.
args
favoriteArgs
:
favorite
.
args
});
});
}
}
...
@@ -493,6 +526,9 @@ async function executeTest(request) {
...
@@ -493,6 +526,9 @@ async function executeTest(request) {
if
(
request
.
parallel
&&
!
args
.
includes
(
'--parallel'
)
&&
!
args
.
includes
(
'-j'
))
{
if
(
request
.
parallel
&&
!
args
.
includes
(
'--parallel'
)
&&
!
args
.
includes
(
'-j'
))
{
args
.
push
(
'--parallel'
);
args
.
push
(
'--parallel'
);
}
}
if
(
!
request
.
exec
&&
request
.
latest
)
{
args
.
push
(
'--latest'
);
}
if
(
request
.
exec
)
{
if
(
request
.
exec
)
{
args
.
push
(
'--exec'
,
request
.
exec
);
args
.
push
(
'--exec'
,
request
.
exec
);
...
@@ -547,9 +583,6 @@ function buildCommonArgs() {
...
@@ -547,9 +583,6 @@ function buildCommonArgs() {
addStringArg
(
args
,
'--builder-path'
,
config
.
get
(
'builderPath'
,
''
));
addStringArg
(
args
,
'--builder-path'
,
config
.
get
(
'builderPath'
,
''
));
addStringArg
(
args
,
'--log-root'
,
config
.
get
(
'logRoot'
,
''
));
addStringArg
(
args
,
'--log-root'
,
config
.
get
(
'logRoot'
,
''
));
if
(
config
.
get
(
'latest'
,
false
))
{
args
.
push
(
'--latest'
);
}
if
(
parallelJobs
>
1
)
{
if
(
parallelJobs
>
1
)
{
args
.
push
(
'-j'
,
String
(
parallelJobs
));
args
.
push
(
'-j'
,
String
(
parallelJobs
));
}
}
...
@@ -882,6 +915,10 @@ async function setWorkspaceState(key, value) {
...
@@ -882,6 +915,10 @@ async function setWorkspaceState(key, value) {
await
extensionContext
?.
workspaceState
.
update
(
key
,
value
);
await
extensionContext
?.
workspaceState
.
update
(
key
,
value
);
}
}
function
latestEnabled
()
{
return
Boolean
(
actionsProvider
?.
latest
);
}
module
.
exports
=
{
module
.
exports
=
{
activate
,
activate
,
deactivate
deactivate
...
...
vscode-extension/package.json
View file @
29659f6f
...
@@ -108,11 +108,6 @@
...
@@ -108,11 +108,6 @@
"default"
:
"auto"
,
"default"
:
"auto"
,
"description"
:
"Default runner mode."
"description"
:
"Default runner mode."
},
},
"epmDockerTest.latest"
:
{
"type"
:
"boolean"
,
"default"
:
false
,
"description"
:
"Pass --latest to epm play."
},
"epmDockerTest.parallelJobs"
:
{
"epmDockerTest.parallelJobs"
:
{
"type"
:
"number"
,
"type"
:
"number"
,
"default"
:
0
,
"default"
:
0
,
...
@@ -201,6 +196,10 @@
...
@@ -201,6 +196,10 @@
"exec"
:
{
"exec"
:
{
"type"
:
"string"
"type"
:
"string"
},
},
"latest"
:
{
"type"
:
"boolean"
,
"description"
:
"Pass --latest for this favorite app test."
},
"args"
:
{
"args"
:
{
"type"
:
"array"
,
"type"
:
"array"
,
"items"
:
{
"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