Timeouts, cancellation (tests).
This commit is contained in:
parent
1fdf2f7d73
commit
7c4199bdd1
6 changed files with 144 additions and 5 deletions
|
@ -1,7 +1,12 @@
|
|||
package zenity_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"image/color"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/ncruces/zenity"
|
||||
)
|
||||
|
@ -18,3 +23,24 @@ func ExampleSelectColor_palette() {
|
|||
zenity.Color(color.NRGBA{R: 0x66, G: 0x33, B: 0x99, A: 0xff}))
|
||||
// Output:
|
||||
}
|
||||
|
||||
func TestSelectColorTimeout(t *testing.T) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second/10)
|
||||
|
||||
_, err := zenity.SelectColor(zenity.Context(ctx))
|
||||
if !os.IsTimeout(err) {
|
||||
t.Error("did not timeout", err)
|
||||
}
|
||||
|
||||
cancel()
|
||||
}
|
||||
|
||||
func TestSelectColorCancel(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
|
||||
_, err := zenity.SelectColor(zenity.Context(ctx))
|
||||
if !errors.Is(err, context.Canceled) {
|
||||
t.Error("not canceled", err)
|
||||
}
|
||||
}
|
||||
|
|
51
file_test.go
51
file_test.go
|
@ -1,6 +1,14 @@
|
|||
package zenity_test
|
||||
|
||||
import "github.com/ncruces/zenity"
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/ncruces/zenity"
|
||||
)
|
||||
|
||||
const defaultPath = ""
|
||||
const defaultName = ""
|
||||
|
@ -52,3 +60,44 @@ func ExampleSelectFileMutiple_directory() {
|
|||
zenity.Directory())
|
||||
// Output:
|
||||
}
|
||||
|
||||
var fileFuncs = []func(...zenity.Option) (string, error){
|
||||
zenity.SelectFile,
|
||||
zenity.SelectFileSave,
|
||||
func(o ...zenity.Option) (string, error) {
|
||||
return zenity.SelectFile(append(o, zenity.Directory())...)
|
||||
},
|
||||
func(o ...zenity.Option) (string, error) {
|
||||
_, err := zenity.SelectFileMutiple(append(o, zenity.Directory())...)
|
||||
return "", err
|
||||
},
|
||||
func(o ...zenity.Option) (string, error) {
|
||||
_, err := zenity.SelectFileMutiple(o...)
|
||||
return "", err
|
||||
},
|
||||
}
|
||||
|
||||
func TestFileTimeout(t *testing.T) {
|
||||
for _, f := range fileFuncs {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second/10)
|
||||
|
||||
_, err := f(zenity.Context(ctx))
|
||||
if !os.IsTimeout(err) {
|
||||
t.Error("did not timeout", err)
|
||||
}
|
||||
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
|
||||
func TestFileCancel(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
|
||||
for _, f := range fileFuncs {
|
||||
_, err := f(zenity.Context(ctx))
|
||||
if !errors.Is(err, context.Canceled) {
|
||||
t.Error("not canceled", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,11 @@ func Run(ctx context.Context, script string, data interface{}) ([]byte, error) {
|
|||
if ctx != nil {
|
||||
cmd := exec.CommandContext(ctx, "osascript", "-l", lang)
|
||||
cmd.Stdin = strings.NewReader(script)
|
||||
return cmd.Output()
|
||||
out, err := cmd.Output()
|
||||
if ctx.Err() != nil {
|
||||
err = ctx.Err()
|
||||
}
|
||||
return out, err
|
||||
}
|
||||
cmd := exec.Command("osascript", "-l", lang)
|
||||
cmd.Stdin = strings.NewReader(script)
|
||||
|
|
|
@ -31,7 +31,11 @@ func Run(ctx context.Context, args []string) ([]byte, error) {
|
|||
}
|
||||
|
||||
if ctx != nil {
|
||||
return exec.CommandContext(ctx, tool, args...).Output()
|
||||
out, err := exec.CommandContext(ctx, tool, args...).Output()
|
||||
if ctx.Err() != nil {
|
||||
err = ctx.Err()
|
||||
}
|
||||
return out, err
|
||||
}
|
||||
return exec.Command(tool, args...).Output()
|
||||
}
|
||||
|
|
42
msg_test.go
42
msg_test.go
|
@ -1,6 +1,14 @@
|
|||
package zenity_test
|
||||
|
||||
import "github.com/ncruces/zenity"
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/ncruces/zenity"
|
||||
)
|
||||
|
||||
func ExampleError() {
|
||||
zenity.Error("An error has occurred.",
|
||||
|
@ -29,3 +37,35 @@ func ExampleQuestion() {
|
|||
zenity.Icon(zenity.QuestionIcon))
|
||||
// Output:
|
||||
}
|
||||
|
||||
var msgFuncs = []func(string, ...zenity.Option) (bool, error){
|
||||
zenity.Error,
|
||||
zenity.Info,
|
||||
zenity.Warning,
|
||||
zenity.Question,
|
||||
}
|
||||
|
||||
func TestMessageTimeout(t *testing.T) {
|
||||
for _, f := range msgFuncs {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second/10)
|
||||
|
||||
_, err := f("text", zenity.Context(ctx))
|
||||
if !os.IsTimeout(err) {
|
||||
t.Error("did not timeout", err)
|
||||
}
|
||||
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
|
||||
func TestMessageCancel(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
|
||||
for _, f := range msgFuncs {
|
||||
_, err := f("text", zenity.Context(ctx))
|
||||
if !errors.Is(err, context.Canceled) {
|
||||
t.Error("not canceled", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
package zenity_test
|
||||
|
||||
import "github.com/ncruces/zenity"
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/ncruces/zenity"
|
||||
)
|
||||
|
||||
func ExampleNotify() {
|
||||
zenity.Notify("There are system updates necessary!",
|
||||
|
@ -8,3 +14,13 @@ func ExampleNotify() {
|
|||
zenity.Icon(zenity.InfoIcon))
|
||||
// Output:
|
||||
}
|
||||
|
||||
func TestNotifyCancel(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
|
||||
err := zenity.Notify("text", zenity.Context(ctx))
|
||||
if !errors.Is(err, context.Canceled) {
|
||||
t.Error("not canceled", err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue