+#include <config.h>
+
#include <apt-pkg/sourcelist.h>
-#include <apt-pkg/tagfile.h>
+#include <apt-pkg/fileutl.h>
-#include "assert.h"
+#include <string>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-char *tempfile = NULL;
-int tempfile_fd = -1;
+#include <gtest/gtest.h>
-void remove_tmpfile(void)
-{
- if (tempfile_fd > 0)
- close(tempfile_fd);
- if (tempfile != NULL) {
- unlink(tempfile);
- free(tempfile);
- }
-}
+#include "file-helpers.h"
-int main(int argc, char *argv[])
+TEST(SourceListTest,ParseFileDeb822)
{
- const char contents[] = ""
- "Type: deb\n"
- "URI: http://ftp.debian.org/debian\n"
- "Suite: stable\n"
- "Section: main\n"
- "Comment: Some random string\n"
- " that can be very long\n"
- "\n"
- "Type: deb\n"
- "URI: http://ftp.debian.org/debian\n"
- "Suite: unstable\n"
- "Section: main non-free\n"
- ;
-
FileFd fd;
- atexit(remove_tmpfile);
- tempfile = strdup("apt-test.XXXXXXXX");
- tempfile_fd = mkstemp(tempfile);
-
- /* (Re-)Open (as FileFd), write and seek to start of the temp file */
- equals(fd.OpenDescriptor(tempfile_fd, FileFd::ReadWrite), true);
- equals(fd.Write(contents, strlen(contents)), true);
- equals(fd.Seek(0), true);
-
- pkgSourceList sources(tempfile);
- equals(sources.size(), 2);
-
- /* clean up handled by atexit handler, so just return here */
- return 0;
+ std::string tempfile;
+ createTemporaryFile("parsefiledeb822.XXXXXX.sources", fd, &tempfile,
+ "Types: deb\n"
+ "URIs: http://ftp.debian.org/debian\n"
+ "Suites: stable\n"
+ "Components: main\n"
+ "Description: short\n"
+ " long description that can be very long\n"
+ "\n"
+ "Types: deb\n"
+ "URIs: http://ftp.debian.org/debian\n"
+ "Suites: unstable\n"
+ "Components: main non-free\n");
+ fd.Close();
+
+ pkgSourceList sources;
+ EXPECT_EQ(true, sources.Read(tempfile));
+ EXPECT_EQ(2, sources.size());
+
+ if (tempfile.empty() == false)
+ unlink(tempfile.c_str());
}