nrclark / googletest

Automatically exported from code.google.com/p/googletest
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

close() function is not declared properly on AIX when using death tests #176

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Compile any test case using death test asserts (eq. EXPECT_EXIT()) on 
AIX

What is the expected output? What do you see instead?

The following error occurs:

gtest-1.3.0/include/gtest/internal/gtest-death-test-internal.h", line 
209.7: 1540-0274 (S) The name lookup for "close" did not find a 
declaration.
"/usr/include/unistd.h", line 142.12: 1540-1298 (I) "extern "C" int 
close(int)" needs to be declared in the containing scope to be found by 
name lookup.

What version of the product are you using? On what operating system?

gtest 1.3.0

uname -a
AIX 3 5

Compiler:

lslpp -L | grep cpp | grep core
vacpp.cmp.core            8.0.0.20    C     F    IBM XL C/C++ Compiler

Please provide any additional information below.

The <unistd.h> should be included explicitly. The patch below solves this 
problem:

==== gtest-1.3.0/include/gtest/internal/gtest-port.h#1 - gtest-
1.3.0/include/gtest/internal/gtest-port.h ====
@@ -379,11 +381,16 @@
 #if GTEST_HAS_STD_STRING && (GTEST_OS_LINUX || \
                              GTEST_OS_MAC || \
                              GTEST_OS_CYGWIN || \
                              (GTEST_OS_WINDOWS && _MSC_VER >= 1400))
 #define GTEST_HAS_DEATH_TEST 1
 #include <vector>
 #endif

+#ifndef _MSC_VER
+#include <unistd.h>
+#endif
+
 // Determines whether to support value-parameterized tests.

 #if defined(__GNUC__) || (_MSC_VER >= 1400)

Original issue reported on code.google.com by ade...@gmail.com on 29 Jul 2009 at 2:57

GoogleCodeExporter commented 9 years ago

Original comment by zhanyong...@gmail.com on 16 Sep 2009 at 6:08

GoogleCodeExporter commented 9 years ago

Original comment by w...@google.com on 25 Mar 2010 at 7:11