mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
* feat: Add experimental proxy based npm interceptor * refactor: Analysis cache * ci: Add E2E for npm proxy * fix: Handle dry-run in proxy flow * fix: Handle special case for scope package name * fix: Misc fixes * fix: Code review fixes * fix: Code review fixes * refactor: Reusable code into base registry interceptor * Pause npm process during user confirmation (#90) * pause npm process when prompting user for confirmation * disable progress bar * fix logging and close chan on return * update use of deprecated field * refactor: Separation of concerns for handling process state * fix: Safe permission for cert file * fix: Handle nil check for interaction hook * fix: Add test for base registry * Fix goreleaser for windows build (#93) * introduce platform specific process control * rename common.go to common_flow.go * feat: Add support for pause resume on windows * fix: Code review fixes * test: Add confirmation handler tests --------- Co-authored-by: Sahil Bansal <bansalsahil315@gmail.com>
115 lines
2.2 KiB
Go
115 lines
2.2 KiB
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package flows
|
|
|
|
import (
|
|
"os/exec"
|
|
"runtime"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestPlatformPauseResumeProcess(t *testing.T) {
|
|
if runtime.GOOS != "windows" {
|
|
t.Skip("Windows-only test")
|
|
}
|
|
|
|
cmd := exec.Command("ping", "127.0.0.1", "-n", "60")
|
|
err := cmd.Start()
|
|
assert.NoError(t, err)
|
|
|
|
defer cmd.Process.Kill()
|
|
|
|
time.Sleep(100 * time.Millisecond)
|
|
|
|
err = platformPauseProcess(cmd)
|
|
assert.NoError(t, err)
|
|
|
|
time.Sleep(500 * time.Millisecond)
|
|
|
|
err = platformResumeProcess(cmd)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestPlatformPauseProcessNil(t *testing.T) {
|
|
err := platformPauseProcess(nil)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestPlatformResumeProcessNil(t *testing.T) {
|
|
err := platformResumeProcess(nil)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestPlatformPauseProcessNilProcess(t *testing.T) {
|
|
cmd := exec.Command("ping", "127.0.0.1")
|
|
err := platformPauseProcess(cmd)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestPlatformResumeProcessNilProcess(t *testing.T) {
|
|
cmd := exec.Command("ping", "127.0.0.1")
|
|
|
|
err := platformResumeProcess(cmd)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestPlatformPauseProcessExited(t *testing.T) {
|
|
if runtime.GOOS != "windows" {
|
|
t.Skip("Windows-only test")
|
|
}
|
|
|
|
cmd := exec.Command("cmd", "/c", "exit 0")
|
|
err := cmd.Start()
|
|
assert.NoError(t, err)
|
|
|
|
defer cmd.Process.Kill()
|
|
|
|
err = platformPauseProcess(cmd)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestPlatformResumeProcessExited(t *testing.T) {
|
|
if runtime.GOOS != "windows" {
|
|
t.Skip("Windows-only test")
|
|
}
|
|
|
|
cmd := exec.Command("cmd", "/c", "exit 0")
|
|
err := cmd.Start()
|
|
assert.NoError(t, err)
|
|
|
|
defer cmd.Process.Kill()
|
|
|
|
err = platformResumeProcess(cmd)
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestPlatformPauseResumeMultipleTimes(t *testing.T) {
|
|
if runtime.GOOS != "windows" {
|
|
t.Skip("Windows-only test")
|
|
}
|
|
|
|
cmd := exec.Command("ping", "127.0.0.1", "-n", "60")
|
|
err := cmd.Start()
|
|
assert.NoError(t, err)
|
|
|
|
defer cmd.Process.Kill()
|
|
|
|
time.Sleep(100 * time.Millisecond)
|
|
|
|
for i := 0; i < 3; i++ {
|
|
err = platformPauseProcess(cmd)
|
|
assert.NoError(t, err)
|
|
|
|
time.Sleep(100 * time.Millisecond)
|
|
|
|
err = platformResumeProcess(cmd)
|
|
assert.NoError(t, err)
|
|
|
|
time.Sleep(100 * time.Millisecond)
|
|
}
|
|
}
|