summaryrefslogtreecommitdiff
path: root/vendor/src/github.com/godbus/dbus/transport_unix_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/src/github.com/godbus/dbus/transport_unix_test.go')
-rw-r--r--vendor/src/github.com/godbus/dbus/transport_unix_test.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/src/github.com/godbus/dbus/transport_unix_test.go b/vendor/src/github.com/godbus/dbus/transport_unix_test.go
new file mode 100644
index 0000000000..302233fc65
--- /dev/null
+++ b/vendor/src/github.com/godbus/dbus/transport_unix_test.go
@@ -0,0 +1,49 @@
+package dbus
+
+import (
+ "os"
+ "testing"
+)
+
+const testString = `This is a test!
+This text should be read from the file that is created by this test.`
+
+type unixFDTest struct{}
+
+func (t unixFDTest) Test(fd UnixFD) (string, *Error) {
+ var b [4096]byte
+ file := os.NewFile(uintptr(fd), "testfile")
+ defer file.Close()
+ n, err := file.Read(b[:])
+ if err != nil {
+ return "", &Error{"com.github.guelfey.test.Error", nil}
+ }
+ return string(b[:n]), nil
+}
+
+func TestUnixFDs(t *testing.T) {
+ conn, err := SessionBus()
+ if err != nil {
+ t.Fatal(err)
+ }
+ r, w, err := os.Pipe()
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer w.Close()
+ if _, err := w.Write([]byte(testString)); err != nil {
+ t.Fatal(err)
+ }
+ name := conn.Names()[0]
+ test := unixFDTest{}
+ conn.Export(test, "/com/github/guelfey/test", "com.github.guelfey.test")
+ var s string
+ obj := conn.Object(name, "/com/github/guelfey/test")
+ err = obj.Call("com.github.guelfey.test.Test", 0, UnixFD(r.Fd())).Store(&s)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if s != testString {
+ t.Fatal("got", s, "wanted", testString)
+ }
+}