diff options
| author | Chris Dyer <cdyer@cs.cmu.edu> | 2010-12-13 16:18:34 -0500 | 
|---|---|---|
| committer | Chris Dyer <cdyer@cs.cmu.edu> | 2010-12-13 16:18:34 -0500 | 
| commit | be98f29f51350c24136c191f01af3fbfe340ef78 (patch) | |
| tree | 2e104152110ca76b527147458050a41934e031f2 /klm/util/file_piece_test.cc | |
| parent | 063c0623aaf5dad8d02e5eae5793c123cd7fc3fe (diff) | |
new version of kenlm
Diffstat (limited to 'klm/util/file_piece_test.cc')
| -rw-r--r-- | klm/util/file_piece_test.cc | 29 | 
1 files changed, 21 insertions, 8 deletions
| diff --git a/klm/util/file_piece_test.cc b/klm/util/file_piece_test.cc index 23e79fe0..dc9ec7e7 100644 --- a/klm/util/file_piece_test.cc +++ b/klm/util/file_piece_test.cc @@ -8,6 +8,8 @@  #include <iostream>  #include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h>  namespace util {  namespace { @@ -27,14 +29,18 @@ BOOST_AUTO_TEST_CASE(MMapReadLine) {    BOOST_CHECK_THROW(test.get(), EndOfFileException);  } +#ifndef __APPLE__ +/* Apple isn't happy with the popen, fileno, dup.  And I don't want to + * reimplement popen.  This is an issue with the test.   + */  /* read() implementation */  BOOST_AUTO_TEST_CASE(StreamReadLine) {    std::fstream ref("file_piece.cc", std::ios::in); -  scoped_FILE catter(popen("cat file_piece.cc", "r")); -  BOOST_REQUIRE(catter.get()); +  FILE *catter = popen("cat file_piece.cc", "r"); +  BOOST_REQUIRE(catter); -  FilePiece test(dup(fileno(catter.get())), "file_piece.cc", NULL, 1); +  FilePiece test(dup(fileno(catter)), "file_piece.cc", NULL, 1);    std::string ref_line;    while (getline(ref, ref_line)) {      StringPiece test_line(test.ReadLine()); @@ -44,7 +50,9 @@ BOOST_AUTO_TEST_CASE(StreamReadLine) {      }    }    BOOST_CHECK_THROW(test.get(), EndOfFileException); +  BOOST_REQUIRE(!pclose(catter));  } +#endif // __APPLE__  #ifdef HAVE_ZLIB @@ -64,14 +72,17 @@ BOOST_AUTO_TEST_CASE(PlainZipReadLine) {    }    BOOST_CHECK_THROW(test.get(), EndOfFileException);  } -// gzip stream + +// gzip stream.  Apple doesn't like popen, fileno, dup.  This is an issue with +// the test.   +#ifndef __APPLE__  BOOST_AUTO_TEST_CASE(StreamZipReadLine) {    std::fstream ref("file_piece.cc", std::ios::in); -  scoped_FILE catter(popen("gzip <file_piece.cc", "r")); -  BOOST_REQUIRE(catter.get()); +  FILE * catter = popen("gzip <file_piece.cc", "r"); +  BOOST_REQUIRE(catter); -  FilePiece test(dup(fileno(catter.get())), "file_piece.cc", NULL, 1); +  FilePiece test(dup(fileno(catter)), "file_piece.cc", NULL, 1);    std::string ref_line;    while (getline(ref, ref_line)) {      StringPiece test_line(test.ReadLine()); @@ -81,9 +92,11 @@ BOOST_AUTO_TEST_CASE(StreamZipReadLine) {      }    }    BOOST_CHECK_THROW(test.get(), EndOfFileException); +  BOOST_REQUIRE(!pclose(catter));  } +#endif // __APPLE__ -#endif +#endif // HAVE_ZLIB  } // namespace  } // namespace util | 
