ithron / 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

Open GoogleCodeExporter opened 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