mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 18:02:01 +00:00
Merge pull request #112352 from pohly/e2e-ginkgo-progress
e2e: better ginkgo progress reports
This commit is contained in:
commit
25b93a607a
4
go.mod
4
go.mod
@ -52,7 +52,7 @@ require (
|
|||||||
github.com/mrunalp/fileutils v0.5.0
|
github.com/mrunalp/fileutils v0.5.0
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
|
||||||
github.com/mvdan/xurls v1.1.0
|
github.com/mvdan/xurls v1.1.0
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6
|
github.com/onsi/ginkgo/v2 v2.2.0
|
||||||
github.com/onsi/gomega v1.20.1
|
github.com/onsi/gomega v1.20.1
|
||||||
github.com/opencontainers/runc v1.1.3
|
github.com/opencontainers/runc v1.1.3
|
||||||
github.com/opencontainers/selinux v1.10.0
|
github.com/opencontainers/selinux v1.10.0
|
||||||
@ -435,7 +435,7 @@ replace (
|
|||||||
github.com/mxk/go-flowrate => github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
|
github.com/mxk/go-flowrate => github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
|
||||||
github.com/niemeyer/pretty => github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
|
github.com/niemeyer/pretty => github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
|
||||||
github.com/olekukonko/tablewriter => github.com/olekukonko/tablewriter v0.0.4
|
github.com/olekukonko/tablewriter => github.com/olekukonko/tablewriter v0.0.4
|
||||||
github.com/onsi/ginkgo/v2 => github.com/onsi/ginkgo/v2 v2.1.6
|
github.com/onsi/ginkgo/v2 => github.com/onsi/ginkgo/v2 v2.2.0
|
||||||
github.com/onsi/gomega => github.com/onsi/gomega v1.20.1
|
github.com/onsi/gomega => github.com/onsi/gomega v1.20.1
|
||||||
github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
|
github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
|
||||||
github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.2
|
github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.2
|
||||||
|
4
go.sum
4
go.sum
@ -313,8 +313,8 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
|
|||||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
||||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||||
|
@ -198,6 +198,9 @@ fi
|
|||||||
--dns-domain="${KUBE_DNS_DOMAIN:-cluster.local}" \
|
--dns-domain="${KUBE_DNS_DOMAIN:-cluster.local}" \
|
||||||
--prepull-images="${PREPULL_IMAGES:-false}" \
|
--prepull-images="${PREPULL_IMAGES:-false}" \
|
||||||
--ginkgo.slow-spec-threshold="${GINKGO_SLOW_SPEC_THRESHOLD:-300s}" \
|
--ginkgo.slow-spec-threshold="${GINKGO_SLOW_SPEC_THRESHOLD:-300s}" \
|
||||||
|
--ginkgo.poll-progress-after="${GINKGO_POLL_PROGRESS_AFTER:-300s}" \
|
||||||
|
--ginkgo.poll-progress-interval="${GINKGO_POLL_PROGRESS_INTERVAL:-20s}" \
|
||||||
|
--ginkgo.source-root="${KUBE_ROOT}" \
|
||||||
${MASTER_OS_DISTRIBUTION:+"--master-os-distro=${MASTER_OS_DISTRIBUTION}"} \
|
${MASTER_OS_DISTRIBUTION:+"--master-os-distro=${MASTER_OS_DISTRIBUTION}"} \
|
||||||
${NODE_OS_DISTRIBUTION:+"--node-os-distro=${NODE_OS_DISTRIBUTION}"} \
|
${NODE_OS_DISTRIBUTION:+"--node-os-distro=${NODE_OS_DISTRIBUTION}"} \
|
||||||
${NUM_NODES:+"--num-nodes=${NUM_NODES}"} \
|
${NUM_NODES:+"--num-nodes=${NUM_NODES}"} \
|
||||||
|
@ -332,7 +332,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW
|
|||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||||
|
@ -36,7 +36,7 @@ require (
|
|||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 // indirect
|
github.com/onsi/ginkgo/v2 v2.2.0 // indirect
|
||||||
github.com/onsi/gomega v1.20.1 // indirect
|
github.com/onsi/gomega v1.20.1 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
|
4
staging/src/k8s.io/apimachinery/go.sum
generated
4
staging/src/k8s.io/apimachinery/go.sum
generated
@ -69,8 +69,8 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
|
|||||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
2
staging/src/k8s.io/apiserver/go.sum
generated
2
staging/src/k8s.io/apiserver/go.sum
generated
@ -358,7 +358,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW
|
|||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||||
|
2
staging/src/k8s.io/client-go/go.sum
generated
2
staging/src/k8s.io/client-go/go.sum
generated
@ -174,7 +174,7 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
|
|||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
|
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
|
||||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
|
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
|
||||||
|
2
staging/src/k8s.io/cloud-provider/go.sum
generated
2
staging/src/k8s.io/cloud-provider/go.sum
generated
@ -253,7 +253,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
|
|||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
@ -193,8 +193,8 @@ github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
|
|||||||
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
|
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
|
github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
||||||
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.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||||
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
|
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
|
||||||
|
@ -30,7 +30,7 @@ require (
|
|||||||
github.com/mailru/easyjson v0.7.6 // indirect
|
github.com/mailru/easyjson v0.7.6 // indirect
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 // indirect
|
github.com/onsi/ginkgo/v2 v2.2.0 // indirect
|
||||||
github.com/onsi/gomega v1.20.1 // indirect
|
github.com/onsi/gomega v1.20.1 // indirect
|
||||||
github.com/stretchr/testify v1.7.0 // indirect
|
github.com/stretchr/testify v1.7.0 // indirect
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
||||||
|
4
staging/src/k8s.io/code-generator/go.sum
generated
4
staging/src/k8s.io/code-generator/go.sum
generated
@ -77,8 +77,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
|
|||||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
2
staging/src/k8s.io/component-base/go.sum
generated
2
staging/src/k8s.io/component-base/go.sum
generated
@ -231,7 +231,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
|
|||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
2
staging/src/k8s.io/component-helpers/go.sum
generated
2
staging/src/k8s.io/component-helpers/go.sum
generated
@ -160,7 +160,7 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
|
|||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
2
staging/src/k8s.io/controller-manager/go.sum
generated
2
staging/src/k8s.io/controller-manager/go.sum
generated
@ -246,7 +246,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
|
|||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
2
staging/src/k8s.io/kube-aggregator/go.sum
generated
2
staging/src/k8s.io/kube-aggregator/go.sum
generated
@ -250,7 +250,7 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
|
|||||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
@ -20,7 +20,7 @@ require (
|
|||||||
github.com/lithammer/dedent v1.1.0
|
github.com/lithammer/dedent v1.1.0
|
||||||
github.com/mitchellh/go-wordwrap v1.0.0
|
github.com/mitchellh/go-wordwrap v1.0.0
|
||||||
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6
|
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6
|
github.com/onsi/ginkgo/v2 v2.2.0
|
||||||
github.com/onsi/gomega v1.20.1
|
github.com/onsi/gomega v1.20.1
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/russross/blackfriday v1.5.2
|
github.com/russross/blackfriday v1.5.2
|
||||||
|
4
staging/src/k8s.io/kubectl/go.sum
generated
4
staging/src/k8s.io/kubectl/go.sum
generated
@ -216,8 +216,8 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
|
|||||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
|
||||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||||
|
2
staging/src/k8s.io/legacy-cloud-providers/go.sum
generated
2
staging/src/k8s.io/legacy-cloud-providers/go.sum
generated
@ -292,7 +292,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
|
|||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
2
staging/src/k8s.io/metrics/go.sum
generated
2
staging/src/k8s.io/metrics/go.sum
generated
@ -160,7 +160,7 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
|
|||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
2
staging/src/k8s.io/pod-security-admission/go.sum
generated
2
staging/src/k8s.io/pod-security-admission/go.sum
generated
@ -250,7 +250,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
|
|||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
2
staging/src/k8s.io/sample-apiserver/go.sum
generated
2
staging/src/k8s.io/sample-apiserver/go.sum
generated
@ -248,7 +248,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
|
|||||||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
2
staging/src/k8s.io/sample-controller/go.sum
generated
2
staging/src/k8s.io/sample-controller/go.sum
generated
@ -165,7 +165,7 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
|
|||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
|
github.com/onsi/ginkgo/v2 v2.2.0 h1:3ZNA3L1c5FYDFTTxbFeVGGD8jYvjYauHD30YgLxVsNI=
|
||||||
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
34
vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md
generated
vendored
34
vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md
generated
vendored
@ -1,3 +1,27 @@
|
|||||||
|
## 2.2.0
|
||||||
|
|
||||||
|
### Generate real-time Progress Reports [f91377c]
|
||||||
|
|
||||||
|
Ginkgo can now generate Progress Reports to point users at the current running line of code (including a preview of the actual source code) and a best guess at the most relevant subroutines.
|
||||||
|
|
||||||
|
These Progress Reports allow users to debug stuck or slow tests without exiting the Ginkgo process. A Progress Report can be generated at any time by sending Ginkgo a `SIGINFO` (`^T` on MacOS/BSD) or `SIGUSR1`.
|
||||||
|
|
||||||
|
In addition, the user can specify `--poll-progress-after` and `--poll-progress-interval` to have Ginkgo start periodically emitting progress reports if a given node takes too long. These can be overriden/set on a per-node basis with the `PollProgressAfter` and `PollProgressInterval` decorators.
|
||||||
|
|
||||||
|
Progress Reports are emitted to stdout, and also stored in the machine-redable report formats that Ginkgo supports.
|
||||||
|
|
||||||
|
Ginkgo also uses this progress reporting infrastructure under the hood when handling timeouts and interrupts. This yields much more focused, useful, and informative stack traces than previously.
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- `BeforeSuite`, `AfterSuite`, `SynchronizedBeforeSuite`, `SynchronizedAfterSuite`, and `ReportAfterSuite` now support (the relevant subset of) decorators. These can be passed in _after_ the callback functions that are usually passed into these nodes.
|
||||||
|
|
||||||
|
As a result the **signature of these methods has changed** and now includes a trailing `args ...interface{}`. For most users simply using the DSL, this change is transparent. However if you were assigning one of these functions to a custom variable (or passing it around) then your code may need to change to reflect the new signature.
|
||||||
|
|
||||||
|
### Maintenance
|
||||||
|
- Modernize the invocation of Ginkgo in github actions [0ffde58]
|
||||||
|
- Update reocmmended CI settings in docs [896bbb9]
|
||||||
|
- Speed up unnecessarily slow integration test [6d3a90e]
|
||||||
|
|
||||||
## 2.1.6
|
## 2.1.6
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
@ -77,7 +101,7 @@ See [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkg
|
|||||||
Ginkgo 2.0 now has a Release Candidate. 1.16.5 advertises the existence of the RC.
|
Ginkgo 2.0 now has a Release Candidate. 1.16.5 advertises the existence of the RC.
|
||||||
1.16.5 deprecates GinkgoParallelNode in favor of GinkgoParallelProcess
|
1.16.5 deprecates GinkgoParallelNode in favor of GinkgoParallelProcess
|
||||||
|
|
||||||
You can silence the RC advertisement by setting an `ACK_GINKG_RC=true` environment variable or creating a file in your home directory called `.ack-ginkgo-rc`
|
You can silence the RC advertisement by setting an `ACK_GINKGO_RC=true` environment variable or creating a file in your home directory called `.ack-ginkgo-rc`
|
||||||
|
|
||||||
## 1.16.4
|
## 1.16.4
|
||||||
|
|
||||||
@ -184,7 +208,7 @@ You can silence the RC advertisement by setting an `ACK_GINKG_RC=true` environme
|
|||||||
- replace tail package with maintained one. this fixes go get errors (#667) [4ba33d4]
|
- replace tail package with maintained one. this fixes go get errors (#667) [4ba33d4]
|
||||||
- improve ginkgo performance - makes progress on #644 [a14f98e]
|
- improve ginkgo performance - makes progress on #644 [a14f98e]
|
||||||
- fix convert integration tests [1f8ba69]
|
- fix convert integration tests [1f8ba69]
|
||||||
- fix typo succesful -> successful (#663) [1ea49cf]
|
- fix typo successful -> successful (#663) [1ea49cf]
|
||||||
- Fix invalid link (#658) [b886136]
|
- Fix invalid link (#658) [b886136]
|
||||||
- convert utility : Include comments from source (#657) [1077c6d]
|
- convert utility : Include comments from source (#657) [1077c6d]
|
||||||
- Explain what BDD means [d79e7fb]
|
- Explain what BDD means [d79e7fb]
|
||||||
@ -278,7 +302,7 @@ You can silence the RC advertisement by setting an `ACK_GINKG_RC=true` environme
|
|||||||
- Make generated Junit file compatible with "Maven Surefire" (#488) [e51bee6]
|
- Make generated Junit file compatible with "Maven Surefire" (#488) [e51bee6]
|
||||||
- all: gofmt [000d317]
|
- all: gofmt [000d317]
|
||||||
- Increase eventually timeout to 30s [c73579c]
|
- Increase eventually timeout to 30s [c73579c]
|
||||||
- Clarify asynchronous test behaviour [294d8f4]
|
- Clarify asynchronous test behavior [294d8f4]
|
||||||
- Travis badge should only show master [26d2143]
|
- Travis badge should only show master [26d2143]
|
||||||
|
|
||||||
## 1.5.0 5/10/2018
|
## 1.5.0 5/10/2018
|
||||||
@ -296,13 +320,13 @@ You can silence the RC advertisement by setting an `ACK_GINKG_RC=true` environme
|
|||||||
- When running a test and calculating the coverage using the `-coverprofile` and `-outputdir` flags, Ginkgo fails with an error if the directory does not exist. This is due to an [issue in go 1.10](https://github.com/golang/go/issues/24588) (#446) [b36a6e0]
|
- When running a test and calculating the coverage using the `-coverprofile` and `-outputdir` flags, Ginkgo fails with an error if the directory does not exist. This is due to an [issue in go 1.10](https://github.com/golang/go/issues/24588) (#446) [b36a6e0]
|
||||||
- `unfocus` command ignores vendor folder (#459) [e5e551c, c556e43, a3b6351, 9a820dd]
|
- `unfocus` command ignores vendor folder (#459) [e5e551c, c556e43, a3b6351, 9a820dd]
|
||||||
- Ignore packages whose tests are all ignored by go (#456) [7430ca7, 6d8be98]
|
- Ignore packages whose tests are all ignored by go (#456) [7430ca7, 6d8be98]
|
||||||
- Increase the threshold when checking time measuments (#455) [2f714bf, 68f622c]
|
- Increase the threshold when checking time measurements (#455) [2f714bf, 68f622c]
|
||||||
- Fix race condition in coverage tests (#423) [a5a8ff7, ab9c08b]
|
- Fix race condition in coverage tests (#423) [a5a8ff7, ab9c08b]
|
||||||
- Add an extra new line after reporting spec run completion for test2json [874520d]
|
- Add an extra new line after reporting spec run completion for test2json [874520d]
|
||||||
- added name name field to junit reported testsuite [ae61c63]
|
- added name name field to junit reported testsuite [ae61c63]
|
||||||
- Do not set the run time of a spec when the dryRun flag is used (#438) [457e2d9, ba8e856]
|
- Do not set the run time of a spec when the dryRun flag is used (#438) [457e2d9, ba8e856]
|
||||||
- Process FWhen and FSpecify when unfocusing (#434) [9008c7b, ee65bd, df87dfe]
|
- Process FWhen and FSpecify when unfocusing (#434) [9008c7b, ee65bd, df87dfe]
|
||||||
- Synchronise the access to the state of specs to avoid race conditions (#430) [7d481bc, ae6829d]
|
- Synchronies the access to the state of specs to avoid race conditions (#430) [7d481bc, ae6829d]
|
||||||
- Added Duration on GinkgoTestDescription (#383) [5f49dad, 528417e, 0747408, 329d7ed]
|
- Added Duration on GinkgoTestDescription (#383) [5f49dad, 528417e, 0747408, 329d7ed]
|
||||||
- Fix Ginkgo stack trace on failure for Specify (#415) [b977ede, 65ca40e, 6c46eb8]
|
- Fix Ginkgo stack trace on failure for Specify (#415) [b977ede, 65ca40e, 6c46eb8]
|
||||||
- Update README with Go 1.6+, Golang -> Go (#409) [17f6b97, bc14b66, 20d1598]
|
- Update README with Go 1.6+, Golang -> Go (#409) [17f6b97, bc14b66, 20d1598]
|
||||||
|
2
vendor/github.com/onsi/ginkgo/v2/CONTRIBUTING.md
generated
vendored
2
vendor/github.com/onsi/ginkgo/v2/CONTRIBUTING.md
generated
vendored
@ -8,6 +8,6 @@ Your contributions to Ginkgo are essential for its long-term maintenance and imp
|
|||||||
- When adding to the Ginkgo CLI, note that there are very few unit tests. Please add an integration test.
|
- When adding to the Ginkgo CLI, note that there are very few unit tests. Please add an integration test.
|
||||||
- Make sure all the tests succeed via `ginkgo -r -p`
|
- Make sure all the tests succeed via `ginkgo -r -p`
|
||||||
- Vet your changes via `go vet ./...`
|
- Vet your changes via `go vet ./...`
|
||||||
- Update the documentation. Ginko uses `godoc` comments and documentation in `docs/index.md`. You can run `bundle exec jekyll serve` in the `docs` directory to preview your changes.
|
- Update the documentation. Ginkgo uses `godoc` comments and documentation in `docs/index.md`. You can run `bundle exec jekyll serve` in the `docs` directory to preview your changes.
|
||||||
|
|
||||||
Thanks for supporting Ginkgo!
|
Thanks for supporting Ginkgo!
|
33
vendor/github.com/onsi/ginkgo/v2/core_dsl.go
generated
vendored
33
vendor/github.com/onsi/ginkgo/v2/core_dsl.go
generated
vendored
@ -277,7 +277,7 @@ func RunSpecs(t GinkgoTestingT, description string, args ...interface{}) bool {
|
|||||||
suitePath, err = filepath.Abs(suitePath)
|
suitePath, err = filepath.Abs(suitePath)
|
||||||
exitIfErr(err)
|
exitIfErr(err)
|
||||||
|
|
||||||
passed, hasFocusedTests := global.Suite.Run(description, suiteLabels, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(suiteConfig.Timeout, client), client, suiteConfig)
|
passed, hasFocusedTests := global.Suite.Run(description, suiteLabels, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(suiteConfig.Timeout, client), client, internal.RegisterForProgressSignal, suiteConfig)
|
||||||
outputInterceptor.Shutdown()
|
outputInterceptor.Shutdown()
|
||||||
|
|
||||||
flagSet.ValidateDeprecations(deprecationTracker)
|
flagSet.ValidateDeprecations(deprecationTracker)
|
||||||
@ -504,6 +504,11 @@ func By(text string, callback ...func()) {
|
|||||||
Text: text,
|
Text: text,
|
||||||
}
|
}
|
||||||
t := time.Now()
|
t := time.Now()
|
||||||
|
global.Suite.SetProgressStepCursor(internal.ProgressStepCursor{
|
||||||
|
Text: text,
|
||||||
|
CodeLocation: types.NewCodeLocation(1),
|
||||||
|
StartTime: t,
|
||||||
|
})
|
||||||
AddReportEntry("By Step", ReportEntryVisibilityNever, Offset(1), &value, t)
|
AddReportEntry("By Step", ReportEntryVisibilityNever, Offset(1), &value, t)
|
||||||
formatter := formatter.NewWithNoColorBool(reporterConfig.NoColor)
|
formatter := formatter.NewWithNoColorBool(reporterConfig.NoColor)
|
||||||
GinkgoWriter.Println(formatter.F("{{bold}}STEP:{{/}} %s {{gray}}%s{{/}}", text, t.Format(types.GINKGO_TIME_FORMAT)))
|
GinkgoWriter.Println(formatter.F("{{bold}}STEP:{{/}} %s {{gray}}%s{{/}}", text, t.Format(types.GINKGO_TIME_FORMAT)))
|
||||||
@ -525,8 +530,10 @@ You may only register *one* BeforeSuite handler per test suite. You typically d
|
|||||||
You cannot nest any other Ginkgo nodes within a BeforeSuite node's closure.
|
You cannot nest any other Ginkgo nodes within a BeforeSuite node's closure.
|
||||||
You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite
|
You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite
|
||||||
*/
|
*/
|
||||||
func BeforeSuite(body func()) bool {
|
func BeforeSuite(body func(), args ...interface{}) bool {
|
||||||
return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeSuite, "", body))
|
combinedArgs := []interface{}{body}
|
||||||
|
combinedArgs = append(combinedArgs, args...)
|
||||||
|
return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeSuite, "", combinedArgs...))
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -540,8 +547,10 @@ You may only register *one* AfterSuite handler per test suite. You typically do
|
|||||||
You cannot nest any other Ginkgo nodes within an AfterSuite node's closure.
|
You cannot nest any other Ginkgo nodes within an AfterSuite node's closure.
|
||||||
You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite
|
You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite
|
||||||
*/
|
*/
|
||||||
func AfterSuite(body func()) bool {
|
func AfterSuite(body func(), args ...interface{}) bool {
|
||||||
return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterSuite, "", body))
|
combinedArgs := []interface{}{body}
|
||||||
|
combinedArgs = append(combinedArgs, args...)
|
||||||
|
return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterSuite, "", combinedArgs...))
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -563,8 +572,11 @@ The byte array returned by the first function is then passed to the second funct
|
|||||||
You cannot nest any other Ginkgo nodes within an SynchronizedBeforeSuite node's closure.
|
You cannot nest any other Ginkgo nodes within an SynchronizedBeforeSuite node's closure.
|
||||||
You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite
|
You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite
|
||||||
*/
|
*/
|
||||||
func SynchronizedBeforeSuite(process1Body func() []byte, allProcessBody func([]byte)) bool {
|
func SynchronizedBeforeSuite(process1Body func() []byte, allProcessBody func([]byte), args ...interface{}) bool {
|
||||||
return pushNode(internal.NewSynchronizedBeforeSuiteNode(process1Body, allProcessBody, types.NewCodeLocation(1)))
|
combinedArgs := []interface{}{process1Body, allProcessBody}
|
||||||
|
combinedArgs = append(combinedArgs, args...)
|
||||||
|
|
||||||
|
return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeSynchronizedBeforeSuite, "", combinedArgs...))
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -580,8 +592,11 @@ Note that you can also use DeferCleanup() in SynchronizedBeforeSuite to accompli
|
|||||||
You cannot nest any other Ginkgo nodes within an SynchronizedAfterSuite node's closure.
|
You cannot nest any other Ginkgo nodes within an SynchronizedAfterSuite node's closure.
|
||||||
You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite
|
You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite
|
||||||
*/
|
*/
|
||||||
func SynchronizedAfterSuite(allProcessBody func(), process1Body func()) bool {
|
func SynchronizedAfterSuite(allProcessBody func(), process1Body func(), args ...interface{}) bool {
|
||||||
return pushNode(internal.NewSynchronizedAfterSuiteNode(allProcessBody, process1Body, types.NewCodeLocation(1)))
|
combinedArgs := []interface{}{allProcessBody, process1Body}
|
||||||
|
combinedArgs = append(combinedArgs, args...)
|
||||||
|
|
||||||
|
return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeSynchronizedAfterSuite, "", combinedArgs...))
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
16
vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go
generated
vendored
16
vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go
generated
vendored
@ -59,7 +59,7 @@ OncePerOrdered is a decorator that allows you to mark outer BeforeEach, AfterEac
|
|||||||
per ordered context. Normally these setup nodes run around each individual spec, with OncePerOrdered they will run once around the set of specs in an ordered container.
|
per ordered context. Normally these setup nodes run around each individual spec, with OncePerOrdered they will run once around the set of specs in an ordered container.
|
||||||
The behavior for non-Ordered containers/specs is unchanged.
|
The behavior for non-Ordered containers/specs is unchanged.
|
||||||
|
|
||||||
You can learh more here: https://onsi.github.io/ginkgo/#setup-around-ordered-containers-the-onceperordered-decorator
|
You can learn more here: https://onsi.github.io/ginkgo/#setup-around-ordered-containers-the-onceperordered-decorator
|
||||||
You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference
|
You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference
|
||||||
*/
|
*/
|
||||||
const OncePerOrdered = internal.OncePerOrdered
|
const OncePerOrdered = internal.OncePerOrdered
|
||||||
@ -81,6 +81,20 @@ You can learn more here: https://onsi.github.io/ginkgo/#spec-labels
|
|||||||
*/
|
*/
|
||||||
type Labels = internal.Labels
|
type Labels = internal.Labels
|
||||||
|
|
||||||
|
/*
|
||||||
|
PollProgressAfter allows you to override the configured value for --poll-progress-after for a particular node.
|
||||||
|
|
||||||
|
Ginkgo will start emitting node progress if the node is still running after a duration of PollProgressAfter. This allows you to get quicker feedback about the state of a long-running spec.
|
||||||
|
*/
|
||||||
|
type PollProgressAfter = internal.PollProgressAfter
|
||||||
|
|
||||||
|
/*
|
||||||
|
PollProgressInterval allows you to override the configured value for --poll-progress-interval for a particular node.
|
||||||
|
|
||||||
|
Once a node has been running for longer than PollProgressAfter Ginkgo will emit node progress periodically at an interval of PollProgresInterval.
|
||||||
|
*/
|
||||||
|
type PollProgressInterval = internal.PollProgressInterval
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SuppressProgressReporting is a decorator that allows you to disable progress reporting of a particular node. This is useful if `ginkgo -v -progress` is generating too much noise; particularly
|
SuppressProgressReporting is a decorator that allows you to disable progress reporting of a particular node. This is useful if `ginkgo -v -progress` is generating too much noise; particularly
|
||||||
if you have a `ReportAfterEach` node that is running for every skipped spec and is generating lots of progress reports.
|
if you have a `ReportAfterEach` node that is running for every skipped spec and is generating lots of progress reports.
|
||||||
|
2
vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go
generated
vendored
2
vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go
generated
vendored
@ -13,7 +13,7 @@ import (
|
|||||||
Deprecated: Done Channel for asynchronous testing
|
Deprecated: Done Channel for asynchronous testing
|
||||||
|
|
||||||
The Done channel pattern is no longer supported in Ginkgo 2.0.
|
The Done channel pattern is no longer supported in Ginkgo 2.0.
|
||||||
See here for better patterns for asynchronouse testing: https://onsi.github.io/ginkgo/#patterns-for-asynchronous-testing
|
See here for better patterns for asynchronous testing: https://onsi.github.io/ginkgo/#patterns-for-asynchronous-testing
|
||||||
|
|
||||||
For a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-async-testing
|
For a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-async-testing
|
||||||
*/
|
*/
|
||||||
|
5
vendor/github.com/onsi/ginkgo/v2/internal/group.go
generated
vendored
5
vendor/github.com/onsi/ginkgo/v2/internal/group.go
generated
vendored
@ -279,7 +279,10 @@ func (g *group) run(specs Specs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, spec := range g.specs {
|
for _, spec := range g.specs {
|
||||||
|
g.suite.selectiveLock.Lock()
|
||||||
g.suite.currentSpecReport = g.initialReportForSpec(spec)
|
g.suite.currentSpecReport = g.initialReportForSpec(spec)
|
||||||
|
g.suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
g.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure = g.evaluateSkipStatus(spec)
|
g.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure = g.evaluateSkipStatus(spec)
|
||||||
g.suite.reporter.WillRun(g.suite.currentSpecReport)
|
g.suite.reporter.WillRun(g.suite.currentSpecReport)
|
||||||
g.suite.reportEach(spec, types.NodeTypeReportBeforeEach)
|
g.suite.reportEach(spec, types.NodeTypeReportBeforeEach)
|
||||||
@ -318,7 +321,9 @@ func (g *group) run(specs Specs) {
|
|||||||
if g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates) {
|
if g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates) {
|
||||||
g.succeeded = false
|
g.succeeded = false
|
||||||
}
|
}
|
||||||
|
g.suite.selectiveLock.Lock()
|
||||||
g.suite.currentSpecReport = types.SpecReport{}
|
g.suite.currentSpecReport = types.SpecReport{}
|
||||||
|
g.suite.selectiveLock.Unlock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go
generated
vendored
24
vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go
generated
vendored
@ -4,12 +4,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"runtime"
|
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/onsi/ginkgo/v2/formatter"
|
|
||||||
"github.com/onsi/ginkgo/v2/internal/parallel_support"
|
"github.com/onsi/ginkgo/v2/internal/parallel_support"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -50,7 +48,7 @@ type InterruptHandlerInterface interface {
|
|||||||
Status() InterruptStatus
|
Status() InterruptStatus
|
||||||
SetInterruptPlaceholderMessage(string)
|
SetInterruptPlaceholderMessage(string)
|
||||||
ClearInterruptPlaceholderMessage()
|
ClearInterruptPlaceholderMessage()
|
||||||
InterruptMessageWithStackTraces() string
|
InterruptMessage() (string, bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
type InterruptHandler struct {
|
type InterruptHandler struct {
|
||||||
@ -190,23 +188,9 @@ func (handler *InterruptHandler) ClearInterruptPlaceholderMessage() {
|
|||||||
handler.interruptPlaceholderMessage = ""
|
handler.interruptPlaceholderMessage = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (handler *InterruptHandler) InterruptMessageWithStackTraces() string {
|
func (handler *InterruptHandler) InterruptMessage() (string, bool) {
|
||||||
handler.lock.Lock()
|
handler.lock.Lock()
|
||||||
out := fmt.Sprintf("%s\n\n", handler.interruptCause.String())
|
out := fmt.Sprintf("%s", handler.interruptCause.String())
|
||||||
defer handler.lock.Unlock()
|
defer handler.lock.Unlock()
|
||||||
if handler.interruptCause == InterruptCauseAbortByOtherProcess {
|
return out, handler.interruptCause != InterruptCauseAbortByOtherProcess
|
||||||
return out
|
|
||||||
}
|
|
||||||
out += "Here's a stack trace of all running goroutines:\n"
|
|
||||||
buf := make([]byte, 8192)
|
|
||||||
for {
|
|
||||||
n := runtime.Stack(buf, true)
|
|
||||||
if n < len(buf) {
|
|
||||||
buf = buf[:n]
|
|
||||||
break
|
|
||||||
}
|
|
||||||
buf = make([]byte, 2*len(buf))
|
|
||||||
}
|
|
||||||
out += formatter.Fi(1, "%s", string(buf))
|
|
||||||
return out
|
|
||||||
}
|
}
|
||||||
|
96
vendor/github.com/onsi/ginkgo/v2/internal/node.go
generated
vendored
96
vendor/github.com/onsi/ginkgo/v2/internal/node.go
generated
vendored
@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"sort"
|
"sort"
|
||||||
|
"time"
|
||||||
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@ -48,6 +49,8 @@ type Node struct {
|
|||||||
MarkedSuppressProgressReporting bool
|
MarkedSuppressProgressReporting bool
|
||||||
FlakeAttempts int
|
FlakeAttempts int
|
||||||
Labels Labels
|
Labels Labels
|
||||||
|
PollProgressAfter time.Duration
|
||||||
|
PollProgressInterval time.Duration
|
||||||
|
|
||||||
NodeIDWhereCleanupWasGenerated uint
|
NodeIDWhereCleanupWasGenerated uint
|
||||||
}
|
}
|
||||||
@ -71,6 +74,8 @@ type FlakeAttempts uint
|
|||||||
type Offset uint
|
type Offset uint
|
||||||
type Done chan<- interface{} // Deprecated Done Channel for asynchronous testing
|
type Done chan<- interface{} // Deprecated Done Channel for asynchronous testing
|
||||||
type Labels []string
|
type Labels []string
|
||||||
|
type PollProgressInterval time.Duration
|
||||||
|
type PollProgressAfter time.Duration
|
||||||
|
|
||||||
func UnionOfLabels(labels ...Labels) Labels {
|
func UnionOfLabels(labels ...Labels) Labels {
|
||||||
out := Labels{}
|
out := Labels{}
|
||||||
@ -123,6 +128,10 @@ func isDecoration(arg interface{}) bool {
|
|||||||
return true
|
return true
|
||||||
case t == reflect.TypeOf(Labels{}):
|
case t == reflect.TypeOf(Labels{}):
|
||||||
return true
|
return true
|
||||||
|
case t == reflect.TypeOf(PollProgressInterval(0)):
|
||||||
|
return true
|
||||||
|
case t == reflect.TypeOf(PollProgressAfter(0)):
|
||||||
|
return true
|
||||||
case t.Kind() == reflect.Slice && isSliceOfDecorations(arg):
|
case t.Kind() == reflect.Slice && isSliceOfDecorations(arg):
|
||||||
return true
|
return true
|
||||||
default:
|
default:
|
||||||
@ -152,7 +161,10 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
|
|||||||
Labels: Labels{},
|
Labels: Labels{},
|
||||||
CodeLocation: types.NewCodeLocation(baseOffset),
|
CodeLocation: types.NewCodeLocation(baseOffset),
|
||||||
NestingLevel: -1,
|
NestingLevel: -1,
|
||||||
|
PollProgressAfter: -1,
|
||||||
|
PollProgressInterval: -1,
|
||||||
}
|
}
|
||||||
|
|
||||||
errors := []error{}
|
errors := []error{}
|
||||||
appendError := func(err error) {
|
appendError := func(err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -219,6 +231,16 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
|
|||||||
if !nodeType.Is(types.NodeTypesForContainerAndIt) {
|
if !nodeType.Is(types.NodeTypesForContainerAndIt) {
|
||||||
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "FlakeAttempts"))
|
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "FlakeAttempts"))
|
||||||
}
|
}
|
||||||
|
case t == reflect.TypeOf(PollProgressAfter(0)):
|
||||||
|
node.PollProgressAfter = time.Duration(arg.(PollProgressAfter))
|
||||||
|
if nodeType.Is(types.NodeTypeContainer) {
|
||||||
|
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "PollProgressAfter"))
|
||||||
|
}
|
||||||
|
case t == reflect.TypeOf(PollProgressInterval(0)):
|
||||||
|
node.PollProgressInterval = time.Duration(arg.(PollProgressInterval))
|
||||||
|
if nodeType.Is(types.NodeTypeContainer) {
|
||||||
|
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "PollProgressInterval"))
|
||||||
|
}
|
||||||
case t == reflect.TypeOf(Labels{}):
|
case t == reflect.TypeOf(Labels{}):
|
||||||
if !nodeType.Is(types.NodeTypesForContainerAndIt) {
|
if !nodeType.Is(types.NodeTypesForContainerAndIt) {
|
||||||
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Label"))
|
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Label"))
|
||||||
@ -233,17 +255,42 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
|
|||||||
}
|
}
|
||||||
case t.Kind() == reflect.Func:
|
case t.Kind() == reflect.Func:
|
||||||
if nodeType.Is(types.NodeTypeReportBeforeEach | types.NodeTypeReportAfterEach) {
|
if nodeType.Is(types.NodeTypeReportBeforeEach | types.NodeTypeReportAfterEach) {
|
||||||
if node.ReportEachBody != nil {
|
if node.ReportEachBody == nil {
|
||||||
|
node.ReportEachBody = arg.(func(types.SpecReport))
|
||||||
|
} else {
|
||||||
appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))
|
appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))
|
||||||
trackedFunctionError = true
|
trackedFunctionError = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
} else if nodeType.Is(types.NodeTypeSynchronizedBeforeSuite) {
|
||||||
//we can trust that the function is valid because the compiler has our back here
|
if node.SynchronizedBeforeSuiteProc1Body == nil {
|
||||||
node.ReportEachBody = arg.(func(types.SpecReport))
|
node.SynchronizedBeforeSuiteProc1Body = arg.(func() []byte)
|
||||||
|
} else if node.SynchronizedBeforeSuiteAllProcsBody == nil {
|
||||||
|
node.SynchronizedBeforeSuiteAllProcsBody = arg.(func([]byte))
|
||||||
|
} else {
|
||||||
|
appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))
|
||||||
|
trackedFunctionError = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
} else if nodeType.Is(types.NodeTypeSynchronizedAfterSuite) {
|
||||||
|
if node.SynchronizedAfterSuiteAllProcsBody == nil {
|
||||||
|
node.SynchronizedAfterSuiteAllProcsBody = arg.(func())
|
||||||
|
} else if node.SynchronizedAfterSuiteProc1Body == nil {
|
||||||
|
node.SynchronizedAfterSuiteProc1Body = arg.(func())
|
||||||
|
} else {
|
||||||
|
appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))
|
||||||
|
trackedFunctionError = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else if nodeType.Is(types.NodeTypeReportAfterSuite) {
|
||||||
|
if node.ReportAfterSuiteBody == nil {
|
||||||
|
node.ReportAfterSuiteBody = arg.(func(types.Report))
|
||||||
|
} else {
|
||||||
|
appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))
|
||||||
|
trackedFunctionError = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if node.Body != nil {
|
if node.Body != nil {
|
||||||
appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))
|
appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType))
|
||||||
trackedFunctionError = true
|
trackedFunctionError = true
|
||||||
@ -262,6 +309,7 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
|
|||||||
deprecatedAsyncBody := arg.(func(Done))
|
deprecatedAsyncBody := arg.(func(Done))
|
||||||
node.Body = func() { deprecatedAsyncBody(make(Done)) }
|
node.Body = func() { deprecatedAsyncBody(make(Done)) }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
remainingArgs = append(remainingArgs, arg)
|
remainingArgs = append(remainingArgs, arg)
|
||||||
}
|
}
|
||||||
@ -272,7 +320,7 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
|
|||||||
appendError(types.GinkgoErrors.InvalidDeclarationOfFocusedAndPending(node.CodeLocation, nodeType))
|
appendError(types.GinkgoErrors.InvalidDeclarationOfFocusedAndPending(node.CodeLocation, nodeType))
|
||||||
}
|
}
|
||||||
|
|
||||||
if node.Body == nil && node.ReportEachBody == nil && !node.MarkedPending && !trackedFunctionError {
|
if !node.NodeType.Is(types.NodeTypeReportBeforeEach|types.NodeTypeReportAfterEach|types.NodeTypeSynchronizedBeforeSuite|types.NodeTypeSynchronizedAfterSuite|types.NodeTypeReportAfterSuite) && node.Body == nil && !node.MarkedPending && !trackedFunctionError {
|
||||||
appendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType))
|
appendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType))
|
||||||
}
|
}
|
||||||
for _, arg := range remainingArgs {
|
for _, arg := range remainingArgs {
|
||||||
@ -286,36 +334,6 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
|
|||||||
return node, errors
|
return node, errors
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSynchronizedBeforeSuiteNode(proc1Body func() []byte, allProcsBody func([]byte), codeLocation types.CodeLocation) (Node, []error) {
|
|
||||||
return Node{
|
|
||||||
ID: UniqueNodeID(),
|
|
||||||
NodeType: types.NodeTypeSynchronizedBeforeSuite,
|
|
||||||
SynchronizedBeforeSuiteProc1Body: proc1Body,
|
|
||||||
SynchronizedBeforeSuiteAllProcsBody: allProcsBody,
|
|
||||||
CodeLocation: codeLocation,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSynchronizedAfterSuiteNode(allProcsBody func(), proc1Body func(), codeLocation types.CodeLocation) (Node, []error) {
|
|
||||||
return Node{
|
|
||||||
ID: UniqueNodeID(),
|
|
||||||
NodeType: types.NodeTypeSynchronizedAfterSuite,
|
|
||||||
SynchronizedAfterSuiteAllProcsBody: allProcsBody,
|
|
||||||
SynchronizedAfterSuiteProc1Body: proc1Body,
|
|
||||||
CodeLocation: codeLocation,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewReportAfterSuiteNode(text string, body func(types.Report), codeLocation types.CodeLocation) (Node, []error) {
|
|
||||||
return Node{
|
|
||||||
ID: UniqueNodeID(),
|
|
||||||
Text: text,
|
|
||||||
NodeType: types.NodeTypeReportAfterSuite,
|
|
||||||
ReportAfterSuiteBody: body,
|
|
||||||
CodeLocation: codeLocation,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewCleanupNode(fail func(string, types.CodeLocation), args ...interface{}) (Node, []error) {
|
func NewCleanupNode(fail func(string, types.CodeLocation), args ...interface{}) (Node, []error) {
|
||||||
baseOffset := 2
|
baseOffset := 2
|
||||||
node := Node{
|
node := Node{
|
||||||
@ -323,6 +341,8 @@ func NewCleanupNode(fail func(string, types.CodeLocation), args ...interface{})
|
|||||||
NodeType: types.NodeTypeCleanupInvalid,
|
NodeType: types.NodeTypeCleanupInvalid,
|
||||||
CodeLocation: types.NewCodeLocation(baseOffset),
|
CodeLocation: types.NewCodeLocation(baseOffset),
|
||||||
NestingLevel: -1,
|
NestingLevel: -1,
|
||||||
|
PollProgressAfter: -1,
|
||||||
|
PollProgressInterval: -1,
|
||||||
}
|
}
|
||||||
remainingArgs := []interface{}{}
|
remainingArgs := []interface{}{}
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
@ -331,6 +351,10 @@ func NewCleanupNode(fail func(string, types.CodeLocation), args ...interface{})
|
|||||||
node.CodeLocation = types.NewCodeLocation(baseOffset + int(arg.(Offset)))
|
node.CodeLocation = types.NewCodeLocation(baseOffset + int(arg.(Offset)))
|
||||||
case t == reflect.TypeOf(types.CodeLocation{}):
|
case t == reflect.TypeOf(types.CodeLocation{}):
|
||||||
node.CodeLocation = arg.(types.CodeLocation)
|
node.CodeLocation = arg.(types.CodeLocation)
|
||||||
|
case t == reflect.TypeOf(PollProgressAfter(0)):
|
||||||
|
node.PollProgressAfter = time.Duration(arg.(PollProgressAfter))
|
||||||
|
case t == reflect.TypeOf(PollProgressInterval(0)):
|
||||||
|
node.PollProgressInterval = time.Duration(arg.(PollProgressInterval))
|
||||||
default:
|
default:
|
||||||
remainingArgs = append(remainingArgs, arg)
|
remainingArgs = append(remainingArgs, arg)
|
||||||
}
|
}
|
||||||
|
2
vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go
generated
vendored
2
vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go
generated
vendored
@ -143,7 +143,7 @@ func (interceptor *genericOutputInterceptor) ResumeIntercepting() {
|
|||||||
go startPipeFactory(interceptor.pipeChannel, interceptor.shutdown)
|
go startPipeFactory(interceptor.pipeChannel, interceptor.shutdown)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now we make a pipe, we'll use this to redirect the input to the 1 and 2 file descriptors (this is how everything else in the world is tring to log to stdout and stderr)
|
// Now we make a pipe, we'll use this to redirect the input to the 1 and 2 file descriptors (this is how everything else in the world is string to log to stdout and stderr)
|
||||||
// we get the pipe from our pipe factory. it runs in the background so we can request the next pipe while the spec being intercepted is running
|
// we get the pipe from our pipe factory. it runs in the background so we can request the next pipe while the spec being intercepted is running
|
||||||
interceptor.pipe = <-interceptor.pipeChannel
|
interceptor.pipe = <-interceptor.pipeChannel
|
||||||
|
|
||||||
|
2
vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go
generated
vendored
2
vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go
generated
vendored
@ -28,7 +28,7 @@ func (impl *dupSyscallOutputInterceptorImpl) CreateStdoutStderrClones() (*os.Fil
|
|||||||
|
|
||||||
// And then wrap the clone file descriptors in files.
|
// And then wrap the clone file descriptors in files.
|
||||||
// One benefit of this (that we don't use yet) is that we can actually write
|
// One benefit of this (that we don't use yet) is that we can actually write
|
||||||
// to these files to emit output to the console evne though we're intercepting output
|
// to these files to emit output to the console even though we're intercepting output
|
||||||
stdoutClone := os.NewFile(uintptr(stdoutCloneFD), "stdout-clone")
|
stdoutClone := os.NewFile(uintptr(stdoutCloneFD), "stdout-clone")
|
||||||
stderrClone := os.NewFile(uintptr(stderrCloneFD), "stderr-clone")
|
stderrClone := os.NewFile(uintptr(stderrCloneFD), "stderr-clone")
|
||||||
|
|
||||||
|
1
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go
generated
vendored
1
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go
generated
vendored
@ -49,6 +49,7 @@ type Client interface {
|
|||||||
FetchNextCounter() (int, error)
|
FetchNextCounter() (int, error)
|
||||||
PostAbort() error
|
PostAbort() error
|
||||||
ShouldAbort() bool
|
ShouldAbort() bool
|
||||||
|
PostEmitProgressReport(report types.ProgressReport) error
|
||||||
Write(p []byte) (int, error)
|
Write(p []byte) (int, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go
generated
vendored
4
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go
generated
vendored
@ -94,6 +94,10 @@ func (client *httpClient) PostSuiteDidEnd(report types.Report) error {
|
|||||||
return client.post("/suite-did-end", report)
|
return client.post("/suite-did-end", report)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (client *httpClient) PostEmitProgressReport(report types.ProgressReport) error {
|
||||||
|
return client.post("/progress-report", report)
|
||||||
|
}
|
||||||
|
|
||||||
func (client *httpClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error {
|
func (client *httpClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error {
|
||||||
beforeSuiteState := BeforeSuiteState{
|
beforeSuiteState := BeforeSuiteState{
|
||||||
State: state,
|
State: state,
|
||||||
|
9
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go
generated
vendored
9
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go
generated
vendored
@ -49,6 +49,7 @@ func (server *httpServer) Start() {
|
|||||||
mux.HandleFunc("/did-run", server.didRun)
|
mux.HandleFunc("/did-run", server.didRun)
|
||||||
mux.HandleFunc("/suite-did-end", server.specSuiteDidEnd)
|
mux.HandleFunc("/suite-did-end", server.specSuiteDidEnd)
|
||||||
mux.HandleFunc("/emit-output", server.emitOutput)
|
mux.HandleFunc("/emit-output", server.emitOutput)
|
||||||
|
mux.HandleFunc("/progress-report", server.emitProgressReport)
|
||||||
|
|
||||||
//synchronization endpoints
|
//synchronization endpoints
|
||||||
mux.HandleFunc("/before-suite-completed", server.handleBeforeSuiteCompleted)
|
mux.HandleFunc("/before-suite-completed", server.handleBeforeSuiteCompleted)
|
||||||
@ -155,6 +156,14 @@ func (server *httpServer) emitOutput(writer http.ResponseWriter, request *http.R
|
|||||||
server.handleError(server.handler.EmitOutput(output, &n), writer)
|
server.handleError(server.handler.EmitOutput(output, &n), writer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (server *httpServer) emitProgressReport(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
var report types.ProgressReport
|
||||||
|
if !server.decode(writer, request, &report) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
server.handleError(server.handler.EmitProgressReport(report, voidReceiver), writer)
|
||||||
|
}
|
||||||
|
|
||||||
func (server *httpServer) handleBeforeSuiteCompleted(writer http.ResponseWriter, request *http.Request) {
|
func (server *httpServer) handleBeforeSuiteCompleted(writer http.ResponseWriter, request *http.Request) {
|
||||||
var beforeSuiteState BeforeSuiteState
|
var beforeSuiteState BeforeSuiteState
|
||||||
if !server.decode(writer, request, &beforeSuiteState) {
|
if !server.decode(writer, request, &beforeSuiteState) {
|
||||||
|
4
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go
generated
vendored
4
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go
generated
vendored
@ -72,6 +72,10 @@ func (client *rpcClient) Write(p []byte) (int, error) {
|
|||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (client *rpcClient) PostEmitProgressReport(report types.ProgressReport) error {
|
||||||
|
return client.client.Call("Server.EmitProgressReport", report, voidReceiver)
|
||||||
|
}
|
||||||
|
|
||||||
func (client *rpcClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error {
|
func (client *rpcClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error {
|
||||||
beforeSuiteState := BeforeSuiteState{
|
beforeSuiteState := BeforeSuiteState{
|
||||||
State: state,
|
State: state,
|
||||||
|
7
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go
generated
vendored
7
vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go
generated
vendored
@ -108,6 +108,13 @@ func (handler *ServerHandler) EmitOutput(output []byte, n *int) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (handler *ServerHandler) EmitProgressReport(report types.ProgressReport, _ *Void) error {
|
||||||
|
handler.lock.Lock()
|
||||||
|
defer handler.lock.Unlock()
|
||||||
|
handler.reporter.EmitProgressReport(report)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (handler *ServerHandler) registerAlive(proc int, alive func() bool) {
|
func (handler *ServerHandler) registerAlive(proc int, alive func() bool) {
|
||||||
handler.lock.Lock()
|
handler.lock.Lock()
|
||||||
defer handler.lock.Unlock()
|
defer handler.lock.Unlock()
|
||||||
|
289
vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go
generated
vendored
Normal file
289
vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go
generated
vendored
Normal file
@ -0,0 +1,289 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/onsi/ginkgo/v2/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _SOURCE_CACHE = map[string][]string{}
|
||||||
|
|
||||||
|
type ProgressSignalRegistrar func(func()) context.CancelFunc
|
||||||
|
|
||||||
|
func RegisterForProgressSignal(handler func()) context.CancelFunc {
|
||||||
|
signalChannel := make(chan os.Signal, 1)
|
||||||
|
if len(PROGRESS_SIGNALS) > 0 {
|
||||||
|
signal.Notify(signalChannel, PROGRESS_SIGNALS...)
|
||||||
|
}
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-signalChannel:
|
||||||
|
handler()
|
||||||
|
case <-ctx.Done():
|
||||||
|
signal.Stop(signalChannel)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
return cancel
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProgressStepCursor struct {
|
||||||
|
Text string
|
||||||
|
CodeLocation types.CodeLocation
|
||||||
|
StartTime time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewProgressReport(isRunningInParallel bool, report types.SpecReport, currentNode Node, currentNodeStartTime time.Time, currentStep ProgressStepCursor, gwOutput string, sourceRoots []string, includeAll bool) (types.ProgressReport, error) {
|
||||||
|
pr := types.ProgressReport{
|
||||||
|
ParallelProcess: report.ParallelProcess,
|
||||||
|
RunningInParallel: isRunningInParallel,
|
||||||
|
|
||||||
|
Time: time.Now(),
|
||||||
|
|
||||||
|
ContainerHierarchyTexts: report.ContainerHierarchyTexts,
|
||||||
|
LeafNodeText: report.LeafNodeText,
|
||||||
|
LeafNodeLocation: report.LeafNodeLocation,
|
||||||
|
SpecStartTime: report.StartTime,
|
||||||
|
|
||||||
|
CurrentNodeType: currentNode.NodeType,
|
||||||
|
CurrentNodeText: currentNode.Text,
|
||||||
|
CurrentNodeLocation: currentNode.CodeLocation,
|
||||||
|
CurrentNodeStartTime: currentNodeStartTime,
|
||||||
|
|
||||||
|
CurrentStepText: currentStep.Text,
|
||||||
|
CurrentStepLocation: currentStep.CodeLocation,
|
||||||
|
CurrentStepStartTime: currentStep.StartTime,
|
||||||
|
|
||||||
|
CapturedGinkgoWriterOutput: gwOutput,
|
||||||
|
GinkgoWriterOffset: len(gwOutput),
|
||||||
|
}
|
||||||
|
|
||||||
|
goroutines, err := extractRunningGoroutines()
|
||||||
|
if err != nil {
|
||||||
|
return pr, err
|
||||||
|
}
|
||||||
|
pr.Goroutines = goroutines
|
||||||
|
|
||||||
|
// now we want to try to find goroutines of interest. these will be goroutines that have any function calls with code in packagesOfInterest:
|
||||||
|
packagesOfInterest := map[string]bool{}
|
||||||
|
packageFromFilename := func(filename string) string {
|
||||||
|
return filepath.Dir(filename)
|
||||||
|
}
|
||||||
|
addPackageFor := func(filename string) {
|
||||||
|
if filename != "" {
|
||||||
|
packagesOfInterest[packageFromFilename(filename)] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isPackageOfInterest := func(filename string) bool {
|
||||||
|
stackPackage := packageFromFilename(filename)
|
||||||
|
for packageOfInterest := range packagesOfInterest {
|
||||||
|
if strings.HasPrefix(stackPackage, packageOfInterest) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for _, location := range report.ContainerHierarchyLocations {
|
||||||
|
addPackageFor(location.FileName)
|
||||||
|
}
|
||||||
|
addPackageFor(report.LeafNodeLocation.FileName)
|
||||||
|
addPackageFor(currentNode.CodeLocation.FileName)
|
||||||
|
addPackageFor(currentStep.CodeLocation.FileName)
|
||||||
|
|
||||||
|
//First, we find the SpecGoroutine - this will be the goroutine that includes `runNode`
|
||||||
|
specGoRoutineIdx := -1
|
||||||
|
runNodeFunctionCallIdx := -1
|
||||||
|
OUTER:
|
||||||
|
for goroutineIdx, goroutine := range pr.Goroutines {
|
||||||
|
for functionCallIdx, functionCall := range goroutine.Stack {
|
||||||
|
if strings.Contains(functionCall.Function, "ginkgo/v2/internal.(*Suite).runNode.func") {
|
||||||
|
specGoRoutineIdx = goroutineIdx
|
||||||
|
runNodeFunctionCallIdx = functionCallIdx
|
||||||
|
break OUTER
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Now, we find the first non-Ginkgo function call
|
||||||
|
if specGoRoutineIdx > -1 {
|
||||||
|
for runNodeFunctionCallIdx >= 0 {
|
||||||
|
fn := goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Function
|
||||||
|
file := goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Filename
|
||||||
|
// these are all things that could potentially happen from within ginkgo
|
||||||
|
if strings.Contains(fn, "ginkgo/v2/internal") || strings.Contains(fn, "reflect.Value") || strings.Contains(file, "ginkgo/table_dsl") || strings.Contains(file, "ginkgo/core_dsl") {
|
||||||
|
runNodeFunctionCallIdx--
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if strings.Contains(goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Function, "ginkgo/table_dsl") {
|
||||||
|
|
||||||
|
}
|
||||||
|
//found it! lets add its package of interest
|
||||||
|
addPackageFor(goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Filename)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ginkgoEntryPointIdx := -1
|
||||||
|
OUTER_GINKGO_ENTRY_POINT:
|
||||||
|
for goroutineIdx, goroutine := range pr.Goroutines {
|
||||||
|
for _, functionCall := range goroutine.Stack {
|
||||||
|
if strings.Contains(functionCall.Function, "ginkgo/v2.RunSpecs") {
|
||||||
|
ginkgoEntryPointIdx = goroutineIdx
|
||||||
|
break OUTER_GINKGO_ENTRY_POINT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now we go through all goroutines and highlight any lines with packages in `packagesOfInterest`
|
||||||
|
// Any goroutines with highlighted lines end up in the HighlightGoRoutines
|
||||||
|
for goroutineIdx, goroutine := range pr.Goroutines {
|
||||||
|
if goroutineIdx == ginkgoEntryPointIdx {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if goroutineIdx == specGoRoutineIdx {
|
||||||
|
pr.Goroutines[goroutineIdx].IsSpecGoroutine = true
|
||||||
|
}
|
||||||
|
for functionCallIdx, functionCall := range goroutine.Stack {
|
||||||
|
if isPackageOfInterest(functionCall.Filename) {
|
||||||
|
goroutine.Stack[functionCallIdx].Highlight = true
|
||||||
|
goroutine.Stack[functionCallIdx].Source, goroutine.Stack[functionCallIdx].SourceHighlight = fetchSource(functionCall.Filename, functionCall.Line, 2, sourceRoots)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !includeAll {
|
||||||
|
goroutines := []types.Goroutine{pr.SpecGoroutine()}
|
||||||
|
goroutines = append(goroutines, pr.HighlightedGoroutines()...)
|
||||||
|
pr.Goroutines = goroutines
|
||||||
|
}
|
||||||
|
|
||||||
|
return pr, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func extractRunningGoroutines() ([]types.Goroutine, error) {
|
||||||
|
var stack []byte
|
||||||
|
for size := 64 * 1024; ; size *= 2 {
|
||||||
|
stack = make([]byte, size)
|
||||||
|
if n := runtime.Stack(stack, true); n < size {
|
||||||
|
stack = stack[:n]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r := bufio.NewReader(bytes.NewReader(stack))
|
||||||
|
out := []types.Goroutine{}
|
||||||
|
idx := -1
|
||||||
|
for {
|
||||||
|
line, err := r.ReadString('\n')
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
line = strings.TrimSuffix(line, "\n")
|
||||||
|
|
||||||
|
//skip blank lines
|
||||||
|
if line == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
//parse headers for new goroutine frames
|
||||||
|
if strings.HasPrefix(line, "goroutine") {
|
||||||
|
out = append(out, types.Goroutine{})
|
||||||
|
idx = len(out) - 1
|
||||||
|
|
||||||
|
line = strings.TrimPrefix(line, "goroutine ")
|
||||||
|
line = strings.TrimSuffix(line, ":")
|
||||||
|
fields := strings.SplitN(line, " ", 2)
|
||||||
|
if len(fields) != 2 {
|
||||||
|
return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid goroutine frame header: %s", line))
|
||||||
|
}
|
||||||
|
out[idx].ID, err = strconv.ParseUint(fields[0], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid goroutine ID: %s", fields[1]))
|
||||||
|
}
|
||||||
|
|
||||||
|
out[idx].State = strings.TrimSuffix(strings.TrimPrefix(fields[1], "["), "]")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
//if we are here we must be at a function call entry in the stack
|
||||||
|
functionCall := types.FunctionCall{
|
||||||
|
Function: strings.TrimPrefix(line, "created by "), // no need to track 'created by'
|
||||||
|
}
|
||||||
|
|
||||||
|
line, err = r.ReadString('\n')
|
||||||
|
line = strings.TrimSuffix(line, "\n")
|
||||||
|
if err == io.EOF {
|
||||||
|
return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid function call: %s -- missing file name and line number", functionCall.Function))
|
||||||
|
}
|
||||||
|
line = strings.TrimLeft(line, " \t")
|
||||||
|
fields := strings.SplitN(line, ":", 2)
|
||||||
|
if len(fields) != 2 {
|
||||||
|
return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid filename nad line number: %s", line))
|
||||||
|
}
|
||||||
|
functionCall.Filename = fields[0]
|
||||||
|
line = strings.Split(fields[1], " ")[0]
|
||||||
|
lineNumber, err := strconv.ParseInt(line, 10, 64)
|
||||||
|
functionCall.Line = int(lineNumber)
|
||||||
|
if err != nil {
|
||||||
|
return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid function call line number: %s\n%s", line, err.Error()))
|
||||||
|
}
|
||||||
|
out[idx].Stack = append(out[idx].Stack, functionCall)
|
||||||
|
}
|
||||||
|
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fetchSource(filename string, lineNumber int, span int, configuredSourceRoots []string) ([]string, int) {
|
||||||
|
if filename == "" {
|
||||||
|
return []string{}, 0
|
||||||
|
}
|
||||||
|
|
||||||
|
var lines []string
|
||||||
|
var ok bool
|
||||||
|
if lines, ok = _SOURCE_CACHE[filename]; !ok {
|
||||||
|
sourceRoots := []string{""}
|
||||||
|
sourceRoots = append(sourceRoots, configuredSourceRoots...)
|
||||||
|
var data []byte
|
||||||
|
var err error
|
||||||
|
var found bool
|
||||||
|
for _, root := range sourceRoots {
|
||||||
|
data, err = os.ReadFile(filepath.Join(root, filename))
|
||||||
|
if err == nil {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
return []string{}, 0
|
||||||
|
}
|
||||||
|
lines = strings.Split(string(data), "\n")
|
||||||
|
_SOURCE_CACHE[filename] = lines
|
||||||
|
}
|
||||||
|
|
||||||
|
startIndex := lineNumber - span - 1
|
||||||
|
endIndex := startIndex + span + span + 1
|
||||||
|
if startIndex < 0 {
|
||||||
|
startIndex = 0
|
||||||
|
}
|
||||||
|
if endIndex > len(lines) {
|
||||||
|
endIndex = len(lines)
|
||||||
|
}
|
||||||
|
highlightIndex := lineNumber - 1 - startIndex
|
||||||
|
return lines[startIndex:endIndex], highlightIndex
|
||||||
|
}
|
11
vendor/github.com/onsi/ginkgo/v2/internal/progress_report_bsd.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/v2/internal/progress_report_bsd.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
//go:build freebsd || openbsd || netbsd || darwin || dragonfly
|
||||||
|
// +build freebsd openbsd netbsd darwin dragonfly
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
var PROGRESS_SIGNALS = []os.Signal{syscall.SIGINFO, syscall.SIGUSR1}
|
11
vendor/github.com/onsi/ginkgo/v2/internal/progress_report_unix.go
generated
vendored
Normal file
11
vendor/github.com/onsi/ginkgo/v2/internal/progress_report_unix.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
//go:build linux || solaris
|
||||||
|
// +build linux solaris
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
var PROGRESS_SIGNALS = []os.Signal{syscall.SIGUSR1}
|
8
vendor/github.com/onsi/ginkgo/v2/internal/progress_report_win.go
generated
vendored
Normal file
8
vendor/github.com/onsi/ginkgo/v2/internal/progress_report_win.go
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
//go:build windows
|
||||||
|
// +build windows
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
var PROGRESS_SIGNALS = []os.Signal{}
|
123
vendor/github.com/onsi/ginkgo/v2/internal/suite.go
generated
vendored
123
vendor/github.com/onsi/ginkgo/v2/internal/suite.go
generated
vendored
@ -39,8 +39,22 @@ type Suite struct {
|
|||||||
skipAll bool
|
skipAll bool
|
||||||
report types.Report
|
report types.Report
|
||||||
currentSpecReport types.SpecReport
|
currentSpecReport types.SpecReport
|
||||||
currentSpecReportUserAccessLock *sync.Mutex
|
|
||||||
currentNode Node
|
currentNode Node
|
||||||
|
currentNodeStartTime time.Time
|
||||||
|
|
||||||
|
progressStepCursor ProgressStepCursor
|
||||||
|
|
||||||
|
/*
|
||||||
|
We don't need to lock around all operations. Just those that *could* happen concurrently.
|
||||||
|
|
||||||
|
Suite, generally, only runs one node at a time - and so the possibiity for races is small. In fact, the presence of a race usually indicates the user has launched a goroutine that has leaked past the node it was launched in.
|
||||||
|
|
||||||
|
However, there are some operations that can happen concurrently:
|
||||||
|
|
||||||
|
- AddReportEntry and CurrentSpecReport can be accessed at any point by the user - including in goroutines that outlive the node intentionally (see, e.g. #1020). They both form a self-contained read-write pair and so a lock in them is sufficent.
|
||||||
|
- generateProgressReport can be invoked at any point in time by an interrupt or a progres poll. Moreover, it requires access to currentSpecReport, currentNode, currentNodeStartTime, and progressStepCursor. To make it threadsafe we need to lock around generateProgressReport when we read those variables _and_ everywhere those variables are *written*. In general we don't need to worry about all possible field writes to these variables as what `generateProgressReport` does with these variables is fairly selective (hence the name of the lock). Specifically, we dont' need to lock around state and failure message changes on `currentSpecReport` - just the setting of the variable itself.
|
||||||
|
*/
|
||||||
|
selectiveLock *sync.Mutex
|
||||||
|
|
||||||
client parallel_support.Client
|
client parallel_support.Client
|
||||||
}
|
}
|
||||||
@ -49,7 +63,8 @@ func NewSuite() *Suite {
|
|||||||
return &Suite{
|
return &Suite{
|
||||||
tree: &TreeNode{},
|
tree: &TreeNode{},
|
||||||
phase: PhaseBuildTopLevel,
|
phase: PhaseBuildTopLevel,
|
||||||
currentSpecReportUserAccessLock: &sync.Mutex{},
|
|
||||||
|
selectiveLock: &sync.Mutex{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +81,7 @@ func (suite *Suite) BuildTree() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *Suite) Run(description string, suiteLabels Labels, suitePath string, failer *Failer, reporter reporters.Reporter, writer WriterInterface, outputInterceptor OutputInterceptor, interruptHandler interrupt_handler.InterruptHandlerInterface, client parallel_support.Client, suiteConfig types.SuiteConfig) (bool, bool) {
|
func (suite *Suite) Run(description string, suiteLabels Labels, suitePath string, failer *Failer, reporter reporters.Reporter, writer WriterInterface, outputInterceptor OutputInterceptor, interruptHandler interrupt_handler.InterruptHandlerInterface, client parallel_support.Client, progressSignalRegistrar ProgressSignalRegistrar, suiteConfig types.SuiteConfig) (bool, bool) {
|
||||||
if suite.phase != PhaseBuildTree {
|
if suite.phase != PhaseBuildTree {
|
||||||
panic("cannot run before building the tree = call suite.BuildTree() first")
|
panic("cannot run before building the tree = call suite.BuildTree() first")
|
||||||
}
|
}
|
||||||
@ -83,8 +98,12 @@ func (suite *Suite) Run(description string, suiteLabels Labels, suitePath string
|
|||||||
suite.interruptHandler = interruptHandler
|
suite.interruptHandler = interruptHandler
|
||||||
suite.config = suiteConfig
|
suite.config = suiteConfig
|
||||||
|
|
||||||
|
cancelProgressHandler := progressSignalRegistrar(suite.handleProgressSignal)
|
||||||
|
|
||||||
success := suite.runSpecs(description, suiteLabels, suitePath, hasProgrammaticFocus, specs)
|
success := suite.runSpecs(description, suiteLabels, suitePath, hasProgrammaticFocus, specs)
|
||||||
|
|
||||||
|
cancelProgressHandler()
|
||||||
|
|
||||||
return success, hasProgrammaticFocus
|
return success, hasProgrammaticFocus
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,12 +230,23 @@ func (suite *Suite) pushCleanupNode(node Node) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Pushing and popping the Step Cursor stack
|
||||||
|
*/
|
||||||
|
|
||||||
|
func (suite *Suite) SetProgressStepCursor(cursor ProgressStepCursor) {
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
|
defer suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
|
suite.progressStepCursor = cursor
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Spec Running methods - used during PhaseRun
|
Spec Running methods - used during PhaseRun
|
||||||
*/
|
*/
|
||||||
func (suite *Suite) CurrentSpecReport() types.SpecReport {
|
func (suite *Suite) CurrentSpecReport() types.SpecReport {
|
||||||
suite.currentSpecReportUserAccessLock.Lock()
|
suite.selectiveLock.Lock()
|
||||||
defer suite.currentSpecReportUserAccessLock.Unlock()
|
defer suite.selectiveLock.Unlock()
|
||||||
report := suite.currentSpecReport
|
report := suite.currentSpecReport
|
||||||
if suite.writer != nil {
|
if suite.writer != nil {
|
||||||
report.CapturedGinkgoWriterOutput = string(suite.writer.Bytes())
|
report.CapturedGinkgoWriterOutput = string(suite.writer.Bytes())
|
||||||
@ -227,8 +257,8 @@ func (suite *Suite) CurrentSpecReport() types.SpecReport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *Suite) AddReportEntry(entry ReportEntry) error {
|
func (suite *Suite) AddReportEntry(entry ReportEntry) error {
|
||||||
suite.currentSpecReportUserAccessLock.Lock()
|
suite.selectiveLock.Lock()
|
||||||
defer suite.currentSpecReportUserAccessLock.Unlock()
|
defer suite.selectiveLock.Unlock()
|
||||||
if suite.phase != PhaseRun {
|
if suite.phase != PhaseRun {
|
||||||
return types.GinkgoErrors.AddReportEntryNotDuringRunPhase(entry.Location)
|
return types.GinkgoErrors.AddReportEntryNotDuringRunPhase(entry.Location)
|
||||||
}
|
}
|
||||||
@ -236,6 +266,37 @@ func (suite *Suite) AddReportEntry(entry ReportEntry) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *Suite) generateProgressReport(fullReport bool) types.ProgressReport {
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
|
defer suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
|
stepCursor := suite.progressStepCursor
|
||||||
|
|
||||||
|
gwOutput := suite.currentSpecReport.CapturedGinkgoWriterOutput + string(suite.writer.Bytes())
|
||||||
|
pr, err := NewProgressReport(suite.isRunningInParallel(), suite.currentSpecReport, suite.currentNode, suite.currentNodeStartTime, stepCursor, gwOutput, suite.config.SourceRoots, fullReport)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("{{red}}Failed to generate progress report:{{/}}\n%s\n", err.Error())
|
||||||
|
}
|
||||||
|
return pr
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *Suite) handleProgressSignal() {
|
||||||
|
report := suite.generateProgressReport(false)
|
||||||
|
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
|
suite.currentSpecReport.ProgressReports = append(suite.currentSpecReport.ProgressReports, report.WithoutCapturedGinkgoWriterOutput())
|
||||||
|
suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
|
suite.reporter.EmitProgressReport(report)
|
||||||
|
if suite.isRunningInParallel() {
|
||||||
|
err := suite.client.PostEmitProgressReport(report)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (suite *Suite) isRunningInParallel() bool {
|
func (suite *Suite) isRunningInParallel() bool {
|
||||||
return suite.config.ParallelTotal > 1
|
return suite.config.ParallelTotal > 1
|
||||||
}
|
}
|
||||||
@ -344,11 +405,14 @@ func (suite *Suite) runBeforeSuite(numSpecsThatWillBeRun int) {
|
|||||||
interruptStatus := suite.interruptHandler.Status()
|
interruptStatus := suite.interruptHandler.Status()
|
||||||
beforeSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeBeforeSuite | types.NodeTypeSynchronizedBeforeSuite)
|
beforeSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeBeforeSuite | types.NodeTypeSynchronizedBeforeSuite)
|
||||||
if !beforeSuiteNode.IsZero() && !interruptStatus.Interrupted && numSpecsThatWillBeRun > 0 {
|
if !beforeSuiteNode.IsZero() && !interruptStatus.Interrupted && numSpecsThatWillBeRun > 0 {
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
suite.currentSpecReport = types.SpecReport{
|
suite.currentSpecReport = types.SpecReport{
|
||||||
LeafNodeType: beforeSuiteNode.NodeType,
|
LeafNodeType: beforeSuiteNode.NodeType,
|
||||||
LeafNodeLocation: beforeSuiteNode.CodeLocation,
|
LeafNodeLocation: beforeSuiteNode.CodeLocation,
|
||||||
ParallelProcess: suite.config.ParallelProcess,
|
ParallelProcess: suite.config.ParallelProcess,
|
||||||
}
|
}
|
||||||
|
suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
suite.reporter.WillRun(suite.currentSpecReport)
|
suite.reporter.WillRun(suite.currentSpecReport)
|
||||||
suite.runSuiteNode(beforeSuiteNode, interruptStatus.Channel)
|
suite.runSuiteNode(beforeSuiteNode, interruptStatus.Channel)
|
||||||
if suite.currentSpecReport.State.Is(types.SpecStateSkipped) {
|
if suite.currentSpecReport.State.Is(types.SpecStateSkipped) {
|
||||||
@ -362,11 +426,14 @@ func (suite *Suite) runBeforeSuite(numSpecsThatWillBeRun int) {
|
|||||||
func (suite *Suite) runAfterSuiteCleanup(numSpecsThatWillBeRun int) {
|
func (suite *Suite) runAfterSuiteCleanup(numSpecsThatWillBeRun int) {
|
||||||
afterSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeAfterSuite | types.NodeTypeSynchronizedAfterSuite)
|
afterSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeAfterSuite | types.NodeTypeSynchronizedAfterSuite)
|
||||||
if !afterSuiteNode.IsZero() && numSpecsThatWillBeRun > 0 {
|
if !afterSuiteNode.IsZero() && numSpecsThatWillBeRun > 0 {
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
suite.currentSpecReport = types.SpecReport{
|
suite.currentSpecReport = types.SpecReport{
|
||||||
LeafNodeType: afterSuiteNode.NodeType,
|
LeafNodeType: afterSuiteNode.NodeType,
|
||||||
LeafNodeLocation: afterSuiteNode.CodeLocation,
|
LeafNodeLocation: afterSuiteNode.CodeLocation,
|
||||||
ParallelProcess: suite.config.ParallelProcess,
|
ParallelProcess: suite.config.ParallelProcess,
|
||||||
}
|
}
|
||||||
|
suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
suite.reporter.WillRun(suite.currentSpecReport)
|
suite.reporter.WillRun(suite.currentSpecReport)
|
||||||
suite.runSuiteNode(afterSuiteNode, suite.interruptHandler.Status().Channel)
|
suite.runSuiteNode(afterSuiteNode, suite.interruptHandler.Status().Channel)
|
||||||
suite.processCurrentSpecReport()
|
suite.processCurrentSpecReport()
|
||||||
@ -375,11 +442,14 @@ func (suite *Suite) runAfterSuiteCleanup(numSpecsThatWillBeRun int) {
|
|||||||
afterSuiteCleanup := suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterSuite).Reverse()
|
afterSuiteCleanup := suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterSuite).Reverse()
|
||||||
if len(afterSuiteCleanup) > 0 {
|
if len(afterSuiteCleanup) > 0 {
|
||||||
for _, cleanupNode := range afterSuiteCleanup {
|
for _, cleanupNode := range afterSuiteCleanup {
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
suite.currentSpecReport = types.SpecReport{
|
suite.currentSpecReport = types.SpecReport{
|
||||||
LeafNodeType: cleanupNode.NodeType,
|
LeafNodeType: cleanupNode.NodeType,
|
||||||
LeafNodeLocation: cleanupNode.CodeLocation,
|
LeafNodeLocation: cleanupNode.CodeLocation,
|
||||||
ParallelProcess: suite.config.ParallelProcess,
|
ParallelProcess: suite.config.ParallelProcess,
|
||||||
}
|
}
|
||||||
|
suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
suite.reporter.WillRun(suite.currentSpecReport)
|
suite.reporter.WillRun(suite.currentSpecReport)
|
||||||
suite.runSuiteNode(cleanupNode, suite.interruptHandler.Status().Channel)
|
suite.runSuiteNode(cleanupNode, suite.interruptHandler.Status().Channel)
|
||||||
suite.processCurrentSpecReport()
|
suite.processCurrentSpecReport()
|
||||||
@ -389,12 +459,15 @@ func (suite *Suite) runAfterSuiteCleanup(numSpecsThatWillBeRun int) {
|
|||||||
|
|
||||||
func (suite *Suite) runReportAfterSuite() {
|
func (suite *Suite) runReportAfterSuite() {
|
||||||
for _, node := range suite.suiteNodes.WithType(types.NodeTypeReportAfterSuite) {
|
for _, node := range suite.suiteNodes.WithType(types.NodeTypeReportAfterSuite) {
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
suite.currentSpecReport = types.SpecReport{
|
suite.currentSpecReport = types.SpecReport{
|
||||||
LeafNodeType: node.NodeType,
|
LeafNodeType: node.NodeType,
|
||||||
LeafNodeLocation: node.CodeLocation,
|
LeafNodeLocation: node.CodeLocation,
|
||||||
LeafNodeText: node.Text,
|
LeafNodeText: node.Text,
|
||||||
ParallelProcess: suite.config.ParallelProcess,
|
ParallelProcess: suite.config.ParallelProcess,
|
||||||
}
|
}
|
||||||
|
suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
suite.reporter.WillRun(suite.currentSpecReport)
|
suite.reporter.WillRun(suite.currentSpecReport)
|
||||||
suite.runReportAfterSuiteNode(node, suite.report)
|
suite.runReportAfterSuiteNode(node, suite.report)
|
||||||
suite.processCurrentSpecReport()
|
suite.processCurrentSpecReport()
|
||||||
@ -564,9 +637,16 @@ func (suite *Suite) runNode(node Node, interruptChannel chan interface{}, text s
|
|||||||
suite.cleanupNodes = suite.cleanupNodes.WithoutNode(node)
|
suite.cleanupNodes = suite.cleanupNodes.WithoutNode(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
suite.currentNode = node
|
suite.currentNode = node
|
||||||
|
suite.currentNodeStartTime = time.Now()
|
||||||
|
suite.progressStepCursor = ProgressStepCursor{}
|
||||||
|
suite.selectiveLock.Unlock()
|
||||||
defer func() {
|
defer func() {
|
||||||
|
suite.selectiveLock.Lock()
|
||||||
suite.currentNode = Node{}
|
suite.currentNode = Node{}
|
||||||
|
suite.currentNodeStartTime = time.Time{}
|
||||||
|
suite.selectiveLock.Unlock()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
if suite.config.EmitSpecProgress && !node.MarkedSuppressProgressReporting {
|
if suite.config.EmitSpecProgress && !node.MarkedSuppressProgressReporting {
|
||||||
@ -606,6 +686,23 @@ func (suite *Suite) runNode(node Node, interruptChannel chan interface{}, text s
|
|||||||
finished = true
|
finished = true
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
var emitProgressNow <-chan time.Time
|
||||||
|
var progressPoller *time.Timer
|
||||||
|
var pollProgressAfter, pollProgressInterval = suite.config.PollProgressAfter, suite.config.PollProgressInterval
|
||||||
|
if node.PollProgressAfter >= 0 {
|
||||||
|
pollProgressAfter = node.PollProgressAfter
|
||||||
|
}
|
||||||
|
if node.PollProgressInterval >= 0 {
|
||||||
|
pollProgressInterval = node.PollProgressInterval
|
||||||
|
}
|
||||||
|
|
||||||
|
if pollProgressAfter > 0 {
|
||||||
|
progressPoller = time.NewTimer(pollProgressAfter)
|
||||||
|
emitProgressNow = progressPoller.C
|
||||||
|
defer progressPoller.Stop()
|
||||||
|
}
|
||||||
|
|
||||||
|
for {
|
||||||
select {
|
select {
|
||||||
case outcome := <-outcomeC:
|
case outcome := <-outcomeC:
|
||||||
failureFromRun := <-failureC
|
failureFromRun := <-failureC
|
||||||
@ -615,8 +712,18 @@ func (suite *Suite) runNode(node Node, interruptChannel chan interface{}, text s
|
|||||||
failure.Message, failure.Location, failure.ForwardedPanic = failureFromRun.Message, failureFromRun.Location, failureFromRun.ForwardedPanic
|
failure.Message, failure.Location, failure.ForwardedPanic = failureFromRun.Message, failureFromRun.Location, failureFromRun.ForwardedPanic
|
||||||
return outcome, failure
|
return outcome, failure
|
||||||
case <-interruptChannel:
|
case <-interruptChannel:
|
||||||
failure.Message, failure.Location = suite.interruptHandler.InterruptMessageWithStackTraces(), node.CodeLocation
|
reason, includeProgressReport := suite.interruptHandler.InterruptMessage()
|
||||||
|
failure.Message, failure.Location = reason, node.CodeLocation
|
||||||
|
if includeProgressReport {
|
||||||
|
failure.ProgressReport = suite.generateProgressReport(true).WithoutCapturedGinkgoWriterOutput()
|
||||||
|
}
|
||||||
return types.SpecStateInterrupted, failure
|
return types.SpecStateInterrupted, failure
|
||||||
|
case <-emitProgressNow:
|
||||||
|
suite.handleProgressSignal()
|
||||||
|
if pollProgressInterval > 0 {
|
||||||
|
progressPoller.Reset(pollProgressInterval)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
147
vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go
generated
vendored
147
vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go
generated
vendored
@ -12,6 +12,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/onsi/ginkgo/v2/formatter"
|
"github.com/onsi/ginkgo/v2/formatter"
|
||||||
"github.com/onsi/ginkgo/v2/types"
|
"github.com/onsi/ginkgo/v2/types"
|
||||||
@ -208,9 +209,7 @@ func (r *DefaultReporter) DidRun(report types.SpecReport) {
|
|||||||
//Emit Captured GinkgoWriter Output
|
//Emit Captured GinkgoWriter Output
|
||||||
if emitGinkgoWriterOutput && hasGW {
|
if emitGinkgoWriterOutput && hasGW {
|
||||||
r.emitBlock("\n")
|
r.emitBlock("\n")
|
||||||
r.emitBlock(r.fi(1, "{{gray}}Begin Captured GinkgoWriter Output >>{{/}}"))
|
r.emitGinkgoWriterOutput(1, report.CapturedGinkgoWriterOutput, 0)
|
||||||
r.emitBlock(r.fi(2, "%s", report.CapturedGinkgoWriterOutput))
|
|
||||||
r.emitBlock(r.fi(1, "{{gray}}<< End Captured GinkgoWriter Output{{/}}"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if hasEmittableReports {
|
if hasEmittableReports {
|
||||||
@ -244,6 +243,11 @@ func (r *DefaultReporter) DidRun(report types.SpecReport) {
|
|||||||
r.emitBlock(r.fi(1, highlightColor+"Full Stack Trace{{/}}"))
|
r.emitBlock(r.fi(1, highlightColor+"Full Stack Trace{{/}}"))
|
||||||
r.emitBlock(r.fi(2, "%s", report.Failure.Location.FullStackTrace))
|
r.emitBlock(r.fi(2, "%s", report.Failure.Location.FullStackTrace))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !report.Failure.ProgressReport.IsZero() {
|
||||||
|
r.emitBlock("\n")
|
||||||
|
r.emitProgressReport(1, false, report.Failure.ProgressReport)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
r.emitDelimiter()
|
r.emitDelimiter()
|
||||||
@ -314,6 +318,143 @@ func (r *DefaultReporter) SuiteDidEnd(report types.Report) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *DefaultReporter) EmitProgressReport(report types.ProgressReport) {
|
||||||
|
r.emitDelimiter()
|
||||||
|
|
||||||
|
if report.RunningInParallel {
|
||||||
|
r.emit(r.f("{{coral}}Progress Report for Ginkgo Process #{{bold}}%d{{/}}\n", report.ParallelProcess))
|
||||||
|
}
|
||||||
|
r.emitProgressReport(0, true, report)
|
||||||
|
r.emitDelimiter()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *DefaultReporter) emitProgressReport(indent uint, emitGinkgoWriterOutput bool, report types.ProgressReport) {
|
||||||
|
if report.LeafNodeText != "" {
|
||||||
|
if len(report.ContainerHierarchyTexts) > 0 {
|
||||||
|
r.emit(r.fi(indent, r.cycleJoin(report.ContainerHierarchyTexts, " ")))
|
||||||
|
r.emit(" ")
|
||||||
|
}
|
||||||
|
r.emit(r.f("{{bold}}{{orange}}%s{{/}} (Spec Runtime: %s)\n", report.LeafNodeText, report.Time.Sub(report.SpecStartTime).Round(time.Millisecond)))
|
||||||
|
r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", report.LeafNodeLocation))
|
||||||
|
indent += 1
|
||||||
|
}
|
||||||
|
if report.CurrentNodeType != types.NodeTypeInvalid {
|
||||||
|
r.emit(r.fi(indent, "In {{bold}}{{orange}}[%s]{{/}}", report.CurrentNodeType))
|
||||||
|
if report.CurrentNodeText != "" && !report.CurrentNodeType.Is(types.NodeTypeIt) {
|
||||||
|
r.emit(r.f(" {{bold}}{{orange}}%s{{/}}", report.CurrentNodeText))
|
||||||
|
}
|
||||||
|
|
||||||
|
r.emit(r.f(" (Node Runtime: %s)\n", report.Time.Sub(report.CurrentNodeStartTime).Round(time.Millisecond)))
|
||||||
|
r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", report.CurrentNodeLocation))
|
||||||
|
indent += 1
|
||||||
|
}
|
||||||
|
if report.CurrentStepText != "" {
|
||||||
|
r.emit(r.fi(indent, "At {{bold}}{{orange}}[By Step] %s{{/}} (Step Runtime: %s)\n", report.CurrentStepText, report.Time.Sub(report.CurrentStepStartTime).Round(time.Millisecond)))
|
||||||
|
r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", report.CurrentStepLocation))
|
||||||
|
indent += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if indent > 0 {
|
||||||
|
indent -= 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if emitGinkgoWriterOutput && report.CapturedGinkgoWriterOutput != "" && (report.RunningInParallel || r.conf.Verbosity().LT(types.VerbosityLevelVerbose)) {
|
||||||
|
r.emit("\n")
|
||||||
|
r.emitGinkgoWriterOutput(indent, report.CapturedGinkgoWriterOutput, 10)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !report.SpecGoroutine().IsZero() {
|
||||||
|
r.emit("\n")
|
||||||
|
r.emit(r.fi(indent, "{{bold}}{{underline}}Spec Goroutine{{/}}\n"))
|
||||||
|
r.emitGoroutines(indent, report.SpecGoroutine())
|
||||||
|
}
|
||||||
|
|
||||||
|
highlightedGoroutines := report.HighlightedGoroutines()
|
||||||
|
if len(highlightedGoroutines) > 0 {
|
||||||
|
r.emit("\n")
|
||||||
|
r.emit(r.fi(indent, "{{bold}}{{underline}}Goroutines of Interest{{/}}\n"))
|
||||||
|
r.emitGoroutines(indent, highlightedGoroutines...)
|
||||||
|
}
|
||||||
|
|
||||||
|
otherGoroutines := report.OtherGoroutines()
|
||||||
|
if len(otherGoroutines) > 0 {
|
||||||
|
r.emit("\n")
|
||||||
|
r.emit(r.fi(indent, "{{gray}}{{bold}}{{underline}}Other Goroutines{{/}}\n"))
|
||||||
|
r.emitGoroutines(indent, otherGoroutines...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *DefaultReporter) emitGinkgoWriterOutput(indent uint, output string, limit int) {
|
||||||
|
r.emitBlock(r.fi(indent, "{{gray}}Begin Captured GinkgoWriter Output >>{{/}}"))
|
||||||
|
if limit == 0 {
|
||||||
|
r.emitBlock(r.fi(indent+1, "%s", output))
|
||||||
|
} else {
|
||||||
|
lines := strings.Split(output, "\n")
|
||||||
|
if len(lines) <= limit {
|
||||||
|
r.emitBlock(r.fi(indent+1, "%s", output))
|
||||||
|
} else {
|
||||||
|
r.emitBlock(r.fi(indent+1, "{{gray}}...{{/}}"))
|
||||||
|
for _, line := range lines[len(lines)-limit-1:] {
|
||||||
|
r.emitBlock(r.fi(indent+1, "%s", line))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.emitBlock(r.fi(indent, "{{gray}}<< End Captured GinkgoWriter Output{{/}}"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *DefaultReporter) emitGoroutines(indent uint, goroutines ...types.Goroutine) {
|
||||||
|
for idx, g := range goroutines {
|
||||||
|
color := "{{gray}}"
|
||||||
|
if g.HasHighlights() {
|
||||||
|
color = "{{orange}}"
|
||||||
|
}
|
||||||
|
r.emit(r.fi(indent, color+"goroutine %d [%s]{{/}}\n", g.ID, g.State))
|
||||||
|
for _, fc := range g.Stack {
|
||||||
|
if fc.Highlight {
|
||||||
|
r.emit(r.fi(indent, color+"{{bold}}> %s{{/}}\n", fc.Function))
|
||||||
|
r.emit(r.fi(indent+2, color+"{{bold}}%s:%d{{/}}\n", fc.Filename, fc.Line))
|
||||||
|
r.emitSource(indent+3, fc)
|
||||||
|
} else {
|
||||||
|
r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", fc.Function))
|
||||||
|
r.emit(r.fi(indent+2, "{{gray}}%s:%d{{/}}\n", fc.Filename, fc.Line))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if idx+1 < len(goroutines) {
|
||||||
|
r.emit("\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *DefaultReporter) emitSource(indent uint, fc types.FunctionCall) {
|
||||||
|
lines := fc.Source
|
||||||
|
if len(lines) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
lTrim := 100000
|
||||||
|
for _, line := range lines {
|
||||||
|
lTrimLine := len(line) - len(strings.TrimLeft(line, " \t"))
|
||||||
|
if lTrimLine < lTrim && len(line) > 0 {
|
||||||
|
lTrim = lTrimLine
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if lTrim == 100000 {
|
||||||
|
lTrim = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
for idx, line := range lines {
|
||||||
|
if len(line) > lTrim {
|
||||||
|
line = line[lTrim:]
|
||||||
|
}
|
||||||
|
if idx == fc.SourceHighlight {
|
||||||
|
r.emit(r.fi(indent, "{{bold}}{{orange}}> %s{{/}}\n", line))
|
||||||
|
} else {
|
||||||
|
r.emit(r.fi(indent, "| %s\n", line))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Emitting to the writer */
|
/* Emitting to the writer */
|
||||||
func (r *DefaultReporter) emit(s string) {
|
func (r *DefaultReporter) emit(s string) {
|
||||||
if len(s) > 0 {
|
if len(s) > 0 {
|
||||||
|
39
vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go
generated
vendored
39
vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go
generated
vendored
@ -171,8 +171,8 @@ func GenerateJUnitReport(report types.Report, dst string) error {
|
|||||||
Classname: report.SuiteDescription,
|
Classname: report.SuiteDescription,
|
||||||
Status: spec.State.String(),
|
Status: spec.State.String(),
|
||||||
Time: spec.RunTime.Seconds(),
|
Time: spec.RunTime.Seconds(),
|
||||||
SystemOut: systemOutForUnstructureReporters(spec),
|
SystemOut: systemOutForUnstructuredReporters(spec),
|
||||||
SystemErr: spec.CapturedGinkgoWriterOutput,
|
SystemErr: systemErrForUnstructuredReporters(spec),
|
||||||
}
|
}
|
||||||
suite.Tests += 1
|
suite.Tests += 1
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ func GenerateJUnitReport(report types.Report, dst string) error {
|
|||||||
test.Error = &JUnitError{
|
test.Error = &JUnitError{
|
||||||
Message: "interrupted",
|
Message: "interrupted",
|
||||||
Type: "interrupted",
|
Type: "interrupted",
|
||||||
Description: spec.Failure.Message,
|
Description: interruptDescriptionForUnstructuredReporters(spec.Failure),
|
||||||
}
|
}
|
||||||
suite.Errors += 1
|
suite.Errors += 1
|
||||||
case types.SpecStateAborted:
|
case types.SpecStateAborted:
|
||||||
@ -278,7 +278,38 @@ func MergeAndCleanupJUnitReports(sources []string, dst string) ([]string, error)
|
|||||||
return messages, f.Close()
|
return messages, f.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func systemOutForUnstructureReporters(spec types.SpecReport) string {
|
func interruptDescriptionForUnstructuredReporters(failure types.Failure) string {
|
||||||
|
out := &strings.Builder{}
|
||||||
|
out.WriteString(failure.Message + "\n")
|
||||||
|
NewDefaultReporter(types.ReporterConfig{NoColor: true}, out).EmitProgressReport(failure.ProgressReport)
|
||||||
|
return out.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func systemErrForUnstructuredReporters(spec types.SpecReport) string {
|
||||||
|
out := &strings.Builder{}
|
||||||
|
gw := spec.CapturedGinkgoWriterOutput
|
||||||
|
cursor := 0
|
||||||
|
for _, pr := range spec.ProgressReports {
|
||||||
|
if cursor < pr.GinkgoWriterOffset {
|
||||||
|
if pr.GinkgoWriterOffset < len(gw) {
|
||||||
|
out.WriteString(gw[cursor:pr.GinkgoWriterOffset])
|
||||||
|
cursor = pr.GinkgoWriterOffset
|
||||||
|
} else if cursor < len(gw) {
|
||||||
|
out.WriteString(gw[cursor:])
|
||||||
|
cursor = len(gw)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NewDefaultReporter(types.ReporterConfig{NoColor: true}, out).EmitProgressReport(pr)
|
||||||
|
}
|
||||||
|
|
||||||
|
if cursor < len(gw) {
|
||||||
|
out.WriteString(gw[cursor:])
|
||||||
|
}
|
||||||
|
|
||||||
|
return out.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func systemOutForUnstructuredReporters(spec types.SpecReport) string {
|
||||||
systemOut := spec.CapturedStdOutErr
|
systemOut := spec.CapturedStdOutErr
|
||||||
if len(spec.ReportEntries) > 0 {
|
if len(spec.ReportEntries) > 0 {
|
||||||
systemOut += "\nReport Entries:\n"
|
systemOut += "\nReport Entries:\n"
|
||||||
|
2
vendor/github.com/onsi/ginkgo/v2/reporters/reporter.go
generated
vendored
2
vendor/github.com/onsi/ginkgo/v2/reporters/reporter.go
generated
vendored
@ -9,6 +9,7 @@ type Reporter interface {
|
|||||||
WillRun(report types.SpecReport)
|
WillRun(report types.SpecReport)
|
||||||
DidRun(report types.SpecReport)
|
DidRun(report types.SpecReport)
|
||||||
SuiteDidEnd(report types.Report)
|
SuiteDidEnd(report types.Report)
|
||||||
|
EmitProgressReport(progressReport types.ProgressReport)
|
||||||
}
|
}
|
||||||
|
|
||||||
type NoopReporter struct{}
|
type NoopReporter struct{}
|
||||||
@ -17,3 +18,4 @@ func (n NoopReporter) SuiteWillBegin(report types.Report) {}
|
|||||||
func (n NoopReporter) WillRun(report types.SpecReport) {}
|
func (n NoopReporter) WillRun(report types.SpecReport) {}
|
||||||
func (n NoopReporter) DidRun(report types.SpecReport) {}
|
func (n NoopReporter) DidRun(report types.SpecReport) {}
|
||||||
func (n NoopReporter) SuiteDidEnd(report types.Report) {}
|
func (n NoopReporter) SuiteDidEnd(report types.Report) {}
|
||||||
|
func (n NoopReporter) EmitProgressReport(progressReport types.ProgressReport) {}
|
||||||
|
6
vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go
generated
vendored
6
vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go
generated
vendored
@ -66,14 +66,14 @@ func GenerateTeamcityReport(report types.Report, dst string) error {
|
|||||||
details := fmt.Sprintf("%s\n%s", spec.Failure.Location.String(), spec.Failure.Location.FullStackTrace)
|
details := fmt.Sprintf("%s\n%s", spec.Failure.Location.String(), spec.Failure.Location.FullStackTrace)
|
||||||
fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='panicked - %s' details='%s']\n", name, tcEscape(spec.Failure.ForwardedPanic), tcEscape(details))
|
fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='panicked - %s' details='%s']\n", name, tcEscape(spec.Failure.ForwardedPanic), tcEscape(details))
|
||||||
case types.SpecStateInterrupted:
|
case types.SpecStateInterrupted:
|
||||||
fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='interrupted' details='%s']\n", name, tcEscape(spec.Failure.Message))
|
fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='interrupted' details='%s']\n", name, tcEscape(interruptDescriptionForUnstructuredReporters(spec.Failure)))
|
||||||
case types.SpecStateAborted:
|
case types.SpecStateAborted:
|
||||||
details := fmt.Sprintf("%s\n%s", spec.Failure.Location.String(), spec.Failure.Location.FullStackTrace)
|
details := fmt.Sprintf("%s\n%s", spec.Failure.Location.String(), spec.Failure.Location.FullStackTrace)
|
||||||
fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='aborted - %s' details='%s']\n", name, tcEscape(spec.Failure.Message), tcEscape(details))
|
fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='aborted - %s' details='%s']\n", name, tcEscape(spec.Failure.Message), tcEscape(details))
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintf(f, "##teamcity[testStdOut name='%s' out='%s']\n", name, tcEscape(systemOutForUnstructureReporters(spec)))
|
fmt.Fprintf(f, "##teamcity[testStdOut name='%s' out='%s']\n", name, tcEscape(systemOutForUnstructuredReporters(spec)))
|
||||||
fmt.Fprintf(f, "##teamcity[testStdErr name='%s' out='%s']\n", name, tcEscape(spec.CapturedGinkgoWriterOutput))
|
fmt.Fprintf(f, "##teamcity[testStdErr name='%s' out='%s']\n", name, tcEscape(systemErrForUnstructuredReporters(spec)))
|
||||||
fmt.Fprintf(f, "##teamcity[testFinished name='%s' duration='%d']\n", name, int(spec.RunTime.Seconds()*1000.0))
|
fmt.Fprintf(f, "##teamcity[testFinished name='%s' duration='%d']\n", name, int(spec.RunTime.Seconds()*1000.0))
|
||||||
}
|
}
|
||||||
fmt.Fprintf(f, "##teamcity[testSuiteFinished name='%s']\n", tcEscape(report.SuiteDescription))
|
fmt.Fprintf(f, "##teamcity[testSuiteFinished name='%s']\n", tcEscape(report.SuiteDescription))
|
||||||
|
9
vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go
generated
vendored
9
vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go
generated
vendored
@ -115,8 +115,10 @@ You cannot nest any other Ginkgo nodes within a ReportAfterSuite node's closure.
|
|||||||
You can learn more about ReportAfterSuite here: https://onsi.github.io/ginkgo/#generating-reports-programmatically
|
You can learn more about ReportAfterSuite here: https://onsi.github.io/ginkgo/#generating-reports-programmatically
|
||||||
You can learn more about Ginkgo's reporting infrastructure, including generating reports with the CLI here: https://onsi.github.io/ginkgo/#generating-machine-readable-reports
|
You can learn more about Ginkgo's reporting infrastructure, including generating reports with the CLI here: https://onsi.github.io/ginkgo/#generating-machine-readable-reports
|
||||||
*/
|
*/
|
||||||
func ReportAfterSuite(text string, body func(Report)) bool {
|
func ReportAfterSuite(text string, body func(Report), args ...interface{}) bool {
|
||||||
return pushNode(internal.NewReportAfterSuiteNode(text, body, types.NewCodeLocation(1)))
|
combinedArgs := []interface{}{body}
|
||||||
|
combinedArgs = append(combinedArgs, args...)
|
||||||
|
return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportAfterSuite, text, combinedArgs...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.ReporterConfig) {
|
func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.ReporterConfig) {
|
||||||
@ -151,7 +153,8 @@ func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.Re
|
|||||||
if reporterConfig.TeamcityReport != "" {
|
if reporterConfig.TeamcityReport != "" {
|
||||||
flags = append(flags, "--teamcity-report")
|
flags = append(flags, "--teamcity-report")
|
||||||
}
|
}
|
||||||
pushNode(internal.NewReportAfterSuiteNode(
|
pushNode(internal.NewNode(
|
||||||
|
deprecationTracker, types.NodeTypeReportAfterSuite,
|
||||||
fmt.Sprintf("Autogenerated ReportAfterSuite for %s", strings.Join(flags, " ")),
|
fmt.Sprintf("Autogenerated ReportAfterSuite for %s", strings.Join(flags, " ")),
|
||||||
body,
|
body,
|
||||||
types.NewCustomCodeLocation("autogenerated by Ginkgo"),
|
types.NewCustomCodeLocation("autogenerated by Ginkgo"),
|
||||||
|
9
vendor/github.com/onsi/ginkgo/v2/types/config.go
generated
vendored
9
vendor/github.com/onsi/ginkgo/v2/types/config.go
generated
vendored
@ -28,8 +28,11 @@ type SuiteConfig struct {
|
|||||||
FlakeAttempts int
|
FlakeAttempts int
|
||||||
EmitSpecProgress bool
|
EmitSpecProgress bool
|
||||||
DryRun bool
|
DryRun bool
|
||||||
|
PollProgressAfter time.Duration
|
||||||
|
PollProgressInterval time.Duration
|
||||||
Timeout time.Duration
|
Timeout time.Duration
|
||||||
OutputInterceptorMode string
|
OutputInterceptorMode string
|
||||||
|
SourceRoots []string
|
||||||
|
|
||||||
ParallelProcess int
|
ParallelProcess int
|
||||||
ParallelTotal int
|
ParallelTotal int
|
||||||
@ -272,6 +275,12 @@ var SuiteConfigFlags = GinkgoFlags{
|
|||||||
Usage: "If set, ginkgo will walk the test hierarchy without actually running anything. Best paired with -v."},
|
Usage: "If set, ginkgo will walk the test hierarchy without actually running anything. Best paired with -v."},
|
||||||
{KeyPath: "S.EmitSpecProgress", Name: "progress", SectionKey: "debug",
|
{KeyPath: "S.EmitSpecProgress", Name: "progress", SectionKey: "debug",
|
||||||
Usage: "If set, ginkgo will emit progress information as each spec runs to the GinkgoWriter."},
|
Usage: "If set, ginkgo will emit progress information as each spec runs to the GinkgoWriter."},
|
||||||
|
{KeyPath: "S.PollProgressAfter", Name: "poll-progress-after", SectionKey: "debug", UsageDefaultValue: "0",
|
||||||
|
Usage: "Emit node progress reports periodically if node hasn't completed after this duration."},
|
||||||
|
{KeyPath: "S.PollProgressInterval", Name: "poll-progress-interval", SectionKey: "debug", UsageDefaultValue: "10s",
|
||||||
|
Usage: "The rate at which to emit node progress reports after poll-progress-after has elapsed."},
|
||||||
|
{KeyPath: "S.SourceRoots", Name: "source-root", SectionKey: "debug",
|
||||||
|
Usage: "The location to look for source code when generating progress reports. You can pass multiple --source-root flags."},
|
||||||
{KeyPath: "S.Timeout", Name: "timeout", SectionKey: "debug", UsageDefaultValue: "1h",
|
{KeyPath: "S.Timeout", Name: "timeout", SectionKey: "debug", UsageDefaultValue: "1h",
|
||||||
Usage: "Test suite fails if it does not complete within the specified timeout."},
|
Usage: "Test suite fails if it does not complete within the specified timeout."},
|
||||||
{KeyPath: "S.OutputInterceptorMode", Name: "output-interceptor-mode", SectionKey: "debug", UsageArgument: "dup, swap, or none",
|
{KeyPath: "S.OutputInterceptorMode", Name: "output-interceptor-mode", SectionKey: "debug", UsageArgument: "dup, swap, or none",
|
||||||
|
9
vendor/github.com/onsi/ginkgo/v2/types/errors.go
generated
vendored
9
vendor/github.com/onsi/ginkgo/v2/types/errors.go
generated
vendored
@ -532,3 +532,12 @@ func (g ginkgoErrors) BothRepeatAndUntilItFails() error {
|
|||||||
Message: "--until-it-fails directs Ginkgo to rerun specs indefinitely until they fail. --repeat directs Ginkgo to rerun specs a set number of times. You can't set both... which would you like?",
|
Message: "--until-it-fails directs Ginkgo to rerun specs indefinitely until they fail. --repeat directs Ginkgo to rerun specs a set number of times. You can't set both... which would you like?",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Stack-Trace parsing errors */
|
||||||
|
|
||||||
|
func (g ginkgoErrors) FailedToParseStackTrace(message string) error {
|
||||||
|
return GinkgoError{
|
||||||
|
Heading: "Failed to Parse Stack Trace",
|
||||||
|
Message: message,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
5
vendor/github.com/onsi/ginkgo/v2/types/report_entry.go
generated
vendored
5
vendor/github.com/onsi/ginkgo/v2/types/report_entry.go
generated
vendored
@ -50,7 +50,6 @@ func (rev ReportEntryValue) MarshalJSON() ([]byte, error) {
|
|||||||
}{
|
}{
|
||||||
Representation: rev.String(),
|
Representation: rev.String(),
|
||||||
}
|
}
|
||||||
|
|
||||||
asJSON, err := json.Marshal(rev.raw)
|
asJSON, err := json.Marshal(rev.raw)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -98,7 +97,7 @@ type ReportEntry struct {
|
|||||||
Value ReportEntryValue
|
Value ReportEntryValue
|
||||||
}
|
}
|
||||||
|
|
||||||
// ColorableStringer is an interface that ReportEntry values can satisfy. If they do then ColorableStirng() is used to generate their representation.
|
// ColorableStringer is an interface that ReportEntry values can satisfy. If they do then ColorableString() is used to generate their representation.
|
||||||
type ColorableStringer interface {
|
type ColorableStringer interface {
|
||||||
ColorableString() string
|
ColorableString() string
|
||||||
}
|
}
|
||||||
@ -121,6 +120,8 @@ func (entry ReportEntry) GetRawValue() interface{} {
|
|||||||
return entry.Value.GetRawValue()
|
return entry.Value.GetRawValue()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
type ReportEntries []ReportEntry
|
type ReportEntries []ReportEntry
|
||||||
|
|
||||||
func (re ReportEntries) HasVisibility(visibilities ...ReportEntryVisibility) bool {
|
func (re ReportEntries) HasVisibility(visibilities ...ReportEntryVisibility) bool {
|
||||||
|
112
vendor/github.com/onsi/ginkgo/v2/types/types.go
generated
vendored
112
vendor/github.com/onsi/ginkgo/v2/types/types.go
generated
vendored
@ -165,6 +165,9 @@ type SpecReport struct {
|
|||||||
|
|
||||||
// ReportEntries contains any reports added via `AddReportEntry`
|
// ReportEntries contains any reports added via `AddReportEntry`
|
||||||
ReportEntries ReportEntries
|
ReportEntries ReportEntries
|
||||||
|
|
||||||
|
// ProgressReports contains any progress reports generated during this spec. These can either be manually triggered, or automatically generated by Ginkgo via the PollProgressAfter() decorator
|
||||||
|
ProgressReports []ProgressReport
|
||||||
}
|
}
|
||||||
|
|
||||||
func (report SpecReport) MarshalJSON() ([]byte, error) {
|
func (report SpecReport) MarshalJSON() ([]byte, error) {
|
||||||
@ -187,6 +190,7 @@ func (report SpecReport) MarshalJSON() ([]byte, error) {
|
|||||||
CapturedGinkgoWriterOutput string `json:",omitempty"`
|
CapturedGinkgoWriterOutput string `json:",omitempty"`
|
||||||
CapturedStdOutErr string `json:",omitempty"`
|
CapturedStdOutErr string `json:",omitempty"`
|
||||||
ReportEntries ReportEntries `json:",omitempty"`
|
ReportEntries ReportEntries `json:",omitempty"`
|
||||||
|
ProgressReports []ProgressReport `json:",omitempty"`
|
||||||
}{
|
}{
|
||||||
ContainerHierarchyTexts: report.ContainerHierarchyTexts,
|
ContainerHierarchyTexts: report.ContainerHierarchyTexts,
|
||||||
ContainerHierarchyLocations: report.ContainerHierarchyLocations,
|
ContainerHierarchyLocations: report.ContainerHierarchyLocations,
|
||||||
@ -213,6 +217,9 @@ func (report SpecReport) MarshalJSON() ([]byte, error) {
|
|||||||
if len(report.ReportEntries) > 0 {
|
if len(report.ReportEntries) > 0 {
|
||||||
out.ReportEntries = report.ReportEntries
|
out.ReportEntries = report.ReportEntries
|
||||||
}
|
}
|
||||||
|
if len(report.ProgressReports) > 0 {
|
||||||
|
out.ProgressReports = report.ProgressReports
|
||||||
|
}
|
||||||
|
|
||||||
return json.Marshal(out)
|
return json.Marshal(out)
|
||||||
}
|
}
|
||||||
@ -379,7 +386,7 @@ type Failure struct {
|
|||||||
// FailureNodeContext - one of three contexts describing the node in which the failure occurred:
|
// FailureNodeContext - one of three contexts describing the node in which the failure occurred:
|
||||||
// FailureNodeIsLeafNode means the failure occurred in the leaf node of the associated SpecReport. None of the other FailureNode fields will be populated
|
// FailureNodeIsLeafNode means the failure occurred in the leaf node of the associated SpecReport. None of the other FailureNode fields will be populated
|
||||||
// FailureNodeAtTopLevel means the failure occurred in a non-leaf node that is defined at the top-level of the spec (i.e. not in a container). FailureNodeType and FailureNodeLocation will be populated.
|
// FailureNodeAtTopLevel means the failure occurred in a non-leaf node that is defined at the top-level of the spec (i.e. not in a container). FailureNodeType and FailureNodeLocation will be populated.
|
||||||
// FailureNodeInContainer means the failure occurred in a non-leaf node that is defined within a container. FailureNodeType, FailureNodeLocaiton, and FailureNodeContainerIndex will be populated.
|
// FailureNodeInContainer means the failure occurred in a non-leaf node that is defined within a container. FailureNodeType, FailureNodeLocation, and FailureNodeContainerIndex will be populated.
|
||||||
//
|
//
|
||||||
// FailureNodeType will contain the NodeType of the node in which the failure occurred.
|
// FailureNodeType will contain the NodeType of the node in which the failure occurred.
|
||||||
// FailureNodeLocation will contain the CodeLocation of the node in which the failure occurred.
|
// FailureNodeLocation will contain the CodeLocation of the node in which the failure occurred.
|
||||||
@ -388,10 +395,13 @@ type Failure struct {
|
|||||||
FailureNodeType NodeType
|
FailureNodeType NodeType
|
||||||
FailureNodeLocation CodeLocation
|
FailureNodeLocation CodeLocation
|
||||||
FailureNodeContainerIndex int
|
FailureNodeContainerIndex int
|
||||||
|
|
||||||
|
//ProgressReport is populated if the spec was interrupted or timed out
|
||||||
|
ProgressReport ProgressReport
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f Failure) IsZero() bool {
|
func (f Failure) IsZero() bool {
|
||||||
return f == Failure{}
|
return f.Message == "" && (f.Location == CodeLocation{})
|
||||||
}
|
}
|
||||||
|
|
||||||
// FailureNodeContext captures the location context for the node containing the failing line of code
|
// FailureNodeContext captures the location context for the node containing the failing line of code
|
||||||
@ -469,6 +479,104 @@ func (ss SpecState) Is(states SpecState) bool {
|
|||||||
return ss&states != 0
|
return ss&states != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ProgressReport captures the progress of the current spec. It is, effectively, a structured Ginkgo-aware stack trace
|
||||||
|
type ProgressReport struct {
|
||||||
|
ParallelProcess int
|
||||||
|
RunningInParallel bool
|
||||||
|
|
||||||
|
Time time.Time
|
||||||
|
|
||||||
|
ContainerHierarchyTexts []string
|
||||||
|
LeafNodeText string
|
||||||
|
LeafNodeLocation CodeLocation
|
||||||
|
SpecStartTime time.Time
|
||||||
|
|
||||||
|
CurrentNodeType NodeType
|
||||||
|
CurrentNodeText string
|
||||||
|
CurrentNodeLocation CodeLocation
|
||||||
|
CurrentNodeStartTime time.Time
|
||||||
|
|
||||||
|
CurrentStepText string
|
||||||
|
CurrentStepLocation CodeLocation
|
||||||
|
CurrentStepStartTime time.Time
|
||||||
|
|
||||||
|
CapturedGinkgoWriterOutput string `json:",omitempty"`
|
||||||
|
GinkgoWriterOffset int
|
||||||
|
|
||||||
|
Goroutines []Goroutine
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pr ProgressReport) IsZero() bool {
|
||||||
|
return pr.CurrentNodeType == NodeTypeInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pr ProgressReport) SpecGoroutine() Goroutine {
|
||||||
|
for _, goroutine := range pr.Goroutines {
|
||||||
|
if goroutine.IsSpecGoroutine {
|
||||||
|
return goroutine
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Goroutine{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pr ProgressReport) HighlightedGoroutines() []Goroutine {
|
||||||
|
out := []Goroutine{}
|
||||||
|
for _, goroutine := range pr.Goroutines {
|
||||||
|
if goroutine.IsSpecGoroutine || !goroutine.HasHighlights() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
out = append(out, goroutine)
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pr ProgressReport) OtherGoroutines() []Goroutine {
|
||||||
|
out := []Goroutine{}
|
||||||
|
for _, goroutine := range pr.Goroutines {
|
||||||
|
if goroutine.IsSpecGoroutine || goroutine.HasHighlights() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
out = append(out, goroutine)
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pr ProgressReport) WithoutCapturedGinkgoWriterOutput() ProgressReport {
|
||||||
|
out := pr
|
||||||
|
out.CapturedGinkgoWriterOutput = ""
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
type Goroutine struct {
|
||||||
|
ID uint64
|
||||||
|
State string
|
||||||
|
Stack []FunctionCall
|
||||||
|
IsSpecGoroutine bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g Goroutine) IsZero() bool {
|
||||||
|
return g.ID == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g Goroutine) HasHighlights() bool {
|
||||||
|
for _, fc := range g.Stack {
|
||||||
|
if fc.Highlight {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
type FunctionCall struct {
|
||||||
|
Function string
|
||||||
|
Filename string
|
||||||
|
Line int
|
||||||
|
Highlight bool `json:",omitempty"`
|
||||||
|
Source []string `json:",omitempty"`
|
||||||
|
SourceHighlight int `json:",omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// NodeType captures the type of a given Ginkgo Node
|
// NodeType captures the type of a given Ginkgo Node
|
||||||
type NodeType uint
|
type NodeType uint
|
||||||
|
|
||||||
|
2
vendor/github.com/onsi/ginkgo/v2/types/version.go
generated
vendored
2
vendor/github.com/onsi/ginkgo/v2/types/version.go
generated
vendored
@ -1,3 +1,3 @@
|
|||||||
package types
|
package types
|
||||||
|
|
||||||
const VERSION = "2.1.6"
|
const VERSION = "2.2.0"
|
||||||
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
@ -569,7 +569,7 @@ github.com/mvdan/xurls
|
|||||||
# github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f => github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
|
# github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f => github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
|
||||||
## explicit
|
## explicit
|
||||||
github.com/mxk/go-flowrate/flowrate
|
github.com/mxk/go-flowrate/flowrate
|
||||||
# github.com/onsi/ginkgo/v2 v2.1.6 => github.com/onsi/ginkgo/v2 v2.1.6
|
# github.com/onsi/ginkgo/v2 v2.2.0 => github.com/onsi/ginkgo/v2 v2.2.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
github.com/onsi/ginkgo/v2
|
github.com/onsi/ginkgo/v2
|
||||||
github.com/onsi/ginkgo/v2/config
|
github.com/onsi/ginkgo/v2/config
|
||||||
@ -2689,7 +2689,7 @@ sigs.k8s.io/yaml
|
|||||||
# github.com/mxk/go-flowrate => github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
|
# github.com/mxk/go-flowrate => github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
|
||||||
# github.com/niemeyer/pretty => github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
|
# github.com/niemeyer/pretty => github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
|
||||||
# github.com/olekukonko/tablewriter => github.com/olekukonko/tablewriter v0.0.4
|
# github.com/olekukonko/tablewriter => github.com/olekukonko/tablewriter v0.0.4
|
||||||
# github.com/onsi/ginkgo/v2 => github.com/onsi/ginkgo/v2 v2.1.6
|
# github.com/onsi/ginkgo/v2 => github.com/onsi/ginkgo/v2 v2.2.0
|
||||||
# github.com/onsi/gomega => github.com/onsi/gomega v1.20.1
|
# github.com/onsi/gomega => github.com/onsi/gomega v1.20.1
|
||||||
# github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
|
# github.com/opencontainers/go-digest => github.com/opencontainers/go-digest v1.0.0
|
||||||
# github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.2
|
# github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.2
|
||||||
|
Loading…
Reference in New Issue
Block a user