vendor: bump CNI to 1.0.0-pre @ 62e54113
go get github.com/containernetworking/cni@62e54113f44a762923fd2ef3115cda92a2111ca2 go mod vendor go mod tidy Signed-off-by: Dan Williams <dcbw@redhat.com>
This commit is contained in:
parent
fa48f7515b
commit
9e2430bb80
4
go.mod
4
go.mod
@ -7,7 +7,7 @@ require (
|
|||||||
github.com/Microsoft/hcsshim v0.8.6
|
github.com/Microsoft/hcsshim v0.8.6
|
||||||
github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae
|
github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae
|
||||||
github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44
|
github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44
|
||||||
github.com/containernetworking/cni v0.8.1
|
github.com/containernetworking/cni v0.8.1-0.20201216164644-62e54113f44a
|
||||||
github.com/coreos/go-iptables v0.5.0
|
github.com/coreos/go-iptables v0.5.0
|
||||||
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7
|
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7
|
||||||
github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c
|
github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c
|
||||||
@ -17,7 +17,7 @@ require (
|
|||||||
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c
|
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c
|
||||||
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56
|
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56
|
||||||
github.com/mattn/go-shellwords v1.0.3
|
github.com/mattn/go-shellwords v1.0.3
|
||||||
github.com/onsi/ginkgo v1.12.1
|
github.com/onsi/ginkgo v1.13.0
|
||||||
github.com/onsi/gomega v1.10.3
|
github.com/onsi/gomega v1.10.3
|
||||||
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8
|
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8
|
||||||
github.com/sirupsen/logrus v1.0.6 // indirect
|
github.com/sirupsen/logrus v1.0.6 // indirect
|
||||||
|
15
go.sum
15
go.sum
@ -6,8 +6,8 @@ github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae h1:AMzIhMUq
|
|||||||
github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0=
|
github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0=
|
||||||
github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44 h1:y853v6rXx+zefEcjET3JuKAqvhj+FKflQijjeaSv2iA=
|
github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44 h1:y853v6rXx+zefEcjET3JuKAqvhj+FKflQijjeaSv2iA=
|
||||||
github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
|
github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
|
||||||
github.com/containernetworking/cni v0.8.1 h1:7zpDnQ3T3s4ucOuJ/ZCLrYBxzkg0AELFfII3Epo9TmI=
|
github.com/containernetworking/cni v0.8.1-0.20201216164644-62e54113f44a h1:EDko/CXJ2CYF5pFdlTO/qHwkD0IxpSQY+FcTll6A/F4=
|
||||||
github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY=
|
github.com/containernetworking/cni v0.8.1-0.20201216164644-62e54113f44a/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y=
|
||||||
github.com/coreos/go-iptables v0.5.0 h1:mw6SAibtHKZcNzAsOxjoHIG0gy5YFHhypWSSNc6EjbQ=
|
github.com/coreos/go-iptables v0.5.0 h1:mw6SAibtHKZcNzAsOxjoHIG0gy5YFHhypWSSNc6EjbQ=
|
||||||
github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU=
|
github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU=
|
||||||
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 h1:u9SHYsPQNyt5tgDm3YN7+9dYrpK96E5wFilTFWIDZOM=
|
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 h1:u9SHYsPQNyt5tgDm3YN7+9dYrpK96E5wFilTFWIDZOM=
|
||||||
@ -24,6 +24,8 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8
|
|||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
|
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||||
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c h1:RBUpb2b14UnmRHNd2uHz20ZHLDK+SW5Us/vWF5IHRaY=
|
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c h1:RBUpb2b14UnmRHNd2uHz20ZHLDK+SW5Us/vWF5IHRaY=
|
||||||
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
@ -48,13 +50,17 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI
|
|||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ=
|
github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ=
|
||||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||||
|
github.com/onsi/ginkgo v1.13.0 h1:M76yO2HkZASFjXL0HSoZJ1AYEmQxNJmY41Jx1zNUq1Y=
|
||||||
|
github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0=
|
||||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||||
|
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||||
github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA=
|
github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA=
|
||||||
github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc=
|
github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8 h1:2c1EFnZHIPCW8qKWgHMH/fX2PkSabFc5mrVzfUNdg5U=
|
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8 h1:2c1EFnZHIPCW8qKWgHMH/fX2PkSabFc5mrVzfUNdg5U=
|
||||||
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4=
|
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4=
|
||||||
|
github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
|
||||||
github.com/sirupsen/logrus v1.0.6 h1:hcP1GmhGigz/O7h1WVUM5KklBp1JoNS9FggWKdj/j3s=
|
github.com/sirupsen/logrus v1.0.6 h1:hcP1GmhGigz/O7h1WVUM5KklBp1JoNS9FggWKdj/j3s=
|
||||||
github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
|
github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
@ -69,6 +75,7 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnk
|
|||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M=
|
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M=
|
||||||
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
@ -76,13 +83,17 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h
|
|||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637 h1:O5hKNaGxIT4A8OTMnuh6UpmBdI3SAPxlZ3g0olDrJVM=
|
golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637 h1:O5hKNaGxIT4A8OTMnuh6UpmBdI3SAPxlZ3g0olDrJVM=
|
||||||
golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
80
vendor/github.com/containernetworking/cni/pkg/types/020/types.go
generated
vendored
80
vendor/github.com/containernetworking/cni/pkg/types/020/types.go
generated
vendored
@ -22,25 +22,44 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/containernetworking/cni/pkg/types"
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
|
convert "github.com/containernetworking/cni/pkg/types/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
const ImplementedSpecVersion string = "0.2.0"
|
const ImplementedSpecVersion string = "0.2.0"
|
||||||
|
|
||||||
var SupportedVersions = []string{"", "0.1.0", ImplementedSpecVersion}
|
var supportedVersions = []string{"", "0.1.0", ImplementedSpecVersion}
|
||||||
|
|
||||||
|
// Register converters for all versions less than the implemented spec version
|
||||||
|
func init() {
|
||||||
|
convert.RegisterConverter("0.1.0", []string{ImplementedSpecVersion}, convertFrom010)
|
||||||
|
convert.RegisterConverter(ImplementedSpecVersion, []string{"0.1.0"}, convertTo010)
|
||||||
|
|
||||||
|
// Creator
|
||||||
|
convert.RegisterCreator(supportedVersions, NewResult)
|
||||||
|
}
|
||||||
|
|
||||||
// Compatibility types for CNI version 0.1.0 and 0.2.0
|
// Compatibility types for CNI version 0.1.0 and 0.2.0
|
||||||
|
|
||||||
|
// NewResult creates a new Result object from JSON data. The JSON data
|
||||||
|
// must be compatible with the CNI versions implemented by this type.
|
||||||
func NewResult(data []byte) (types.Result, error) {
|
func NewResult(data []byte) (types.Result, error) {
|
||||||
result := &Result{}
|
result := &Result{}
|
||||||
if err := json.Unmarshal(data, result); err != nil {
|
if err := json.Unmarshal(data, result); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
for _, v := range supportedVersions {
|
||||||
|
if result.CNIVersion == v {
|
||||||
return result, nil
|
return result, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("result type supports %v but unmarshalled CNIVersion is %q",
|
||||||
|
supportedVersions, result.CNIVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetResult converts the given Result object to the ImplementedSpecVersion
|
||||||
|
// and returns the concrete type or an error
|
||||||
func GetResult(r types.Result) (*Result, error) {
|
func GetResult(r types.Result) (*Result, error) {
|
||||||
// We expect version 0.1.0/0.2.0 results
|
result020, err := convert.Convert(r, ImplementedSpecVersion)
|
||||||
result020, err := r.GetAsVersion(ImplementedSpecVersion)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -51,6 +70,32 @@ func GetResult(r types.Result) (*Result, error) {
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func convertFrom010(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
if toVersion != "0.2.0" {
|
||||||
|
panic("only converts to version 0.2.0")
|
||||||
|
}
|
||||||
|
fromResult := from.(*Result)
|
||||||
|
return &Result{
|
||||||
|
CNIVersion: ImplementedSpecVersion,
|
||||||
|
IP4: fromResult.IP4.Copy(),
|
||||||
|
IP6: fromResult.IP6.Copy(),
|
||||||
|
DNS: *fromResult.DNS.Copy(),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertTo010(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
if toVersion != "0.1.0" {
|
||||||
|
panic("only converts to version 0.1.0")
|
||||||
|
}
|
||||||
|
fromResult := from.(*Result)
|
||||||
|
return &Result{
|
||||||
|
CNIVersion: "0.1.0",
|
||||||
|
IP4: fromResult.IP4.Copy(),
|
||||||
|
IP6: fromResult.IP6.Copy(),
|
||||||
|
DNS: *fromResult.DNS.Copy(),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Result is what gets returned from the plugin (via stdout) to the caller
|
// Result is what gets returned from the plugin (via stdout) to the caller
|
||||||
type Result struct {
|
type Result struct {
|
||||||
CNIVersion string `json:"cniVersion,omitempty"`
|
CNIVersion string `json:"cniVersion,omitempty"`
|
||||||
@ -60,17 +105,16 @@ type Result struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Result) Version() string {
|
func (r *Result) Version() string {
|
||||||
return ImplementedSpecVersion
|
return r.CNIVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Result) GetAsVersion(version string) (types.Result, error) {
|
func (r *Result) GetAsVersion(version string) (types.Result, error) {
|
||||||
for _, supportedVersion := range SupportedVersions {
|
// If the creator of the result did not set the CNIVersion, assume it
|
||||||
if version == supportedVersion {
|
// should be the highest spec version implemented by this Result
|
||||||
r.CNIVersion = version
|
if r.CNIVersion == "" {
|
||||||
return r, nil
|
r.CNIVersion = ImplementedSpecVersion
|
||||||
}
|
}
|
||||||
}
|
return convert.Convert(r, version)
|
||||||
return nil, fmt.Errorf("cannot convert version %q to %s", SupportedVersions, version)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Result) Print() error {
|
func (r *Result) Print() error {
|
||||||
@ -93,6 +137,22 @@ type IPConfig struct {
|
|||||||
Routes []types.Route
|
Routes []types.Route
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *IPConfig) Copy() *IPConfig {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var routes []types.Route
|
||||||
|
for _, fromRoute := range i.Routes {
|
||||||
|
routes = append(routes, *fromRoute.Copy())
|
||||||
|
}
|
||||||
|
return &IPConfig{
|
||||||
|
IP: i.IP,
|
||||||
|
Gateway: i.Gateway,
|
||||||
|
Routes: routes,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// net.IPNet is not JSON (un)marshallable so this duality is needed
|
// net.IPNet is not JSON (un)marshallable so this duality is needed
|
||||||
// for our custom IPNet type
|
// for our custom IPNet type
|
||||||
|
|
||||||
|
305
vendor/github.com/containernetworking/cni/pkg/types/040/types.go
generated
vendored
Normal file
305
vendor/github.com/containernetworking/cni/pkg/types/040/types.go
generated
vendored
Normal file
@ -0,0 +1,305 @@
|
|||||||
|
// Copyright 2016 CNI authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package types040
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
|
types020 "github.com/containernetworking/cni/pkg/types/020"
|
||||||
|
convert "github.com/containernetworking/cni/pkg/types/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
const ImplementedSpecVersion string = "0.4.0"
|
||||||
|
|
||||||
|
var supportedVersions = []string{"0.3.0", "0.3.1", ImplementedSpecVersion}
|
||||||
|
|
||||||
|
// Register converters for all versions less than the implemented spec version
|
||||||
|
func init() {
|
||||||
|
// Up-converters
|
||||||
|
convert.RegisterConverter("0.1.0", supportedVersions, convertFrom02x)
|
||||||
|
convert.RegisterConverter("0.2.0", supportedVersions, convertFrom02x)
|
||||||
|
convert.RegisterConverter("0.3.0", supportedVersions, convertInternal)
|
||||||
|
convert.RegisterConverter("0.3.1", supportedVersions, convertInternal)
|
||||||
|
|
||||||
|
// Down-converters
|
||||||
|
convert.RegisterConverter("0.4.0", []string{"0.3.0", "0.3.1"}, convertInternal)
|
||||||
|
convert.RegisterConverter("0.4.0", []string{"0.1.0", "0.2.0"}, convertTo02x)
|
||||||
|
convert.RegisterConverter("0.3.1", []string{"0.1.0", "0.2.0"}, convertTo02x)
|
||||||
|
convert.RegisterConverter("0.3.0", []string{"0.1.0", "0.2.0"}, convertTo02x)
|
||||||
|
|
||||||
|
// Creator
|
||||||
|
convert.RegisterCreator(supportedVersions, NewResult)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewResult(data []byte) (types.Result, error) {
|
||||||
|
result := &Result{}
|
||||||
|
if err := json.Unmarshal(data, result); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, v := range supportedVersions {
|
||||||
|
if result.CNIVersion == v {
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("result type supports %v but unmarshalled CNIVersion is %q",
|
||||||
|
supportedVersions, result.CNIVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetResult(r types.Result) (*Result, error) {
|
||||||
|
resultCurrent, err := r.GetAsVersion(ImplementedSpecVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
result, ok := resultCurrent.(*Result)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("failed to convert result")
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewResultFromResult(result types.Result) (*Result, error) {
|
||||||
|
newResult, err := convert.Convert(result, ImplementedSpecVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return newResult.(*Result), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Result is what gets returned from the plugin (via stdout) to the caller
|
||||||
|
type Result struct {
|
||||||
|
CNIVersion string `json:"cniVersion,omitempty"`
|
||||||
|
Interfaces []*Interface `json:"interfaces,omitempty"`
|
||||||
|
IPs []*IPConfig `json:"ips,omitempty"`
|
||||||
|
Routes []*types.Route `json:"routes,omitempty"`
|
||||||
|
DNS types.DNS `json:"dns,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func convert020IPConfig(from *types020.IPConfig, ipVersion string) *IPConfig {
|
||||||
|
return &IPConfig{
|
||||||
|
Version: ipVersion,
|
||||||
|
Address: from.IP,
|
||||||
|
Gateway: from.Gateway,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertFrom02x(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
fromResult := from.(*types020.Result)
|
||||||
|
toResult := &Result{
|
||||||
|
CNIVersion: toVersion,
|
||||||
|
DNS: *fromResult.DNS.Copy(),
|
||||||
|
Routes: []*types.Route{},
|
||||||
|
}
|
||||||
|
if fromResult.IP4 != nil {
|
||||||
|
toResult.IPs = append(toResult.IPs, convert020IPConfig(fromResult.IP4, "4"))
|
||||||
|
for _, fromRoute := range fromResult.IP4.Routes {
|
||||||
|
toResult.Routes = append(toResult.Routes, fromRoute.Copy())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if fromResult.IP6 != nil {
|
||||||
|
toResult.IPs = append(toResult.IPs, convert020IPConfig(fromResult.IP6, "6"))
|
||||||
|
for _, fromRoute := range fromResult.IP6.Routes {
|
||||||
|
toResult.Routes = append(toResult.Routes, fromRoute.Copy())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return toResult, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertInternal(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
fromResult := from.(*Result)
|
||||||
|
toResult := &Result{
|
||||||
|
CNIVersion: toVersion,
|
||||||
|
DNS: *fromResult.DNS.Copy(),
|
||||||
|
Routes: []*types.Route{},
|
||||||
|
}
|
||||||
|
for _, fromIntf := range fromResult.Interfaces {
|
||||||
|
toResult.Interfaces = append(toResult.Interfaces, fromIntf.Copy())
|
||||||
|
}
|
||||||
|
for _, fromIPC := range fromResult.IPs {
|
||||||
|
toResult.IPs = append(toResult.IPs, fromIPC.Copy())
|
||||||
|
}
|
||||||
|
for _, fromRoute := range fromResult.Routes {
|
||||||
|
toResult.Routes = append(toResult.Routes, fromRoute.Copy())
|
||||||
|
}
|
||||||
|
return toResult, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertTo02x(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
fromResult := from.(*Result)
|
||||||
|
toResult := &types020.Result{
|
||||||
|
CNIVersion: toVersion,
|
||||||
|
DNS: *fromResult.DNS.Copy(),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fromIP := range fromResult.IPs {
|
||||||
|
// Only convert the first IP address of each version as 0.2.0
|
||||||
|
// and earlier cannot handle multiple IP addresses
|
||||||
|
if fromIP.Version == "4" && toResult.IP4 == nil {
|
||||||
|
toResult.IP4 = &types020.IPConfig{
|
||||||
|
IP: fromIP.Address,
|
||||||
|
Gateway: fromIP.Gateway,
|
||||||
|
}
|
||||||
|
} else if fromIP.Version == "6" && toResult.IP6 == nil {
|
||||||
|
toResult.IP6 = &types020.IPConfig{
|
||||||
|
IP: fromIP.Address,
|
||||||
|
Gateway: fromIP.Gateway,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if toResult.IP4 != nil && toResult.IP6 != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fromRoute := range fromResult.Routes {
|
||||||
|
is4 := fromRoute.Dst.IP.To4() != nil
|
||||||
|
if is4 && toResult.IP4 != nil {
|
||||||
|
toResult.IP4.Routes = append(toResult.IP4.Routes, types.Route{
|
||||||
|
Dst: fromRoute.Dst,
|
||||||
|
GW: fromRoute.GW,
|
||||||
|
})
|
||||||
|
} else if !is4 && toResult.IP6 != nil {
|
||||||
|
toResult.IP6.Routes = append(toResult.IP6.Routes, types.Route{
|
||||||
|
Dst: fromRoute.Dst,
|
||||||
|
GW: fromRoute.GW,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if toResult.IP4 == nil && toResult.IP6 == nil {
|
||||||
|
return nil, fmt.Errorf("cannot convert: no valid IP addresses")
|
||||||
|
}
|
||||||
|
|
||||||
|
return toResult, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) Version() string {
|
||||||
|
return r.CNIVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) GetAsVersion(version string) (types.Result, error) {
|
||||||
|
// If the creator of the result did not set the CNIVersion, assume it
|
||||||
|
// should be the highest spec version implemented by this Result
|
||||||
|
if r.CNIVersion == "" {
|
||||||
|
r.CNIVersion = ImplementedSpecVersion
|
||||||
|
}
|
||||||
|
return convert.Convert(r, version)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) Print() error {
|
||||||
|
return r.PrintTo(os.Stdout)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) PrintTo(writer io.Writer) error {
|
||||||
|
data, err := json.MarshalIndent(r, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
_, err = writer.Write(data)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Interface contains values about the created interfaces
|
||||||
|
type Interface struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Mac string `json:"mac,omitempty"`
|
||||||
|
Sandbox string `json:"sandbox,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Interface) String() string {
|
||||||
|
return fmt.Sprintf("%+v", *i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Interface) Copy() *Interface {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
newIntf := *i
|
||||||
|
return &newIntf
|
||||||
|
}
|
||||||
|
|
||||||
|
// Int returns a pointer to the int value passed in. Used to
|
||||||
|
// set the IPConfig.Interface field.
|
||||||
|
func Int(v int) *int {
|
||||||
|
return &v
|
||||||
|
}
|
||||||
|
|
||||||
|
// IPConfig contains values necessary to configure an IP address on an interface
|
||||||
|
type IPConfig struct {
|
||||||
|
// IP version, either "4" or "6"
|
||||||
|
Version string
|
||||||
|
// Index into Result structs Interfaces list
|
||||||
|
Interface *int
|
||||||
|
Address net.IPNet
|
||||||
|
Gateway net.IP
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *IPConfig) String() string {
|
||||||
|
return fmt.Sprintf("%+v", *i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *IPConfig) Copy() *IPConfig {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ipc := &IPConfig{
|
||||||
|
Version: i.Version,
|
||||||
|
Address: i.Address,
|
||||||
|
Gateway: i.Gateway,
|
||||||
|
}
|
||||||
|
if i.Interface != nil {
|
||||||
|
intf := *i.Interface
|
||||||
|
ipc.Interface = &intf
|
||||||
|
}
|
||||||
|
return ipc
|
||||||
|
}
|
||||||
|
|
||||||
|
// JSON (un)marshallable types
|
||||||
|
type ipConfig struct {
|
||||||
|
Version string `json:"version"`
|
||||||
|
Interface *int `json:"interface,omitempty"`
|
||||||
|
Address types.IPNet `json:"address"`
|
||||||
|
Gateway net.IP `json:"gateway,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *IPConfig) MarshalJSON() ([]byte, error) {
|
||||||
|
ipc := ipConfig{
|
||||||
|
Version: c.Version,
|
||||||
|
Interface: c.Interface,
|
||||||
|
Address: types.IPNet(c.Address),
|
||||||
|
Gateway: c.Gateway,
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(ipc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *IPConfig) UnmarshalJSON(data []byte) error {
|
||||||
|
ipc := ipConfig{}
|
||||||
|
if err := json.Unmarshal(data, &ipc); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Version = ipc.Version
|
||||||
|
c.Interface = ipc.Interface
|
||||||
|
c.Address = net.IPNet(ipc.Address)
|
||||||
|
c.Gateway = ipc.Gateway
|
||||||
|
return nil
|
||||||
|
}
|
307
vendor/github.com/containernetworking/cni/pkg/types/100/types.go
generated
vendored
Normal file
307
vendor/github.com/containernetworking/cni/pkg/types/100/types.go
generated
vendored
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
// Copyright 2016 CNI authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package types100
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
|
types040 "github.com/containernetworking/cni/pkg/types/040"
|
||||||
|
convert "github.com/containernetworking/cni/pkg/types/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
const ImplementedSpecVersion string = "1.0.0"
|
||||||
|
|
||||||
|
var supportedVersions = []string{ImplementedSpecVersion}
|
||||||
|
|
||||||
|
// Register converters for all versions less than the implemented spec version
|
||||||
|
func init() {
|
||||||
|
// Up-converters
|
||||||
|
convert.RegisterConverter("0.1.0", supportedVersions, convertFrom02x)
|
||||||
|
convert.RegisterConverter("0.2.0", supportedVersions, convertFrom02x)
|
||||||
|
convert.RegisterConverter("0.3.0", supportedVersions, convertFrom04x)
|
||||||
|
convert.RegisterConverter("0.3.1", supportedVersions, convertFrom04x)
|
||||||
|
convert.RegisterConverter("0.4.0", supportedVersions, convertFrom04x)
|
||||||
|
|
||||||
|
// Down-converters
|
||||||
|
convert.RegisterConverter("1.0.0", []string{"0.3.0", "0.3.1", "0.4.0"}, convertTo04x)
|
||||||
|
convert.RegisterConverter("1.0.0", []string{"0.1.0", "0.2.0"}, convertTo02x)
|
||||||
|
|
||||||
|
// Creator
|
||||||
|
convert.RegisterCreator(supportedVersions, NewResult)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewResult(data []byte) (types.Result, error) {
|
||||||
|
result := &Result{}
|
||||||
|
if err := json.Unmarshal(data, result); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, v := range supportedVersions {
|
||||||
|
if result.CNIVersion == v {
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("result type supports %v but unmarshalled CNIVersion is %q",
|
||||||
|
supportedVersions, result.CNIVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetResult(r types.Result) (*Result, error) {
|
||||||
|
resultCurrent, err := r.GetAsVersion(ImplementedSpecVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
result, ok := resultCurrent.(*Result)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("failed to convert result")
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewResultFromResult(result types.Result) (*Result, error) {
|
||||||
|
newResult, err := convert.Convert(result, ImplementedSpecVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return newResult.(*Result), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Result is what gets returned from the plugin (via stdout) to the caller
|
||||||
|
type Result struct {
|
||||||
|
CNIVersion string `json:"cniVersion,omitempty"`
|
||||||
|
Interfaces []*Interface `json:"interfaces,omitempty"`
|
||||||
|
IPs []*IPConfig `json:"ips,omitempty"`
|
||||||
|
Routes []*types.Route `json:"routes,omitempty"`
|
||||||
|
DNS types.DNS `json:"dns,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertFrom02x(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
result040, err := convert.Convert(from, "0.4.0")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
result100, err := convertFrom04x(result040, ImplementedSpecVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result100, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertIPConfigFrom040(from *types040.IPConfig) *IPConfig {
|
||||||
|
to := &IPConfig{
|
||||||
|
Address: from.Address,
|
||||||
|
Gateway: from.Gateway,
|
||||||
|
}
|
||||||
|
if from.Interface != nil {
|
||||||
|
intf := *from.Interface
|
||||||
|
to.Interface = &intf
|
||||||
|
}
|
||||||
|
return to
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertInterfaceFrom040(from *types040.Interface) *Interface {
|
||||||
|
return &Interface{
|
||||||
|
Name: from.Name,
|
||||||
|
Mac: from.Mac,
|
||||||
|
Sandbox: from.Sandbox,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertFrom04x(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
fromResult := from.(*types040.Result)
|
||||||
|
toResult := &Result{
|
||||||
|
CNIVersion: toVersion,
|
||||||
|
DNS: *fromResult.DNS.Copy(),
|
||||||
|
Routes: []*types.Route{},
|
||||||
|
}
|
||||||
|
for _, fromIntf := range fromResult.Interfaces {
|
||||||
|
toResult.Interfaces = append(toResult.Interfaces, convertInterfaceFrom040(fromIntf))
|
||||||
|
}
|
||||||
|
for _, fromIPC := range fromResult.IPs {
|
||||||
|
toResult.IPs = append(toResult.IPs, convertIPConfigFrom040(fromIPC))
|
||||||
|
}
|
||||||
|
for _, fromRoute := range fromResult.Routes {
|
||||||
|
toResult.Routes = append(toResult.Routes, fromRoute.Copy())
|
||||||
|
}
|
||||||
|
return toResult, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertIPConfigTo040(from *IPConfig) *types040.IPConfig {
|
||||||
|
version := "6"
|
||||||
|
if from.Address.IP.To4() != nil {
|
||||||
|
version = "4"
|
||||||
|
}
|
||||||
|
to := &types040.IPConfig{
|
||||||
|
Version: version,
|
||||||
|
Address: from.Address,
|
||||||
|
Gateway: from.Gateway,
|
||||||
|
}
|
||||||
|
if from.Interface != nil {
|
||||||
|
intf := *from.Interface
|
||||||
|
to.Interface = &intf
|
||||||
|
}
|
||||||
|
return to
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertInterfaceTo040(from *Interface) *types040.Interface {
|
||||||
|
return &types040.Interface{
|
||||||
|
Name: from.Name,
|
||||||
|
Mac: from.Mac,
|
||||||
|
Sandbox: from.Sandbox,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertTo04x(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
fromResult := from.(*Result)
|
||||||
|
toResult := &types040.Result{
|
||||||
|
CNIVersion: toVersion,
|
||||||
|
DNS: *fromResult.DNS.Copy(),
|
||||||
|
Routes: []*types.Route{},
|
||||||
|
}
|
||||||
|
for _, fromIntf := range fromResult.Interfaces {
|
||||||
|
toResult.Interfaces = append(toResult.Interfaces, convertInterfaceTo040(fromIntf))
|
||||||
|
}
|
||||||
|
for _, fromIPC := range fromResult.IPs {
|
||||||
|
toResult.IPs = append(toResult.IPs, convertIPConfigTo040(fromIPC))
|
||||||
|
}
|
||||||
|
for _, fromRoute := range fromResult.Routes {
|
||||||
|
toResult.Routes = append(toResult.Routes, fromRoute.Copy())
|
||||||
|
}
|
||||||
|
return toResult, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertTo02x(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
// First convert to 0.4.0
|
||||||
|
result040, err := convertTo04x(from, "0.4.0")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
result02x, err := convert.Convert(result040, toVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result02x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) Version() string {
|
||||||
|
return r.CNIVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) GetAsVersion(version string) (types.Result, error) {
|
||||||
|
// If the creator of the result did not set the CNIVersion, assume it
|
||||||
|
// should be the highest spec version implemented by this Result
|
||||||
|
if r.CNIVersion == "" {
|
||||||
|
r.CNIVersion = ImplementedSpecVersion
|
||||||
|
}
|
||||||
|
return convert.Convert(r, version)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) Print() error {
|
||||||
|
return r.PrintTo(os.Stdout)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Result) PrintTo(writer io.Writer) error {
|
||||||
|
data, err := json.MarshalIndent(r, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
_, err = writer.Write(data)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Interface contains values about the created interfaces
|
||||||
|
type Interface struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Mac string `json:"mac,omitempty"`
|
||||||
|
Sandbox string `json:"sandbox,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Interface) String() string {
|
||||||
|
return fmt.Sprintf("%+v", *i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Interface) Copy() *Interface {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
newIntf := *i
|
||||||
|
return &newIntf
|
||||||
|
}
|
||||||
|
|
||||||
|
// Int returns a pointer to the int value passed in. Used to
|
||||||
|
// set the IPConfig.Interface field.
|
||||||
|
func Int(v int) *int {
|
||||||
|
return &v
|
||||||
|
}
|
||||||
|
|
||||||
|
// IPConfig contains values necessary to configure an IP address on an interface
|
||||||
|
type IPConfig struct {
|
||||||
|
// Index into Result structs Interfaces list
|
||||||
|
Interface *int
|
||||||
|
Address net.IPNet
|
||||||
|
Gateway net.IP
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *IPConfig) String() string {
|
||||||
|
return fmt.Sprintf("%+v", *i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *IPConfig) Copy() *IPConfig {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ipc := &IPConfig{
|
||||||
|
Address: i.Address,
|
||||||
|
Gateway: i.Gateway,
|
||||||
|
}
|
||||||
|
if i.Interface != nil {
|
||||||
|
intf := *i.Interface
|
||||||
|
ipc.Interface = &intf
|
||||||
|
}
|
||||||
|
return ipc
|
||||||
|
}
|
||||||
|
|
||||||
|
// JSON (un)marshallable types
|
||||||
|
type ipConfig struct {
|
||||||
|
Interface *int `json:"interface,omitempty"`
|
||||||
|
Address types.IPNet `json:"address"`
|
||||||
|
Gateway net.IP `json:"gateway,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *IPConfig) MarshalJSON() ([]byte, error) {
|
||||||
|
ipc := ipConfig{
|
||||||
|
Interface: c.Interface,
|
||||||
|
Address: types.IPNet(c.Address),
|
||||||
|
Gateway: c.Gateway,
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(ipc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *IPConfig) UnmarshalJSON(data []byte) error {
|
||||||
|
ipc := ipConfig{}
|
||||||
|
if err := json.Unmarshal(data, &ipc); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Interface = ipc.Interface
|
||||||
|
c.Address = net.IPNet(ipc.Address)
|
||||||
|
c.Gateway = ipc.Gateway
|
||||||
|
return nil
|
||||||
|
}
|
26
vendor/github.com/containernetworking/cni/pkg/types/create/create.go
generated
vendored
Normal file
26
vendor/github.com/containernetworking/cni/pkg/types/create/create.go
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// Copyright 2016 CNI authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package create
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
|
convert "github.com/containernetworking/cni/pkg/types/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Create creates a CNI Result using the given JSON, or an error if the creation
|
||||||
|
// could not be performed
|
||||||
|
func Create(version string, bytes []byte) (types.Result, error) {
|
||||||
|
return convert.Create(version, bytes)
|
||||||
|
}
|
276
vendor/github.com/containernetworking/cni/pkg/types/current/types.go
generated
vendored
276
vendor/github.com/containernetworking/cni/pkg/types/current/types.go
generated
vendored
@ -1,276 +0,0 @@
|
|||||||
// Copyright 2016 CNI authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package current
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"net"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/containernetworking/cni/pkg/types"
|
|
||||||
"github.com/containernetworking/cni/pkg/types/020"
|
|
||||||
)
|
|
||||||
|
|
||||||
const ImplementedSpecVersion string = "0.4.0"
|
|
||||||
|
|
||||||
var SupportedVersions = []string{"0.3.0", "0.3.1", ImplementedSpecVersion}
|
|
||||||
|
|
||||||
func NewResult(data []byte) (types.Result, error) {
|
|
||||||
result := &Result{}
|
|
||||||
if err := json.Unmarshal(data, result); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetResult(r types.Result) (*Result, error) {
|
|
||||||
resultCurrent, err := r.GetAsVersion(ImplementedSpecVersion)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
result, ok := resultCurrent.(*Result)
|
|
||||||
if !ok {
|
|
||||||
return nil, fmt.Errorf("failed to convert result")
|
|
||||||
}
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var resultConverters = []struct {
|
|
||||||
versions []string
|
|
||||||
convert func(types.Result) (*Result, error)
|
|
||||||
}{
|
|
||||||
{types020.SupportedVersions, convertFrom020},
|
|
||||||
{SupportedVersions, convertFrom030},
|
|
||||||
}
|
|
||||||
|
|
||||||
func convertFrom020(result types.Result) (*Result, error) {
|
|
||||||
oldResult, err := types020.GetResult(result)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
newResult := &Result{
|
|
||||||
CNIVersion: ImplementedSpecVersion,
|
|
||||||
DNS: oldResult.DNS,
|
|
||||||
Routes: []*types.Route{},
|
|
||||||
}
|
|
||||||
|
|
||||||
if oldResult.IP4 != nil {
|
|
||||||
newResult.IPs = append(newResult.IPs, &IPConfig{
|
|
||||||
Version: "4",
|
|
||||||
Address: oldResult.IP4.IP,
|
|
||||||
Gateway: oldResult.IP4.Gateway,
|
|
||||||
})
|
|
||||||
for _, route := range oldResult.IP4.Routes {
|
|
||||||
newResult.Routes = append(newResult.Routes, &types.Route{
|
|
||||||
Dst: route.Dst,
|
|
||||||
GW: route.GW,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if oldResult.IP6 != nil {
|
|
||||||
newResult.IPs = append(newResult.IPs, &IPConfig{
|
|
||||||
Version: "6",
|
|
||||||
Address: oldResult.IP6.IP,
|
|
||||||
Gateway: oldResult.IP6.Gateway,
|
|
||||||
})
|
|
||||||
for _, route := range oldResult.IP6.Routes {
|
|
||||||
newResult.Routes = append(newResult.Routes, &types.Route{
|
|
||||||
Dst: route.Dst,
|
|
||||||
GW: route.GW,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return newResult, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func convertFrom030(result types.Result) (*Result, error) {
|
|
||||||
newResult, ok := result.(*Result)
|
|
||||||
if !ok {
|
|
||||||
return nil, fmt.Errorf("failed to convert result")
|
|
||||||
}
|
|
||||||
newResult.CNIVersion = ImplementedSpecVersion
|
|
||||||
return newResult, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewResultFromResult(result types.Result) (*Result, error) {
|
|
||||||
version := result.Version()
|
|
||||||
for _, converter := range resultConverters {
|
|
||||||
for _, supportedVersion := range converter.versions {
|
|
||||||
if version == supportedVersion {
|
|
||||||
return converter.convert(result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, fmt.Errorf("unsupported CNI result22 version %q", version)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Result is what gets returned from the plugin (via stdout) to the caller
|
|
||||||
type Result struct {
|
|
||||||
CNIVersion string `json:"cniVersion,omitempty"`
|
|
||||||
Interfaces []*Interface `json:"interfaces,omitempty"`
|
|
||||||
IPs []*IPConfig `json:"ips,omitempty"`
|
|
||||||
Routes []*types.Route `json:"routes,omitempty"`
|
|
||||||
DNS types.DNS `json:"dns,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert to the older 0.2.0 CNI spec Result type
|
|
||||||
func (r *Result) convertTo020() (*types020.Result, error) {
|
|
||||||
oldResult := &types020.Result{
|
|
||||||
CNIVersion: types020.ImplementedSpecVersion,
|
|
||||||
DNS: r.DNS,
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, ip := range r.IPs {
|
|
||||||
// Only convert the first IP address of each version as 0.2.0
|
|
||||||
// and earlier cannot handle multiple IP addresses
|
|
||||||
if ip.Version == "4" && oldResult.IP4 == nil {
|
|
||||||
oldResult.IP4 = &types020.IPConfig{
|
|
||||||
IP: ip.Address,
|
|
||||||
Gateway: ip.Gateway,
|
|
||||||
}
|
|
||||||
} else if ip.Version == "6" && oldResult.IP6 == nil {
|
|
||||||
oldResult.IP6 = &types020.IPConfig{
|
|
||||||
IP: ip.Address,
|
|
||||||
Gateway: ip.Gateway,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if oldResult.IP4 != nil && oldResult.IP6 != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, route := range r.Routes {
|
|
||||||
is4 := route.Dst.IP.To4() != nil
|
|
||||||
if is4 && oldResult.IP4 != nil {
|
|
||||||
oldResult.IP4.Routes = append(oldResult.IP4.Routes, types.Route{
|
|
||||||
Dst: route.Dst,
|
|
||||||
GW: route.GW,
|
|
||||||
})
|
|
||||||
} else if !is4 && oldResult.IP6 != nil {
|
|
||||||
oldResult.IP6.Routes = append(oldResult.IP6.Routes, types.Route{
|
|
||||||
Dst: route.Dst,
|
|
||||||
GW: route.GW,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if oldResult.IP4 == nil && oldResult.IP6 == nil {
|
|
||||||
return nil, fmt.Errorf("cannot convert: no valid IP addresses")
|
|
||||||
}
|
|
||||||
|
|
||||||
return oldResult, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Result) Version() string {
|
|
||||||
return ImplementedSpecVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Result) GetAsVersion(version string) (types.Result, error) {
|
|
||||||
switch version {
|
|
||||||
case "0.3.0", "0.3.1", ImplementedSpecVersion:
|
|
||||||
r.CNIVersion = version
|
|
||||||
return r, nil
|
|
||||||
case types020.SupportedVersions[0], types020.SupportedVersions[1], types020.SupportedVersions[2]:
|
|
||||||
return r.convertTo020()
|
|
||||||
}
|
|
||||||
return nil, fmt.Errorf("cannot convert version 0.3.x to %q", version)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Result) Print() error {
|
|
||||||
return r.PrintTo(os.Stdout)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Result) PrintTo(writer io.Writer) error {
|
|
||||||
data, err := json.MarshalIndent(r, "", " ")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
_, err = writer.Write(data)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert this old version result to the current CNI version result
|
|
||||||
func (r *Result) Convert() (*Result, error) {
|
|
||||||
return r, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Interface contains values about the created interfaces
|
|
||||||
type Interface struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Mac string `json:"mac,omitempty"`
|
|
||||||
Sandbox string `json:"sandbox,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Interface) String() string {
|
|
||||||
return fmt.Sprintf("%+v", *i)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Int returns a pointer to the int value passed in. Used to
|
|
||||||
// set the IPConfig.Interface field.
|
|
||||||
func Int(v int) *int {
|
|
||||||
return &v
|
|
||||||
}
|
|
||||||
|
|
||||||
// IPConfig contains values necessary to configure an IP address on an interface
|
|
||||||
type IPConfig struct {
|
|
||||||
// IP version, either "4" or "6"
|
|
||||||
Version string
|
|
||||||
// Index into Result structs Interfaces list
|
|
||||||
Interface *int
|
|
||||||
Address net.IPNet
|
|
||||||
Gateway net.IP
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *IPConfig) String() string {
|
|
||||||
return fmt.Sprintf("%+v", *i)
|
|
||||||
}
|
|
||||||
|
|
||||||
// JSON (un)marshallable types
|
|
||||||
type ipConfig struct {
|
|
||||||
Version string `json:"version"`
|
|
||||||
Interface *int `json:"interface,omitempty"`
|
|
||||||
Address types.IPNet `json:"address"`
|
|
||||||
Gateway net.IP `json:"gateway,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *IPConfig) MarshalJSON() ([]byte, error) {
|
|
||||||
ipc := ipConfig{
|
|
||||||
Version: c.Version,
|
|
||||||
Interface: c.Interface,
|
|
||||||
Address: types.IPNet(c.Address),
|
|
||||||
Gateway: c.Gateway,
|
|
||||||
}
|
|
||||||
|
|
||||||
return json.Marshal(ipc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *IPConfig) UnmarshalJSON(data []byte) error {
|
|
||||||
ipc := ipConfig{}
|
|
||||||
if err := json.Unmarshal(data, &ipc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Version = ipc.Version
|
|
||||||
c.Interface = ipc.Interface
|
|
||||||
c.Address = net.IPNet(ipc.Address)
|
|
||||||
c.Gateway = ipc.Gateway
|
|
||||||
return nil
|
|
||||||
}
|
|
88
vendor/github.com/containernetworking/cni/pkg/types/internal/convert.go
generated
vendored
Normal file
88
vendor/github.com/containernetworking/cni/pkg/types/internal/convert.go
generated
vendored
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
// Copyright 2016 CNI authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package convert
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ConvertFn should convert from the given arbitrary Result type into a
|
||||||
|
// Result implementing CNI specification version passed in toVersion.
|
||||||
|
// The function is guaranteed to be passed a Result type matching the
|
||||||
|
// fromVersion it was registered with, and is guaranteed to be
|
||||||
|
// passed a toVersion matching one of the toVersions it was registered with.
|
||||||
|
type ConvertFn func(from types.Result, toVersion string) (types.Result, error)
|
||||||
|
|
||||||
|
type converter struct {
|
||||||
|
// fromVersion is the CNI Result spec version that convertFn accepts
|
||||||
|
fromVersion string
|
||||||
|
// toVersions is a list of versions that convertFn can convert to
|
||||||
|
toVersions []string
|
||||||
|
convertFn ConvertFn
|
||||||
|
}
|
||||||
|
|
||||||
|
var converters []*converter
|
||||||
|
|
||||||
|
func findConverter(fromVersion, toVersion string) *converter {
|
||||||
|
for _, c := range converters {
|
||||||
|
if c.fromVersion == fromVersion {
|
||||||
|
for _, v := range c.toVersions {
|
||||||
|
if v == toVersion {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert converts a CNI Result to the requested CNI specification version,
|
||||||
|
// or returns an error if the converstion could not be performed or failed
|
||||||
|
func Convert(from types.Result, toVersion string) (types.Result, error) {
|
||||||
|
fromVersion := from.Version()
|
||||||
|
|
||||||
|
// Shortcut for same version
|
||||||
|
if fromVersion == toVersion {
|
||||||
|
return from, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise find the right converter
|
||||||
|
c := findConverter(fromVersion, toVersion)
|
||||||
|
if c == nil {
|
||||||
|
return nil, fmt.Errorf("no converter for CNI result version %s to %s",
|
||||||
|
fromVersion, toVersion)
|
||||||
|
}
|
||||||
|
return c.convertFn(from, toVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterConverter registers a CNI Result converter. SHOULD NOT BE CALLED
|
||||||
|
// EXCEPT FROM CNI ITSELF.
|
||||||
|
func RegisterConverter(fromVersion string, toVersions []string, convertFn ConvertFn) {
|
||||||
|
// Make sure there is no converter already registered for these
|
||||||
|
// from and to versions
|
||||||
|
for _, v := range toVersions {
|
||||||
|
if findConverter(fromVersion, v) != nil {
|
||||||
|
panic(fmt.Sprintf("converter already registered for %s to %s",
|
||||||
|
fromVersion, v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
converters = append(converters, &converter{
|
||||||
|
fromVersion: fromVersion,
|
||||||
|
toVersions: toVersions,
|
||||||
|
convertFn: convertFn,
|
||||||
|
})
|
||||||
|
}
|
66
vendor/github.com/containernetworking/cni/pkg/types/internal/create.go
generated
vendored
Normal file
66
vendor/github.com/containernetworking/cni/pkg/types/internal/create.go
generated
vendored
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
// Copyright 2016 CNI authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package convert
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ResultFactoryFunc func([]byte) (types.Result, error)
|
||||||
|
|
||||||
|
type creator struct {
|
||||||
|
// CNI Result spec versions that createFn can create a Result for
|
||||||
|
versions []string
|
||||||
|
createFn ResultFactoryFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
var creators []*creator
|
||||||
|
|
||||||
|
func findCreator(version string) *creator {
|
||||||
|
for _, c := range creators {
|
||||||
|
for _, v := range c.versions {
|
||||||
|
if v == version {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create creates a CNI Result using the given JSON, or an error if the creation
|
||||||
|
// could not be performed
|
||||||
|
func Create(version string, bytes []byte) (types.Result, error) {
|
||||||
|
if c := findCreator(version); c != nil {
|
||||||
|
return c.createFn(bytes)
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("unsupported CNI result version %q", version)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterCreator registers a CNI Result creator. SHOULD NOT BE CALLED
|
||||||
|
// EXCEPT FROM CNI ITSELF.
|
||||||
|
func RegisterCreator(versions []string, createFn ResultFactoryFunc) {
|
||||||
|
// Make sure there is no creator already registered for these versions
|
||||||
|
for _, v := range versions {
|
||||||
|
if findCreator(v) != nil {
|
||||||
|
panic(fmt.Sprintf("creator already registered for %s", v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
creators = append(creators, &creator{
|
||||||
|
versions: versions,
|
||||||
|
createFn: createFn,
|
||||||
|
})
|
||||||
|
}
|
31
vendor/github.com/containernetworking/cni/pkg/types/types.go
generated
vendored
31
vendor/github.com/containernetworking/cni/pkg/types/types.go
generated
vendored
@ -83,8 +83,6 @@ type NetConfList struct {
|
|||||||
Plugins []*NetConf `json:"plugins,omitempty"`
|
Plugins []*NetConf `json:"plugins,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ResultFactoryFunc func([]byte) (Result, error)
|
|
||||||
|
|
||||||
// Result is an interface that provides the result of plugin execution
|
// Result is an interface that provides the result of plugin execution
|
||||||
type Result interface {
|
type Result interface {
|
||||||
// The highest CNI specification result version the result supports
|
// The highest CNI specification result version the result supports
|
||||||
@ -118,6 +116,24 @@ type DNS struct {
|
|||||||
Options []string `json:"options,omitempty"`
|
Options []string `json:"options,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *DNS) Copy() *DNS {
|
||||||
|
if d == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
to := &DNS{Domain: d.Domain}
|
||||||
|
for _, ns := range d.Nameservers {
|
||||||
|
to.Nameservers = append(to.Nameservers, ns)
|
||||||
|
}
|
||||||
|
for _, s := range d.Search {
|
||||||
|
to.Search = append(to.Search, s)
|
||||||
|
}
|
||||||
|
for _, o := range d.Options {
|
||||||
|
to.Options = append(to.Options, o)
|
||||||
|
}
|
||||||
|
return to
|
||||||
|
}
|
||||||
|
|
||||||
type Route struct {
|
type Route struct {
|
||||||
Dst net.IPNet
|
Dst net.IPNet
|
||||||
GW net.IP
|
GW net.IP
|
||||||
@ -127,6 +143,17 @@ func (r *Route) String() string {
|
|||||||
return fmt.Sprintf("%+v", *r)
|
return fmt.Sprintf("%+v", *r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Route) Copy() *Route {
|
||||||
|
if r == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Route{
|
||||||
|
Dst: r.Dst,
|
||||||
|
GW: r.GW,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Well known error codes
|
// Well known error codes
|
||||||
// see https://github.com/containernetworking/cni/blob/master/SPEC.md#well-known-error-codes
|
// see https://github.com/containernetworking/cni/blob/master/SPEC.md#well-known-error-codes
|
||||||
const (
|
const (
|
||||||
|
34
vendor/github.com/containernetworking/cni/pkg/version/version.go
generated
vendored
34
vendor/github.com/containernetworking/cni/pkg/version/version.go
generated
vendored
@ -19,13 +19,13 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/containernetworking/cni/pkg/types"
|
"github.com/containernetworking/cni/pkg/types"
|
||||||
"github.com/containernetworking/cni/pkg/types/020"
|
"github.com/containernetworking/cni/pkg/types/100"
|
||||||
"github.com/containernetworking/cni/pkg/types/current"
|
"github.com/containernetworking/cni/pkg/types/create"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Current reports the version of the CNI spec implemented by this library
|
// Current reports the version of the CNI spec implemented by this library
|
||||||
func Current() string {
|
func Current() string {
|
||||||
return "0.4.0"
|
return types100.ImplementedSpecVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
// Legacy PluginInfo describes a plugin that is backwards compatible with the
|
// Legacy PluginInfo describes a plugin that is backwards compatible with the
|
||||||
@ -36,29 +36,12 @@ func Current() string {
|
|||||||
// Any future CNI spec versions which meet this definition should be added to
|
// Any future CNI spec versions which meet this definition should be added to
|
||||||
// this list.
|
// this list.
|
||||||
var Legacy = PluginSupports("0.1.0", "0.2.0")
|
var Legacy = PluginSupports("0.1.0", "0.2.0")
|
||||||
var All = PluginSupports("0.1.0", "0.2.0", "0.3.0", "0.3.1", "0.4.0")
|
var All = PluginSupports("0.1.0", "0.2.0", "0.3.0", "0.3.1", "0.4.0", "1.0.0")
|
||||||
|
|
||||||
var resultFactories = []struct {
|
|
||||||
supportedVersions []string
|
|
||||||
newResult types.ResultFactoryFunc
|
|
||||||
}{
|
|
||||||
{current.SupportedVersions, current.NewResult},
|
|
||||||
{types020.SupportedVersions, types020.NewResult},
|
|
||||||
}
|
|
||||||
|
|
||||||
// Finds a Result object matching the requested version (if any) and asks
|
// Finds a Result object matching the requested version (if any) and asks
|
||||||
// that object to parse the plugin result, returning an error if parsing failed.
|
// that object to parse the plugin result, returning an error if parsing failed.
|
||||||
func NewResult(version string, resultBytes []byte) (types.Result, error) {
|
func NewResult(version string, resultBytes []byte) (types.Result, error) {
|
||||||
reconciler := &Reconciler{}
|
return create.Create(version, resultBytes)
|
||||||
for _, resultFactory := range resultFactories {
|
|
||||||
err := reconciler.CheckRaw(version, resultFactory.supportedVersions)
|
|
||||||
if err == nil {
|
|
||||||
// Result supports this version
|
|
||||||
return resultFactory.newResult(resultBytes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, fmt.Errorf("unsupported CNI result version %q", version)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParsePrevResult parses a prevResult in a NetConf structure and sets
|
// ParsePrevResult parses a prevResult in a NetConf structure and sets
|
||||||
@ -68,6 +51,13 @@ func ParsePrevResult(conf *types.NetConf) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prior to 1.0.0, Result types may not marshal a CNIVersion. Since the
|
||||||
|
// result version must match the config version, if the Result's version
|
||||||
|
// is empty, inject the config version.
|
||||||
|
if ver, ok := conf.RawPrevResult["CNIVersion"]; !ok || ver == "" {
|
||||||
|
conf.RawPrevResult["CNIVersion"] = conf.CNIVersion
|
||||||
|
}
|
||||||
|
|
||||||
resultBytes, err := json.Marshal(conf.RawPrevResult)
|
resultBytes, err := json.Marshal(conf.RawPrevResult)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not serialize prevResult: %v", err)
|
return fmt.Errorf("could not serialize prevResult: %v", err)
|
||||||
|
9
vendor/github.com/fsnotify/fsnotify/.editorconfig
generated
vendored
9
vendor/github.com/fsnotify/fsnotify/.editorconfig
generated
vendored
@ -1,5 +1,12 @@
|
|||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*.go]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.{yml,yaml}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
1
vendor/github.com/fsnotify/fsnotify/.gitattributes
generated
vendored
Normal file
1
vendor/github.com/fsnotify/fsnotify/.gitattributes
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
go.sum linguist-generated
|
20
vendor/github.com/fsnotify/fsnotify/.travis.yml
generated
vendored
20
vendor/github.com/fsnotify/fsnotify/.travis.yml
generated
vendored
@ -2,29 +2,35 @@ sudo: false
|
|||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.8.x
|
- "stable"
|
||||||
- 1.9.x
|
- "1.11.x"
|
||||||
- tip
|
- "1.10.x"
|
||||||
|
- "1.9.x"
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
|
include:
|
||||||
|
- go: "stable"
|
||||||
|
env: GOLINT=true
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- go: tip
|
- go: tip
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
|
|
||||||
before_script:
|
|
||||||
- go get -u github.com/golang/lint/golint
|
before_install:
|
||||||
|
- if [ ! -z "${GOLINT}" ]; then go get -u golang.org/x/lint/golint; fi
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- go test -v --race ./...
|
- go test --race ./...
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
- test -z "$(gofmt -s -l -w . | tee /dev/stderr)"
|
- test -z "$(gofmt -s -l -w . | tee /dev/stderr)"
|
||||||
- test -z "$(golint ./... | tee /dev/stderr)"
|
- if [ ! -z "${GOLINT}" ]; then echo running golint; golint --set_exit_status ./...; else echo skipping golint; fi
|
||||||
- go vet ./...
|
- go vet ./...
|
||||||
|
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
- osx
|
- osx
|
||||||
|
- windows
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
2
vendor/github.com/fsnotify/fsnotify/LICENSE
generated
vendored
2
vendor/github.com/fsnotify/fsnotify/LICENSE
generated
vendored
@ -1,5 +1,5 @@
|
|||||||
Copyright (c) 2012 The Go Authors. All rights reserved.
|
Copyright (c) 2012 The Go Authors. All rights reserved.
|
||||||
Copyright (c) 2012 fsnotify Authors. All rights reserved.
|
Copyright (c) 2012-2019 fsnotify Authors. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are
|
modification, are permitted provided that the following conditions are
|
||||||
|
71
vendor/github.com/fsnotify/fsnotify/README.md
generated
vendored
71
vendor/github.com/fsnotify/fsnotify/README.md
generated
vendored
@ -10,16 +10,16 @@ go get -u golang.org/x/sys/...
|
|||||||
|
|
||||||
Cross platform: Windows, Linux, BSD and macOS.
|
Cross platform: Windows, Linux, BSD and macOS.
|
||||||
|
|
||||||
|Adapter |OS |Status |
|
| Adapter | OS | Status |
|
||||||
|----------|----------|----------|
|
| --------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|inotify |Linux 2.6.27 or later, Android\*|Supported [](https://travis-ci.org/fsnotify/fsnotify)|
|
| inotify | Linux 2.6.27 or later, Android\* | Supported [](https://travis-ci.org/fsnotify/fsnotify) |
|
||||||
|kqueue |BSD, macOS, iOS\*|Supported [](https://travis-ci.org/fsnotify/fsnotify)|
|
| kqueue | BSD, macOS, iOS\* | Supported [](https://travis-ci.org/fsnotify/fsnotify) |
|
||||||
|ReadDirectoryChangesW|Windows|Supported [](https://ci.appveyor.com/project/NathanYoungman/fsnotify/branch/master)|
|
| ReadDirectoryChangesW | Windows | Supported [](https://travis-ci.org/fsnotify/fsnotify) |
|
||||||
|FSEvents |macOS |[Planned](https://github.com/fsnotify/fsnotify/issues/11)|
|
| FSEvents | macOS | [Planned](https://github.com/fsnotify/fsnotify/issues/11) |
|
||||||
|FEN |Solaris 11 |[In Progress](https://github.com/fsnotify/fsnotify/issues/12)|
|
| FEN | Solaris 11 | [In Progress](https://github.com/fsnotify/fsnotify/issues/12) |
|
||||||
|fanotify |Linux 2.6.37+ | |
|
| fanotify | Linux 2.6.37+ | [Planned](https://github.com/fsnotify/fsnotify/issues/114) |
|
||||||
|USN Journals |Windows |[Maybe](https://github.com/fsnotify/fsnotify/issues/53)|
|
| USN Journals | Windows | [Maybe](https://github.com/fsnotify/fsnotify/issues/53) |
|
||||||
|Polling |*All* |[Maybe](https://github.com/fsnotify/fsnotify/issues/9)|
|
| Polling | *All* | [Maybe](https://github.com/fsnotify/fsnotify/issues/9) |
|
||||||
|
|
||||||
\* Android and iOS are untested.
|
\* Android and iOS are untested.
|
||||||
|
|
||||||
@ -33,6 +33,53 @@ All [releases](https://github.com/fsnotify/fsnotify/releases) are tagged based o
|
|||||||
|
|
||||||
Go 1.6 supports dependencies located in the `vendor/` folder. Unless you are creating a library, it is recommended that you copy fsnotify into `vendor/github.com/fsnotify/fsnotify` within your project, and likewise for `golang.org/x/sys`.
|
Go 1.6 supports dependencies located in the `vendor/` folder. Unless you are creating a library, it is recommended that you copy fsnotify into `vendor/github.com/fsnotify/fsnotify` within your project, and likewise for `golang.org/x/sys`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/fsnotify/fsnotify"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
watcher, err := fsnotify.NewWatcher()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer watcher.Close()
|
||||||
|
|
||||||
|
done := make(chan bool)
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case event, ok := <-watcher.Events:
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Println("event:", event)
|
||||||
|
if event.Op&fsnotify.Write == fsnotify.Write {
|
||||||
|
log.Println("modified file:", event.Name)
|
||||||
|
}
|
||||||
|
case err, ok := <-watcher.Errors:
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Println("error:", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
err = watcher.Add("/tmp/foo")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
<-done
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Please refer to [CONTRIBUTING][] before opening an issue or pull request.
|
Please refer to [CONTRIBUTING][] before opening an issue or pull request.
|
||||||
@ -65,6 +112,10 @@ There are OS-specific limits as to how many watches can be created:
|
|||||||
* Linux: /proc/sys/fs/inotify/max_user_watches contains the limit, reaching this limit results in a "no space left on device" error.
|
* Linux: /proc/sys/fs/inotify/max_user_watches contains the limit, reaching this limit results in a "no space left on device" error.
|
||||||
* BSD / OSX: sysctl variables "kern.maxfiles" and "kern.maxfilesperproc", reaching these limits results in a "too many open files" error.
|
* BSD / OSX: sysctl variables "kern.maxfiles" and "kern.maxfilesperproc", reaching these limits results in a "too many open files" error.
|
||||||
|
|
||||||
|
**Why don't notifications work with NFS filesystems or filesystem in userspace (FUSE)?**
|
||||||
|
|
||||||
|
fsnotify requires support from underlying OS to work. The current NFS protocol does not provide network level support for file notifications.
|
||||||
|
|
||||||
[#62]: https://github.com/howeyc/fsnotify/issues/62
|
[#62]: https://github.com/howeyc/fsnotify/issues/62
|
||||||
[#18]: https://github.com/fsnotify/fsnotify/issues/18
|
[#18]: https://github.com/fsnotify/fsnotify/issues/18
|
||||||
[#11]: https://github.com/fsnotify/fsnotify/issues/11
|
[#11]: https://github.com/fsnotify/fsnotify/issues/11
|
||||||
|
4
vendor/github.com/fsnotify/fsnotify/fsnotify.go
generated
vendored
4
vendor/github.com/fsnotify/fsnotify/fsnotify.go
generated
vendored
@ -63,4 +63,6 @@ func (e Event) String() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Common errors that can be reported by a watcher
|
// Common errors that can be reported by a watcher
|
||||||
var ErrEventOverflow = errors.New("fsnotify queue overflow")
|
var (
|
||||||
|
ErrEventOverflow = errors.New("fsnotify queue overflow")
|
||||||
|
)
|
||||||
|
5
vendor/github.com/fsnotify/fsnotify/go.mod
generated
vendored
Normal file
5
vendor/github.com/fsnotify/fsnotify/go.mod
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module github.com/fsnotify/fsnotify
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9
|
2
vendor/github.com/fsnotify/fsnotify/go.sum
generated
vendored
Normal file
2
vendor/github.com/fsnotify/fsnotify/go.sum
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9 h1:L2auWcuQIvxz9xSEqzESnV/QN/gNRXNApHi3fYwl2w0=
|
||||||
|
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
4
vendor/github.com/fsnotify/fsnotify/inotify_poller.go
generated
vendored
4
vendor/github.com/fsnotify/fsnotify/inotify_poller.go
generated
vendored
@ -40,12 +40,12 @@ func newFdPoller(fd int) (*fdPoller, error) {
|
|||||||
poller.fd = fd
|
poller.fd = fd
|
||||||
|
|
||||||
// Create epoll fd
|
// Create epoll fd
|
||||||
poller.epfd, errno = unix.EpollCreate1(0)
|
poller.epfd, errno = unix.EpollCreate1(unix.EPOLL_CLOEXEC)
|
||||||
if poller.epfd == -1 {
|
if poller.epfd == -1 {
|
||||||
return nil, errno
|
return nil, errno
|
||||||
}
|
}
|
||||||
// Create pipe; pipe[0] is the read end, pipe[1] the write end.
|
// Create pipe; pipe[0] is the read end, pipe[1] the write end.
|
||||||
errno = unix.Pipe2(poller.pipe[:], unix.O_NONBLOCK)
|
errno = unix.Pipe2(poller.pipe[:], unix.O_NONBLOCK|unix.O_CLOEXEC)
|
||||||
if errno != nil {
|
if errno != nil {
|
||||||
return nil, errno
|
return nil, errno
|
||||||
}
|
}
|
||||||
|
2
vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go
generated
vendored
2
vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go
generated
vendored
@ -8,4 +8,4 @@ package fsnotify
|
|||||||
|
|
||||||
import "golang.org/x/sys/unix"
|
import "golang.org/x/sys/unix"
|
||||||
|
|
||||||
const openMode = unix.O_NONBLOCK | unix.O_RDONLY
|
const openMode = unix.O_NONBLOCK | unix.O_RDONLY | unix.O_CLOEXEC
|
||||||
|
2
vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go
generated
vendored
2
vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go
generated
vendored
@ -9,4 +9,4 @@ package fsnotify
|
|||||||
import "golang.org/x/sys/unix"
|
import "golang.org/x/sys/unix"
|
||||||
|
|
||||||
// note: this constant is not defined on BSD
|
// note: this constant is not defined on BSD
|
||||||
const openMode = unix.O_EVTONLY
|
const openMode = unix.O_EVTONLY | unix.O_CLOEXEC
|
||||||
|
23
vendor/github.com/onsi/ginkgo/CHANGELOG.md
generated
vendored
23
vendor/github.com/onsi/ginkgo/CHANGELOG.md
generated
vendored
@ -1,3 +1,26 @@
|
|||||||
|
## 1.13.0
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- Add a version of table.Entry that allows dumping the entry parameters. (#689) [21eaef2]
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Ensure integration tests pass in an environment sans GOPATH [606fba2]
|
||||||
|
- Add books package (#568) [fc0e44e]
|
||||||
|
- doc(readme): installation via "tools package" (#677) [83bb20e]
|
||||||
|
- Solve the undefined: unix.Dup2 compile error on mips64le (#680) [0624f75]
|
||||||
|
- Import package without dot (#687) [6321024]
|
||||||
|
- Fix integration tests to stop require GOPATH (#686) [a912ec5]
|
||||||
|
|
||||||
|
## 1.12.3
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Print correct code location of failing table test (#666) [c6d7afb]
|
||||||
|
|
||||||
|
## 1.12.2
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Update dependencies [ea4a036]
|
||||||
|
|
||||||
## 1.12.1
|
## 1.12.1
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
47
vendor/github.com/onsi/ginkgo/README.md
generated
vendored
47
vendor/github.com/onsi/ginkgo/README.md
generated
vendored
@ -4,7 +4,23 @@
|
|||||||
|
|
||||||
Jump to the [docs](https://onsi.github.io/ginkgo/) to learn more. To start rolling your Ginkgo tests *now* [keep reading](#set-me-up)!
|
Jump to the [docs](https://onsi.github.io/ginkgo/) to learn more. To start rolling your Ginkgo tests *now* [keep reading](#set-me-up)!
|
||||||
|
|
||||||
If you have a question, comment, bug report, feature request, etc. please open a GitHub issue.
|
If you have a question, comment, bug report, feature request, etc. please open a GitHub issue, or visit the [Ginkgo Slack channel](https://app.slack.com/client/T029RQSE6/CQQ50BBNW).
|
||||||
|
|
||||||
|
## TLDR
|
||||||
|
Ginkgo builds on Go's `testing` package, allowing expressive [Behavior-Driven Development](https://en.wikipedia.org/wiki/Behavior-driven_development) ("BDD") style tests.
|
||||||
|
It is typically (and optionally) paired with the [Gomega](https://github.com/onsi/gomega) matcher library.
|
||||||
|
|
||||||
|
```go
|
||||||
|
Describe("the strings package", func() {
|
||||||
|
Context("strings.Contains()", func() {
|
||||||
|
When("the string contains the substring in the middle", func() {
|
||||||
|
It("returns `true`", func() {
|
||||||
|
Expect(strings.Contains("Ginkgo is awesome", "is")).To(BeTrue())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
## Feature List
|
## Feature List
|
||||||
|
|
||||||
@ -59,15 +75,36 @@ Ginkgo is best paired with Gomega. Learn more about Gomega [here](https://onsi.
|
|||||||
|
|
||||||
Agouti allows you run WebDriver integration tests. Learn more about Agouti [here](https://agouti.org)
|
Agouti allows you run WebDriver integration tests. Learn more about Agouti [here](https://agouti.org)
|
||||||
|
|
||||||
## Set Me Up!
|
## Getting Started
|
||||||
|
|
||||||
You'll need the Go command-line tools. Ginkgo is tested with Go 1.6+, but preferably you should get the latest. Follow the [installation instructions](https://golang.org/doc/install) if you don't have it installed.
|
You'll need the Go command-line tools. Follow the [installation instructions](https://golang.org/doc/install) if you don't have it installed.
|
||||||
|
|
||||||
|
### Global installation
|
||||||
|
To install the Ginkgo command line interface into the `$PATH` (actually to `$GOBIN`):
|
||||||
```bash
|
```bash
|
||||||
|
go get -u github.com/onsi/ginkgo/ginkgo
|
||||||
|
```
|
||||||
|
|
||||||
go get -u github.com/onsi/ginkgo/ginkgo # installs the ginkgo CLI
|
### Go module ["tools package"](https://github.com/golang/go/issues/25922):
|
||||||
go get -u github.com/onsi/gomega/... # fetches the matcher library
|
Create (or update) a file called `tools/tools.go` with the following contents:
|
||||||
|
```go
|
||||||
|
// +build tools
|
||||||
|
|
||||||
|
package tools
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/onsi/ginkgo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// This file imports packages that are used when running go generate, or used
|
||||||
|
// during the development process but not otherwise depended on by built code.
|
||||||
|
```
|
||||||
|
The Ginkgo command can then be run via `go run github.com/onsi/ginkgo/ginkgo`.
|
||||||
|
This approach allows the version of Ginkgo to be maintained under source control for reproducible results,
|
||||||
|
and is well suited to automated test pipelines.
|
||||||
|
|
||||||
|
### Bootstrapping
|
||||||
|
```bash
|
||||||
cd path/to/package/you/want/to/test
|
cd path/to/package/you/want/to/test
|
||||||
|
|
||||||
ginkgo bootstrap # set up a new ginkgo suite
|
ginkgo bootstrap # set up a new ginkgo suite
|
||||||
|
2
vendor/github.com/onsi/ginkgo/config/config.go
generated
vendored
2
vendor/github.com/onsi/ginkgo/config/config.go
generated
vendored
@ -20,7 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
const VERSION = "1.12.1"
|
const VERSION = "1.13.0"
|
||||||
|
|
||||||
type GinkgoConfigType struct {
|
type GinkgoConfigType struct {
|
||||||
RandomSeed int64
|
RandomSeed int64
|
||||||
|
56
vendor/github.com/onsi/ginkgo/extensions/table/table.go
generated
vendored
56
vendor/github.com/onsi/ginkgo/extensions/table/table.go
generated
vendored
@ -12,7 +12,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"github.com/onsi/ginkgo"
|
"github.com/onsi/ginkgo/internal/codelocation"
|
||||||
|
"github.com/onsi/ginkgo/internal/global"
|
||||||
|
"github.com/onsi/ginkgo/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -40,9 +42,28 @@ Under the hood, `DescribeTable` simply generates a new Ginkgo `Describe`. Each
|
|||||||
It's important to understand that the `Describe`s and `It`s are generated at evaluation time (i.e. when Ginkgo constructs the tree of tests and before the tests run).
|
It's important to understand that the `Describe`s and `It`s are generated at evaluation time (i.e. when Ginkgo constructs the tree of tests and before the tests run).
|
||||||
|
|
||||||
Individual Entries can be focused (with FEntry) or marked pending (with PEntry or XEntry). In addition, the entire table can be focused or marked pending with FDescribeTable and PDescribeTable/XDescribeTable.
|
Individual Entries can be focused (with FEntry) or marked pending (with PEntry or XEntry). In addition, the entire table can be focused or marked pending with FDescribeTable and PDescribeTable/XDescribeTable.
|
||||||
|
|
||||||
|
A description function can be passed to Entry in place of the description. The function is then fed with the entry parameters to generate the description of the It corresponding to that particular Entry.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
describe := func(desc string) func(int, int, bool) string {
|
||||||
|
return func(x, y int, expected bool) string {
|
||||||
|
return fmt.Sprintf("%s x=%d y=%d expected:%t", desc, x, y, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DescribeTable("a simple table",
|
||||||
|
func(x int, y int, expected bool) {
|
||||||
|
Ω(x > y).Should(Equal(expected))
|
||||||
|
},
|
||||||
|
Entry(describe("x > y"), 1, 0, true),
|
||||||
|
Entry(describe("x == y"), 0, 0, false),
|
||||||
|
Entry(describe("x < y"), 0, 1, false),
|
||||||
|
)
|
||||||
*/
|
*/
|
||||||
func DescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
func DescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
||||||
describeTable(description, itBody, entries, false, false)
|
describeTable(description, itBody, entries, types.FlagTypeNone)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +71,7 @@ func DescribeTable(description string, itBody interface{}, entries ...TableEntry
|
|||||||
You can focus a table with `FDescribeTable`. This is equivalent to `FDescribe`.
|
You can focus a table with `FDescribeTable`. This is equivalent to `FDescribe`.
|
||||||
*/
|
*/
|
||||||
func FDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
func FDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
||||||
describeTable(description, itBody, entries, false, true)
|
describeTable(description, itBody, entries, types.FlagTypeFocused)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +79,7 @@ func FDescribeTable(description string, itBody interface{}, entries ...TableEntr
|
|||||||
You can mark a table as pending with `PDescribeTable`. This is equivalent to `PDescribe`.
|
You can mark a table as pending with `PDescribeTable`. This is equivalent to `PDescribe`.
|
||||||
*/
|
*/
|
||||||
func PDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
func PDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
||||||
describeTable(description, itBody, entries, true, false)
|
describeTable(description, itBody, entries, types.FlagTypePending)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,33 +87,24 @@ func PDescribeTable(description string, itBody interface{}, entries ...TableEntr
|
|||||||
You can mark a table as pending with `XDescribeTable`. This is equivalent to `XDescribe`.
|
You can mark a table as pending with `XDescribeTable`. This is equivalent to `XDescribe`.
|
||||||
*/
|
*/
|
||||||
func XDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
func XDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
|
||||||
describeTable(description, itBody, entries, true, false)
|
describeTable(description, itBody, entries, types.FlagTypePending)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func describeTable(description string, itBody interface{}, entries []TableEntry, pending bool, focused bool) {
|
func describeTable(description string, itBody interface{}, entries []TableEntry, flag types.FlagType) {
|
||||||
itBodyValue := reflect.ValueOf(itBody)
|
itBodyValue := reflect.ValueOf(itBody)
|
||||||
if itBodyValue.Kind() != reflect.Func {
|
if itBodyValue.Kind() != reflect.Func {
|
||||||
panic(fmt.Sprintf("DescribeTable expects a function, got %#v", itBody))
|
panic(fmt.Sprintf("DescribeTable expects a function, got %#v", itBody))
|
||||||
}
|
}
|
||||||
|
|
||||||
if pending {
|
global.Suite.PushContainerNode(
|
||||||
ginkgo.PDescribe(description, func() {
|
description,
|
||||||
|
func() {
|
||||||
for _, entry := range entries {
|
for _, entry := range entries {
|
||||||
entry.generateIt(itBodyValue)
|
entry.generateIt(itBodyValue)
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
} else if focused {
|
flag,
|
||||||
ginkgo.FDescribe(description, func() {
|
codelocation.New(2),
|
||||||
for _, entry := range entries {
|
)
|
||||||
entry.generateIt(itBodyValue)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
ginkgo.Describe(description, func() {
|
|
||||||
for _, entry := range entries {
|
|
||||||
entry.generateIt(itBodyValue)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
105
vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
generated
vendored
105
vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
generated
vendored
@ -1,49 +1,82 @@
|
|||||||
package table
|
package table
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"github.com/onsi/ginkgo"
|
"github.com/onsi/ginkgo/internal/codelocation"
|
||||||
|
"github.com/onsi/ginkgo/internal/global"
|
||||||
|
"github.com/onsi/ginkgo/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TableEntry represents an entry in a table test. You generally use the `Entry` constructor.
|
TableEntry represents an entry in a table test. You generally use the `Entry` constructor.
|
||||||
*/
|
*/
|
||||||
type TableEntry struct {
|
type TableEntry struct {
|
||||||
Description string
|
Description interface{}
|
||||||
Parameters []interface{}
|
Parameters []interface{}
|
||||||
Pending bool
|
Pending bool
|
||||||
Focused bool
|
Focused bool
|
||||||
|
codeLocation types.CodeLocation
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t TableEntry) generateIt(itBody reflect.Value) {
|
func (t TableEntry) generateIt(itBody reflect.Value) {
|
||||||
|
if t.codeLocation == (types.CodeLocation{}) {
|
||||||
|
// The user created the TableEntry struct directly instead of having used the (F/P/X)Entry constructors.
|
||||||
|
// Therefore default to the code location of the surrounding DescribeTable.
|
||||||
|
t.codeLocation = codelocation.New(5)
|
||||||
|
}
|
||||||
|
|
||||||
|
var description string
|
||||||
|
descriptionValue := reflect.ValueOf(t.Description)
|
||||||
|
switch descriptionValue.Kind() {
|
||||||
|
case reflect.String:
|
||||||
|
description = descriptionValue.String()
|
||||||
|
case reflect.Func:
|
||||||
|
values := castParameters(descriptionValue, t.Parameters)
|
||||||
|
res := descriptionValue.Call(values)
|
||||||
|
if len(res) != 1 {
|
||||||
|
panic(fmt.Sprintf("The describe function should return only a value, returned %d", len(res)))
|
||||||
|
}
|
||||||
|
if res[0].Kind() != reflect.String {
|
||||||
|
panic(fmt.Sprintf("The describe function should return a string, returned %#v", res[0]))
|
||||||
|
}
|
||||||
|
description = res[0].String()
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("Description can either be a string or a function, got %#v", descriptionValue))
|
||||||
|
}
|
||||||
|
|
||||||
if t.Pending {
|
if t.Pending {
|
||||||
ginkgo.PIt(t.Description)
|
global.Suite.PushItNode(description, func() {}, types.FlagTypePending, t.codeLocation, 0)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
values := make([]reflect.Value, len(t.Parameters))
|
values := castParameters(itBody, t.Parameters)
|
||||||
iBodyType := itBody.Type()
|
|
||||||
for i, param := range t.Parameters {
|
|
||||||
if param == nil {
|
|
||||||
inType := iBodyType.In(i)
|
|
||||||
values[i] = reflect.Zero(inType)
|
|
||||||
} else {
|
|
||||||
values[i] = reflect.ValueOf(param)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body := func() {
|
body := func() {
|
||||||
itBody.Call(values)
|
itBody.Call(values)
|
||||||
}
|
}
|
||||||
|
|
||||||
if t.Focused {
|
if t.Focused {
|
||||||
ginkgo.FIt(t.Description, body)
|
global.Suite.PushItNode(description, body, types.FlagTypeFocused, t.codeLocation, global.DefaultTimeout)
|
||||||
} else {
|
} else {
|
||||||
ginkgo.It(t.Description, body)
|
global.Suite.PushItNode(description, body, types.FlagTypeNone, t.codeLocation, global.DefaultTimeout)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func castParameters(function reflect.Value, parameters []interface{}) []reflect.Value {
|
||||||
|
res := make([]reflect.Value, len(parameters))
|
||||||
|
funcType := function.Type()
|
||||||
|
for i, param := range parameters {
|
||||||
|
if param == nil {
|
||||||
|
inType := funcType.In(i)
|
||||||
|
res[i] = reflect.Zero(inType)
|
||||||
|
} else {
|
||||||
|
res[i] = reflect.ValueOf(param)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Entry constructs a TableEntry.
|
Entry constructs a TableEntry.
|
||||||
|
|
||||||
@ -52,27 +85,51 @@ Subsequent parameters are saved off and sent to the callback passed in to `Descr
|
|||||||
|
|
||||||
Each Entry ends up generating an individual Ginkgo It.
|
Each Entry ends up generating an individual Ginkgo It.
|
||||||
*/
|
*/
|
||||||
func Entry(description string, parameters ...interface{}) TableEntry {
|
func Entry(description interface{}, parameters ...interface{}) TableEntry {
|
||||||
return TableEntry{description, parameters, false, false}
|
return TableEntry{
|
||||||
|
Description: description,
|
||||||
|
Parameters: parameters,
|
||||||
|
Pending: false,
|
||||||
|
Focused: false,
|
||||||
|
codeLocation: codelocation.New(1),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
You can focus a particular entry with FEntry. This is equivalent to FIt.
|
You can focus a particular entry with FEntry. This is equivalent to FIt.
|
||||||
*/
|
*/
|
||||||
func FEntry(description string, parameters ...interface{}) TableEntry {
|
func FEntry(description interface{}, parameters ...interface{}) TableEntry {
|
||||||
return TableEntry{description, parameters, false, true}
|
return TableEntry{
|
||||||
|
Description: description,
|
||||||
|
Parameters: parameters,
|
||||||
|
Pending: false,
|
||||||
|
Focused: true,
|
||||||
|
codeLocation: codelocation.New(1),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
You can mark a particular entry as pending with PEntry. This is equivalent to PIt.
|
You can mark a particular entry as pending with PEntry. This is equivalent to PIt.
|
||||||
*/
|
*/
|
||||||
func PEntry(description string, parameters ...interface{}) TableEntry {
|
func PEntry(description interface{}, parameters ...interface{}) TableEntry {
|
||||||
return TableEntry{description, parameters, true, false}
|
return TableEntry{
|
||||||
|
Description: description,
|
||||||
|
Parameters: parameters,
|
||||||
|
Pending: true,
|
||||||
|
Focused: false,
|
||||||
|
codeLocation: codelocation.New(1),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
You can mark a particular entry as pending with XEntry. This is equivalent to XIt.
|
You can mark a particular entry as pending with XEntry. This is equivalent to XIt.
|
||||||
*/
|
*/
|
||||||
func XEntry(description string, parameters ...interface{}) TableEntry {
|
func XEntry(description interface{}, parameters ...interface{}) TableEntry {
|
||||||
return TableEntry{description, parameters, true, false}
|
return TableEntry{
|
||||||
|
Description: description,
|
||||||
|
Parameters: parameters,
|
||||||
|
Pending: true,
|
||||||
|
Focused: false,
|
||||||
|
codeLocation: codelocation.New(1),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
85
vendor/github.com/onsi/ginkgo/ginkgo_dsl.go
generated
vendored
85
vendor/github.com/onsi/ginkgo/ginkgo_dsl.go
generated
vendored
@ -22,9 +22,8 @@ import (
|
|||||||
|
|
||||||
"github.com/onsi/ginkgo/config"
|
"github.com/onsi/ginkgo/config"
|
||||||
"github.com/onsi/ginkgo/internal/codelocation"
|
"github.com/onsi/ginkgo/internal/codelocation"
|
||||||
"github.com/onsi/ginkgo/internal/failer"
|
"github.com/onsi/ginkgo/internal/global"
|
||||||
"github.com/onsi/ginkgo/internal/remote"
|
"github.com/onsi/ginkgo/internal/remote"
|
||||||
"github.com/onsi/ginkgo/internal/suite"
|
|
||||||
"github.com/onsi/ginkgo/internal/testingtproxy"
|
"github.com/onsi/ginkgo/internal/testingtproxy"
|
||||||
"github.com/onsi/ginkgo/internal/writer"
|
"github.com/onsi/ginkgo/internal/writer"
|
||||||
"github.com/onsi/ginkgo/reporters"
|
"github.com/onsi/ginkgo/reporters"
|
||||||
@ -46,16 +45,10 @@ To circumvent this, you should call
|
|||||||
|
|
||||||
at the top of the goroutine that caused this panic.
|
at the top of the goroutine that caused this panic.
|
||||||
`
|
`
|
||||||
const defaultTimeout = 1
|
|
||||||
|
|
||||||
var globalSuite *suite.Suite
|
|
||||||
var globalFailer *failer.Failer
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
config.Flags(flag.CommandLine, "ginkgo", true)
|
config.Flags(flag.CommandLine, "ginkgo", true)
|
||||||
GinkgoWriter = writer.New(os.Stdout)
|
GinkgoWriter = writer.New(os.Stdout)
|
||||||
globalFailer = failer.New()
|
|
||||||
globalSuite = suite.New(globalFailer)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//GinkgoWriter implements an io.Writer
|
//GinkgoWriter implements an io.Writer
|
||||||
@ -156,7 +149,7 @@ type GinkgoTestDescription struct {
|
|||||||
|
|
||||||
//CurrentGinkgoTestDescripton returns information about the current running test.
|
//CurrentGinkgoTestDescripton returns information about the current running test.
|
||||||
func CurrentGinkgoTestDescription() GinkgoTestDescription {
|
func CurrentGinkgoTestDescription() GinkgoTestDescription {
|
||||||
summary, ok := globalSuite.CurrentRunningSpecSummary()
|
summary, ok := global.Suite.CurrentRunningSpecSummary()
|
||||||
if !ok {
|
if !ok {
|
||||||
return GinkgoTestDescription{}
|
return GinkgoTestDescription{}
|
||||||
}
|
}
|
||||||
@ -223,7 +216,7 @@ func RunSpecsWithCustomReporters(t GinkgoTestingT, description string, specRepor
|
|||||||
for i, reporter := range specReporters {
|
for i, reporter := range specReporters {
|
||||||
reporters[i] = reporter
|
reporters[i] = reporter
|
||||||
}
|
}
|
||||||
passed, hasFocusedTests := globalSuite.Run(t, description, reporters, writer, config.GinkgoConfig)
|
passed, hasFocusedTests := global.Suite.Run(t, description, reporters, writer, config.GinkgoConfig)
|
||||||
if passed && hasFocusedTests && strings.TrimSpace(os.Getenv("GINKGO_EDITOR_INTEGRATION")) == "" {
|
if passed && hasFocusedTests && strings.TrimSpace(os.Getenv("GINKGO_EDITOR_INTEGRATION")) == "" {
|
||||||
fmt.Println("PASS | FOCUSED")
|
fmt.Println("PASS | FOCUSED")
|
||||||
os.Exit(types.GINKGO_FOCUS_EXIT_CODE)
|
os.Exit(types.GINKGO_FOCUS_EXIT_CODE)
|
||||||
@ -252,7 +245,7 @@ func Skip(message string, callerSkip ...int) {
|
|||||||
skip = callerSkip[0]
|
skip = callerSkip[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
globalFailer.Skip(message, codelocation.New(skip+1))
|
global.Failer.Skip(message, codelocation.New(skip+1))
|
||||||
panic(GINKGO_PANIC)
|
panic(GINKGO_PANIC)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,7 +256,7 @@ func Fail(message string, callerSkip ...int) {
|
|||||||
skip = callerSkip[0]
|
skip = callerSkip[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
globalFailer.Fail(message, codelocation.New(skip+1))
|
global.Failer.Fail(message, codelocation.New(skip+1))
|
||||||
panic(GINKGO_PANIC)
|
panic(GINKGO_PANIC)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +273,7 @@ func Fail(message string, callerSkip ...int) {
|
|||||||
func GinkgoRecover() {
|
func GinkgoRecover() {
|
||||||
e := recover()
|
e := recover()
|
||||||
if e != nil {
|
if e != nil {
|
||||||
globalFailer.Panic(codelocation.New(1), e)
|
global.Failer.Panic(codelocation.New(1), e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,25 +284,25 @@ func GinkgoRecover() {
|
|||||||
//equivalent. The difference is purely semantic -- you typically Describe the behavior of an object
|
//equivalent. The difference is purely semantic -- you typically Describe the behavior of an object
|
||||||
//or method and, within that Describe, outline a number of Contexts and Whens.
|
//or method and, within that Describe, outline a number of Contexts and Whens.
|
||||||
func Describe(text string, body func()) bool {
|
func Describe(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypeNone, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypeNone, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can focus the tests within a describe block using FDescribe
|
//You can focus the tests within a describe block using FDescribe
|
||||||
func FDescribe(text string, body func()) bool {
|
func FDescribe(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypeFocused, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypeFocused, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark the tests within a describe block as pending using PDescribe
|
//You can mark the tests within a describe block as pending using PDescribe
|
||||||
func PDescribe(text string, body func()) bool {
|
func PDescribe(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark the tests within a describe block as pending using XDescribe
|
//You can mark the tests within a describe block as pending using XDescribe
|
||||||
func XDescribe(text string, body func()) bool {
|
func XDescribe(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,25 +313,25 @@ func XDescribe(text string, body func()) bool {
|
|||||||
//equivalent. The difference is purely semantic -- you typical Describe the behavior of an object
|
//equivalent. The difference is purely semantic -- you typical Describe the behavior of an object
|
||||||
//or method and, within that Describe, outline a number of Contexts and Whens.
|
//or method and, within that Describe, outline a number of Contexts and Whens.
|
||||||
func Context(text string, body func()) bool {
|
func Context(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypeNone, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypeNone, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can focus the tests within a describe block using FContext
|
//You can focus the tests within a describe block using FContext
|
||||||
func FContext(text string, body func()) bool {
|
func FContext(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypeFocused, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypeFocused, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark the tests within a describe block as pending using PContext
|
//You can mark the tests within a describe block as pending using PContext
|
||||||
func PContext(text string, body func()) bool {
|
func PContext(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark the tests within a describe block as pending using XContext
|
//You can mark the tests within a describe block as pending using XContext
|
||||||
func XContext(text string, body func()) bool {
|
func XContext(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
global.Suite.PushContainerNode(text, body, types.FlagTypePending, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,25 +342,25 @@ func XContext(text string, body func()) bool {
|
|||||||
//equivalent. The difference is purely semantic -- you typical Describe the behavior of an object
|
//equivalent. The difference is purely semantic -- you typical Describe the behavior of an object
|
||||||
//or method and, within that Describe, outline a number of Contexts and Whens.
|
//or method and, within that Describe, outline a number of Contexts and Whens.
|
||||||
func When(text string, body func()) bool {
|
func When(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode("when "+text, body, types.FlagTypeNone, codelocation.New(1))
|
global.Suite.PushContainerNode("when "+text, body, types.FlagTypeNone, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can focus the tests within a describe block using FWhen
|
//You can focus the tests within a describe block using FWhen
|
||||||
func FWhen(text string, body func()) bool {
|
func FWhen(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode("when "+text, body, types.FlagTypeFocused, codelocation.New(1))
|
global.Suite.PushContainerNode("when "+text, body, types.FlagTypeFocused, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark the tests within a describe block as pending using PWhen
|
//You can mark the tests within a describe block as pending using PWhen
|
||||||
func PWhen(text string, body func()) bool {
|
func PWhen(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode("when "+text, body, types.FlagTypePending, codelocation.New(1))
|
global.Suite.PushContainerNode("when "+text, body, types.FlagTypePending, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark the tests within a describe block as pending using XWhen
|
//You can mark the tests within a describe block as pending using XWhen
|
||||||
func XWhen(text string, body func()) bool {
|
func XWhen(text string, body func()) bool {
|
||||||
globalSuite.PushContainerNode("when "+text, body, types.FlagTypePending, codelocation.New(1))
|
global.Suite.PushContainerNode("when "+text, body, types.FlagTypePending, codelocation.New(1))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,25 +370,25 @@ func XWhen(text string, body func()) bool {
|
|||||||
//Ginkgo will normally run It blocks synchronously. To perform asynchronous tests, pass a
|
//Ginkgo will normally run It blocks synchronously. To perform asynchronous tests, pass a
|
||||||
//function that accepts a Done channel. When you do this, you can also provide an optional timeout.
|
//function that accepts a Done channel. When you do this, you can also provide an optional timeout.
|
||||||
func It(text string, body interface{}, timeout ...float64) bool {
|
func It(text string, body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushItNode(text, body, types.FlagTypeNone, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushItNode(text, body, types.FlagTypeNone, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can focus individual Its using FIt
|
//You can focus individual Its using FIt
|
||||||
func FIt(text string, body interface{}, timeout ...float64) bool {
|
func FIt(text string, body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushItNode(text, body, types.FlagTypeFocused, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushItNode(text, body, types.FlagTypeFocused, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark Its as pending using PIt
|
//You can mark Its as pending using PIt
|
||||||
func PIt(text string, _ ...interface{}) bool {
|
func PIt(text string, _ ...interface{}) bool {
|
||||||
globalSuite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
global.Suite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark Its as pending using XIt
|
//You can mark Its as pending using XIt
|
||||||
func XIt(text string, _ ...interface{}) bool {
|
func XIt(text string, _ ...interface{}) bool {
|
||||||
globalSuite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
global.Suite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,25 +396,25 @@ func XIt(text string, _ ...interface{}) bool {
|
|||||||
//which "It" does not fit into a natural sentence flow. All the same protocols apply for Specify blocks
|
//which "It" does not fit into a natural sentence flow. All the same protocols apply for Specify blocks
|
||||||
//which apply to It blocks.
|
//which apply to It blocks.
|
||||||
func Specify(text string, body interface{}, timeout ...float64) bool {
|
func Specify(text string, body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushItNode(text, body, types.FlagTypeNone, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushItNode(text, body, types.FlagTypeNone, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can focus individual Specifys using FSpecify
|
//You can focus individual Specifys using FSpecify
|
||||||
func FSpecify(text string, body interface{}, timeout ...float64) bool {
|
func FSpecify(text string, body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushItNode(text, body, types.FlagTypeFocused, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushItNode(text, body, types.FlagTypeFocused, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark Specifys as pending using PSpecify
|
//You can mark Specifys as pending using PSpecify
|
||||||
func PSpecify(text string, is ...interface{}) bool {
|
func PSpecify(text string, is ...interface{}) bool {
|
||||||
globalSuite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
global.Suite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark Specifys as pending using XSpecify
|
//You can mark Specifys as pending using XSpecify
|
||||||
func XSpecify(text string, is ...interface{}) bool {
|
func XSpecify(text string, is ...interface{}) bool {
|
||||||
globalSuite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
global.Suite.PushItNode(text, func() {}, types.FlagTypePending, codelocation.New(1), 0)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,25 +445,25 @@ func By(text string, callbacks ...func()) {
|
|||||||
//The body function must have the signature:
|
//The body function must have the signature:
|
||||||
// func(b Benchmarker)
|
// func(b Benchmarker)
|
||||||
func Measure(text string, body interface{}, samples int) bool {
|
func Measure(text string, body interface{}, samples int) bool {
|
||||||
globalSuite.PushMeasureNode(text, body, types.FlagTypeNone, codelocation.New(1), samples)
|
global.Suite.PushMeasureNode(text, body, types.FlagTypeNone, codelocation.New(1), samples)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can focus individual Measures using FMeasure
|
//You can focus individual Measures using FMeasure
|
||||||
func FMeasure(text string, body interface{}, samples int) bool {
|
func FMeasure(text string, body interface{}, samples int) bool {
|
||||||
globalSuite.PushMeasureNode(text, body, types.FlagTypeFocused, codelocation.New(1), samples)
|
global.Suite.PushMeasureNode(text, body, types.FlagTypeFocused, codelocation.New(1), samples)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark Measurements as pending using PMeasure
|
//You can mark Measurements as pending using PMeasure
|
||||||
func PMeasure(text string, _ ...interface{}) bool {
|
func PMeasure(text string, _ ...interface{}) bool {
|
||||||
globalSuite.PushMeasureNode(text, func(b Benchmarker) {}, types.FlagTypePending, codelocation.New(1), 0)
|
global.Suite.PushMeasureNode(text, func(b Benchmarker) {}, types.FlagTypePending, codelocation.New(1), 0)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
//You can mark Measurements as pending using XMeasure
|
//You can mark Measurements as pending using XMeasure
|
||||||
func XMeasure(text string, _ ...interface{}) bool {
|
func XMeasure(text string, _ ...interface{}) bool {
|
||||||
globalSuite.PushMeasureNode(text, func(b Benchmarker) {}, types.FlagTypePending, codelocation.New(1), 0)
|
global.Suite.PushMeasureNode(text, func(b Benchmarker) {}, types.FlagTypePending, codelocation.New(1), 0)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,7 +474,7 @@ func XMeasure(text string, _ ...interface{}) bool {
|
|||||||
//
|
//
|
||||||
//You may only register *one* BeforeSuite handler per test suite. You typically do so in your bootstrap file at the top level.
|
//You may only register *one* BeforeSuite handler per test suite. You typically do so in your bootstrap file at the top level.
|
||||||
func BeforeSuite(body interface{}, timeout ...float64) bool {
|
func BeforeSuite(body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.SetBeforeSuiteNode(body, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.SetBeforeSuiteNode(body, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,7 +487,7 @@ func BeforeSuite(body interface{}, timeout ...float64) bool {
|
|||||||
//
|
//
|
||||||
//You may only register *one* AfterSuite handler per test suite. You typically do so in your bootstrap file at the top level.
|
//You may only register *one* AfterSuite handler per test suite. You typically do so in your bootstrap file at the top level.
|
||||||
func AfterSuite(body interface{}, timeout ...float64) bool {
|
func AfterSuite(body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.SetAfterSuiteNode(body, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.SetAfterSuiteNode(body, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,7 +532,7 @@ func AfterSuite(body interface{}, timeout ...float64) bool {
|
|||||||
// Ω(err).ShouldNot(HaveOccurred())
|
// Ω(err).ShouldNot(HaveOccurred())
|
||||||
// })
|
// })
|
||||||
func SynchronizedBeforeSuite(node1Body interface{}, allNodesBody interface{}, timeout ...float64) bool {
|
func SynchronizedBeforeSuite(node1Body interface{}, allNodesBody interface{}, timeout ...float64) bool {
|
||||||
globalSuite.SetSynchronizedBeforeSuiteNode(
|
global.Suite.SetSynchronizedBeforeSuiteNode(
|
||||||
node1Body,
|
node1Body,
|
||||||
allNodesBody,
|
allNodesBody,
|
||||||
codelocation.New(1),
|
codelocation.New(1),
|
||||||
@ -566,7 +559,7 @@ func SynchronizedBeforeSuite(node1Body interface{}, allNodesBody interface{}, ti
|
|||||||
// dbRunner.Stop()
|
// dbRunner.Stop()
|
||||||
// })
|
// })
|
||||||
func SynchronizedAfterSuite(allNodesBody interface{}, node1Body interface{}, timeout ...float64) bool {
|
func SynchronizedAfterSuite(allNodesBody interface{}, node1Body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.SetSynchronizedAfterSuiteNode(
|
global.Suite.SetSynchronizedAfterSuiteNode(
|
||||||
allNodesBody,
|
allNodesBody,
|
||||||
node1Body,
|
node1Body,
|
||||||
codelocation.New(1),
|
codelocation.New(1),
|
||||||
@ -581,7 +574,7 @@ func SynchronizedAfterSuite(allNodesBody interface{}, node1Body interface{}, tim
|
|||||||
//Like It blocks, BeforeEach blocks can be made asynchronous by providing a body function that accepts
|
//Like It blocks, BeforeEach blocks can be made asynchronous by providing a body function that accepts
|
||||||
//a Done channel
|
//a Done channel
|
||||||
func BeforeEach(body interface{}, timeout ...float64) bool {
|
func BeforeEach(body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushBeforeEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushBeforeEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -591,7 +584,7 @@ func BeforeEach(body interface{}, timeout ...float64) bool {
|
|||||||
//Like It blocks, BeforeEach blocks can be made asynchronous by providing a body function that accepts
|
//Like It blocks, BeforeEach blocks can be made asynchronous by providing a body function that accepts
|
||||||
//a Done channel
|
//a Done channel
|
||||||
func JustBeforeEach(body interface{}, timeout ...float64) bool {
|
func JustBeforeEach(body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushJustBeforeEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushJustBeforeEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -601,7 +594,7 @@ func JustBeforeEach(body interface{}, timeout ...float64) bool {
|
|||||||
//Like It blocks, JustAfterEach blocks can be made asynchronous by providing a body function that accepts
|
//Like It blocks, JustAfterEach blocks can be made asynchronous by providing a body function that accepts
|
||||||
//a Done channel
|
//a Done channel
|
||||||
func JustAfterEach(body interface{}, timeout ...float64) bool {
|
func JustAfterEach(body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushJustAfterEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushJustAfterEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,13 +604,13 @@ func JustAfterEach(body interface{}, timeout ...float64) bool {
|
|||||||
//Like It blocks, AfterEach blocks can be made asynchronous by providing a body function that accepts
|
//Like It blocks, AfterEach blocks can be made asynchronous by providing a body function that accepts
|
||||||
//a Done channel
|
//a Done channel
|
||||||
func AfterEach(body interface{}, timeout ...float64) bool {
|
func AfterEach(body interface{}, timeout ...float64) bool {
|
||||||
globalSuite.PushAfterEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
global.Suite.PushAfterEachNode(body, codelocation.New(1), parseTimeout(timeout...))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseTimeout(timeout ...float64) time.Duration {
|
func parseTimeout(timeout ...float64) time.Duration {
|
||||||
if len(timeout) == 0 {
|
if len(timeout) == 0 {
|
||||||
return time.Duration(defaultTimeout * int64(time.Second))
|
return global.DefaultTimeout
|
||||||
} else {
|
} else {
|
||||||
return time.Duration(timeout[0] * float64(time.Second))
|
return time.Duration(timeout[0] * float64(time.Second))
|
||||||
}
|
}
|
||||||
|
9
vendor/github.com/onsi/ginkgo/go.mod
generated
vendored
9
vendor/github.com/onsi/ginkgo/go.mod
generated
vendored
@ -1,9 +1,12 @@
|
|||||||
module github.com/onsi/ginkgo
|
module github.com/onsi/ginkgo
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
||||||
github.com/nxadm/tail v1.4.4
|
github.com/nxadm/tail v1.4.4
|
||||||
github.com/onsi/gomega v1.7.1
|
github.com/onsi/gomega v1.10.1
|
||||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e
|
github.com/sclevine/agouti v3.0.0+incompatible // indirect
|
||||||
|
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299
|
||||||
|
golang.org/x/text v0.3.2 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
go 1.12
|
go 1.13
|
||||||
|
40
vendor/github.com/onsi/ginkgo/go.sum
generated
vendored
40
vendor/github.com/onsi/ginkgo/go.sum
generated
vendored
@ -1,24 +1,62 @@
|
|||||||
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
|
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||||
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||||
|
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||||
|
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
|
||||||
|
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||||
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
|
||||||
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
|
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
|
||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||||
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
||||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
|
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||||
github.com/onsi/gomega v1.7.1 h1:K0jcRCwNQM3vFGh1ppMtDh/+7ApJrjldlX8fA0jDTLQ=
|
github.com/onsi/gomega v1.7.1 h1:K0jcRCwNQM3vFGh1ppMtDh/+7ApJrjldlX8fA0jDTLQ=
|
||||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||||
|
github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
|
||||||
|
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||||
|
github.com/sclevine/agouti v3.0.0+incompatible h1:8IBJS6PWz3uTlMP3YBIR5f+KAldcGuOeFkFbUWfBgK4=
|
||||||
|
github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 h1:AeiKBIuRw3UomYXSbLy0Mc2dDLfdtbT/IVn4keq83P0=
|
||||||
|
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e h1:N7DeIrjYszNmSW409R3frPPwglRwMkXSBzwVbkOjLLA=
|
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e h1:N7DeIrjYszNmSW409R3frPPwglRwMkXSBzwVbkOjLLA=
|
||||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4=
|
||||||
|
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
|
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||||
|
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||||
|
google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
|
||||||
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
|
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
|
||||||
@ -27,3 +65,5 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep
|
|||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||||
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
||||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
||||||
|
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
18
vendor/github.com/onsi/ginkgo/internal/global/init.go
generated
vendored
Normal file
18
vendor/github.com/onsi/ginkgo/internal/global/init.go
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package global
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/onsi/ginkgo/internal/failer"
|
||||||
|
"github.com/onsi/ginkgo/internal/suite"
|
||||||
|
)
|
||||||
|
|
||||||
|
const DefaultTimeout = time.Duration(1 * time.Second)
|
||||||
|
|
||||||
|
var Suite *suite.Suite
|
||||||
|
var Failer *failer.Failer
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Failer = failer.New()
|
||||||
|
Suite = suite.New(Failer)
|
||||||
|
}
|
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_darwin.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_darwin.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// +build darwin
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup2(oldfd, newfd)
|
||||||
|
}
|
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_dragonfly.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_dragonfly.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// +build dragonfly
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup2(oldfd, newfd)
|
||||||
|
}
|
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_freebsd.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_freebsd.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// +build freebsd
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup2(oldfd, newfd)
|
||||||
|
}
|
12
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux.go
generated
vendored
Normal file
12
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux.go
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// +build linux
|
||||||
|
// +build !mips64le
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup2(oldfd, newfd)
|
||||||
|
}
|
12
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux_mips64le.go
generated
vendored
Normal file
12
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux_mips64le.go
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// +build linux
|
||||||
|
// +build mips64le
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup3(oldfd, newfd, 0)
|
||||||
|
}
|
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_netbsd.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_netbsd.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// +build netbsd
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup2(oldfd, newfd)
|
||||||
|
}
|
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_openbsd.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_openbsd.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// +build openbsd
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup2(oldfd, newfd)
|
||||||
|
}
|
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_solaris.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_solaris.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// +build solaris
|
||||||
|
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
func interceptorDupx(oldfd int, newfd int) {
|
||||||
|
unix.Dup2(oldfd, newfd)
|
||||||
|
}
|
7
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go
generated
vendored
7
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go
generated
vendored
@ -8,7 +8,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/nxadm/tail"
|
"github.com/nxadm/tail"
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewOutputInterceptor() OutputInterceptor {
|
func NewOutputInterceptor() OutputInterceptor {
|
||||||
@ -36,10 +35,8 @@ func (interceptor *outputInterceptor) StartInterceptingOutput() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// This might call Dup3 if the dup2 syscall is not available, e.g. on
|
interceptorDupx(int(interceptor.redirectFile.Fd()), 1)
|
||||||
// linux/arm64 or linux/riscv64
|
interceptorDupx(int(interceptor.redirectFile.Fd()), 2)
|
||||||
unix.Dup2(int(interceptor.redirectFile.Fd()), 1)
|
|
||||||
unix.Dup2(int(interceptor.redirectFile.Fd()), 2)
|
|
||||||
|
|
||||||
if interceptor.streamTarget != nil {
|
if interceptor.streamTarget != nil {
|
||||||
interceptor.tailer, _ = tail.TailFile(interceptor.redirectFile.Name(), tail.Config{Follow: true})
|
interceptor.tailer, _ = tail.TailFile(interceptor.redirectFile.Name(), tail.Config{Follow: true})
|
||||||
|
12
vendor/modules.txt
vendored
12
vendor/modules.txt
vendored
@ -28,14 +28,17 @@ github.com/alexflint/go-filemutex
|
|||||||
# github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44
|
# github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44
|
||||||
## explicit
|
## explicit
|
||||||
github.com/buger/jsonparser
|
github.com/buger/jsonparser
|
||||||
# github.com/containernetworking/cni v0.8.1
|
# github.com/containernetworking/cni v0.8.1-0.20201216164644-62e54113f44a
|
||||||
## explicit
|
## explicit
|
||||||
github.com/containernetworking/cni/libcni
|
github.com/containernetworking/cni/libcni
|
||||||
github.com/containernetworking/cni/pkg/invoke
|
github.com/containernetworking/cni/pkg/invoke
|
||||||
github.com/containernetworking/cni/pkg/skel
|
github.com/containernetworking/cni/pkg/skel
|
||||||
github.com/containernetworking/cni/pkg/types
|
github.com/containernetworking/cni/pkg/types
|
||||||
github.com/containernetworking/cni/pkg/types/020
|
github.com/containernetworking/cni/pkg/types/020
|
||||||
github.com/containernetworking/cni/pkg/types/current
|
github.com/containernetworking/cni/pkg/types/040
|
||||||
|
github.com/containernetworking/cni/pkg/types/100
|
||||||
|
github.com/containernetworking/cni/pkg/types/create
|
||||||
|
github.com/containernetworking/cni/pkg/types/internal
|
||||||
github.com/containernetworking/cni/pkg/utils
|
github.com/containernetworking/cni/pkg/utils
|
||||||
github.com/containernetworking/cni/pkg/version
|
github.com/containernetworking/cni/pkg/version
|
||||||
# github.com/coreos/go-iptables v0.5.0
|
# github.com/coreos/go-iptables v0.5.0
|
||||||
@ -57,7 +60,7 @@ github.com/d2g/dhcp4server/leasepool
|
|||||||
github.com/d2g/dhcp4server/leasepool/memorypool
|
github.com/d2g/dhcp4server/leasepool/memorypool
|
||||||
# github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4
|
# github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4
|
||||||
## explicit
|
## explicit
|
||||||
# github.com/fsnotify/fsnotify v1.4.7
|
# github.com/fsnotify/fsnotify v1.4.9
|
||||||
github.com/fsnotify/fsnotify
|
github.com/fsnotify/fsnotify
|
||||||
# github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c
|
# github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c
|
||||||
## explicit
|
## explicit
|
||||||
@ -74,7 +77,7 @@ github.com/nxadm/tail/ratelimiter
|
|||||||
github.com/nxadm/tail/util
|
github.com/nxadm/tail/util
|
||||||
github.com/nxadm/tail/watch
|
github.com/nxadm/tail/watch
|
||||||
github.com/nxadm/tail/winfile
|
github.com/nxadm/tail/winfile
|
||||||
# github.com/onsi/ginkgo v1.12.1
|
# github.com/onsi/ginkgo v1.13.0
|
||||||
## explicit
|
## explicit
|
||||||
github.com/onsi/ginkgo
|
github.com/onsi/ginkgo
|
||||||
github.com/onsi/ginkgo/config
|
github.com/onsi/ginkgo/config
|
||||||
@ -82,6 +85,7 @@ github.com/onsi/ginkgo/extensions/table
|
|||||||
github.com/onsi/ginkgo/internal/codelocation
|
github.com/onsi/ginkgo/internal/codelocation
|
||||||
github.com/onsi/ginkgo/internal/containernode
|
github.com/onsi/ginkgo/internal/containernode
|
||||||
github.com/onsi/ginkgo/internal/failer
|
github.com/onsi/ginkgo/internal/failer
|
||||||
|
github.com/onsi/ginkgo/internal/global
|
||||||
github.com/onsi/ginkgo/internal/leafnodes
|
github.com/onsi/ginkgo/internal/leafnodes
|
||||||
github.com/onsi/ginkgo/internal/remote
|
github.com/onsi/ginkgo/internal/remote
|
||||||
github.com/onsi/ginkgo/internal/spec
|
github.com/onsi/ginkgo/internal/spec
|
||||||
|
Loading…
x
Reference in New Issue
Block a user