Re: [go-nuts] Why does this program carry test flags once compiled?
Many thanks Chris, that's a wonderful idea and I've successfully got rid of the test mode flags! On Tuesday, 25 July 2017 05:47:30 UTC+2, Chris Broadfoot wrote: > > One way around the flag problem is to accept an interface, instead of > using testing.T. > > Watch Mitchell Hashimoto's talk from GopherCon from about 39m30s: > https://youtu.be/8hQG7QlcLBk?t=2368 > > http://github.com/mitchellh/go-testing-interface > > On Mon, Jul 24, 2017 at 1:44 AM, roger peppe> wrote: > >> >> >> On 24 July 2017 at 09:12, Howard Guo >> wrote: >> >>> Thanks Nigel! I should definitely consider improving the test case. >>> >>> Go compiler appears to automatically places test flags into executable >>> whenever "testing" package is included - no matter the function using >>> "testing" package is dead code or otherwise. So here's a bug report for go: >>> https://github.com/golang/go/issues/21141 >>> >> >> Although this could be considered a bug, it's not one that can be fixed, >> because people rely on this behaviour of the testing package. >> >> Consider it a warning not to include testing dependencies in production >> code. >> >> >>> >>> Kind regards, >>> Howard >>> >>> On Sunday, 23 July 2017 06:54:28 UTC+2, Nigel Tao wrote: On Sat, Jul 22, 2017 at 7:08 PM, Howard Guo wrote: > https://github.com/HouzuoGuo/laitos It's tangential to your question, but out of curiousity, I skimmed the source code. In things like func TestUDPServer in https://github.com/HouzuoGuo/laitos/blob/master/frontend/plain/udp.go, you say: var stoppedNormally bool go func() { etc stoppedNormally = true }() etc server.Stop() time.Sleep(1 * time.Second) if !stoppedNormally { etc } This is an example of incorrect synchronization as per https://golang.org/ref/mem#tmp_10 There may be other such races in your code. I didn't do an exhaustive review. It may be worthwhile to run your test suite under the race detector. >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts...@googlegroups.com . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts...@googlegroups.com . >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [go-nuts] Why does this program carry test flags once compiled?
I haven't got the context but I agree that importing the testing package outside of a test is a very bad idea. If I could, I would disallow it altogether. -rob -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [go-nuts] Why does this program carry test flags once compiled?
One way around the flag problem is to accept an interface, instead of using testing.T. Watch Mitchell Hashimoto's talk from GopherCon from about 39m30s: https://youtu.be/8hQG7QlcLBk?t=2368 http://github.com/mitchellh/go-testing-interface On Mon, Jul 24, 2017 at 1:44 AM, roger peppewrote: > > > On 24 July 2017 at 09:12, Howard Guo wrote: > >> Thanks Nigel! I should definitely consider improving the test case. >> >> Go compiler appears to automatically places test flags into executable >> whenever "testing" package is included - no matter the function using >> "testing" package is dead code or otherwise. So here's a bug report for go: >> https://github.com/golang/go/issues/21141 >> > > Although this could be considered a bug, it's not one that can be fixed, > because people rely on this behaviour of the testing package. > > Consider it a warning not to include testing dependencies in production > code. > > >> >> Kind regards, >> Howard >> >> On Sunday, 23 July 2017 06:54:28 UTC+2, Nigel Tao wrote: >>> >>> On Sat, Jul 22, 2017 at 7:08 PM, Howard Guo wrote: >>> > https://github.com/HouzuoGuo/laitos >>> >>> It's tangential to your question, but out of curiousity, I skimmed the >>> source code. In things like func TestUDPServer in >>> https://github.com/HouzuoGuo/laitos/blob/master/frontend/plain/udp.go, >>> you say: >>> >>> var stoppedNormally bool >>> go func() { >>> etc >>> stoppedNormally = true >>> }() >>> etc >>> server.Stop() >>> time.Sleep(1 * time.Second) >>> if !stoppedNormally { etc } >>> >>> This is an example of incorrect synchronization as per >>> https://golang.org/ref/mem#tmp_10 >>> >>> There may be other such races in your code. I didn't do an exhaustive >>> review. It may be worthwhile to run your test suite under the race >>> detector. >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [go-nuts] Why does this program carry test flags once compiled?
On 24 July 2017 at 09:12, Howard Guowrote: > Thanks Nigel! I should definitely consider improving the test case. > > Go compiler appears to automatically places test flags into executable > whenever "testing" package is included - no matter the function using > "testing" package is dead code or otherwise. So here's a bug report for go: > https://github.com/golang/go/issues/21141 > Although this could be considered a bug, it's not one that can be fixed, because people rely on this behaviour of the testing package. Consider it a warning not to include testing dependencies in production code. > > Kind regards, > Howard > > On Sunday, 23 July 2017 06:54:28 UTC+2, Nigel Tao wrote: >> >> On Sat, Jul 22, 2017 at 7:08 PM, Howard Guo wrote: >> > https://github.com/HouzuoGuo/laitos >> >> It's tangential to your question, but out of curiousity, I skimmed the >> source code. In things like func TestUDPServer in >> https://github.com/HouzuoGuo/laitos/blob/master/frontend/plain/udp.go, >> you say: >> >> var stoppedNormally bool >> go func() { >> etc >> stoppedNormally = true >> }() >> etc >> server.Stop() >> time.Sleep(1 * time.Second) >> if !stoppedNormally { etc } >> >> This is an example of incorrect synchronization as per >> https://golang.org/ref/mem#tmp_10 >> >> There may be other such races in your code. I didn't do an exhaustive >> review. It may be worthwhile to run your test suite under the race >> detector. >> > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [go-nuts] Why does this program carry test flags once compiled?
Thanks Nigel! I should definitely consider improving the test case. Go compiler appears to automatically places test flags into executable whenever "testing" package is included - no matter the function using "testing" package is dead code or otherwise. So here's a bug report for go: https://github.com/golang/go/issues/21141 Kind regards, Howard On Sunday, 23 July 2017 06:54:28 UTC+2, Nigel Tao wrote: > > On Sat, Jul 22, 2017 at 7:08 PM, Howard Guo> wrote: > > https://github.com/HouzuoGuo/laitos > > It's tangential to your question, but out of curiousity, I skimmed the > source code. In things like func TestUDPServer in > https://github.com/HouzuoGuo/laitos/blob/master/frontend/plain/udp.go, > you say: > > var stoppedNormally bool > go func() { > etc > stoppedNormally = true > }() > etc > server.Stop() > time.Sleep(1 * time.Second) > if !stoppedNormally { etc } > > This is an example of incorrect synchronization as per > https://golang.org/ref/mem#tmp_10 > > There may be other such races in your code. I didn't do an exhaustive > review. It may be worthwhile to run your test suite under the race > detector. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [go-nuts] Why does this program carry test flags once compiled?
On Sat, Jul 22, 2017 at 7:08 PM, Howard Guowrote: > https://github.com/HouzuoGuo/laitos It's tangential to your question, but out of curiousity, I skimmed the source code. In things like func TestUDPServer in https://github.com/HouzuoGuo/laitos/blob/master/frontend/plain/udp.go, you say: var stoppedNormally bool go func() { etc stoppedNormally = true }() etc server.Stop() time.Sleep(1 * time.Second) if !stoppedNormally { etc } This is an example of incorrect synchronization as per https://golang.org/ref/mem#tmp_10 There may be other such races in your code. I didn't do an exhaustive review. It may be worthwhile to run your test suite under the race detector. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [go-nuts] Why does this program carry test flags once compiled?
Just to clarify: Jan showed that you import the "testing" package, not just from ..._test.go files. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.