Re: [go-nuts] Why does this program carry test flags once compiled?

2017-07-25 Thread Howard Guo
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?

2017-07-24 Thread Rob Pike
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?

2017-07-24 Thread Chris Broadfoot
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+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?

2017-07-24 Thread roger peppe
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.


Re: [go-nuts] Why does this program carry test flags once compiled?

2017-07-24 Thread Howard Guo
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?

2017-07-22 Thread Nigel Tao
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?

2017-07-22 Thread Tamás Gulácsi
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.