Merge remote-tracking branch 'mvo/feature/source-deb822' into debian/experimental...
[ntk/apt.git] / test / libapt / sourcelist_test.cc
CommitLineData
caeb19b7
MV
1#include <apt-pkg/sourcelist.h>
2#include <apt-pkg/tagfile.h>
3
4#include "assert.h"
5#include <stdlib.h>
6#include <string.h>
7#include <unistd.h>
8
9char *tempfile = NULL;
10int tempfile_fd = -1;
11
12void remove_tmpfile(void)
13{
14 if (tempfile_fd > 0)
15 close(tempfile_fd);
16 if (tempfile != NULL) {
17 unlink(tempfile);
18 free(tempfile);
19 }
20}
21
22int main(int argc, char *argv[])
23{
24 const char contents[] = ""
25 "Type: deb\n"
866e9fad 26 "URI: http://ftp.debian.org/debian\n"
78766f46 27 "Suite: stable\n"
caeb19b7
MV
28 "Section: main\n"
29 "Comment: Some random string\n"
30 " that can be very long\n"
31 "\n"
32 "Type: deb\n"
866e9fad 33 "URI: http://ftp.debian.org/debian\n"
78766f46 34 "Suite: unstable\n"
caeb19b7
MV
35 "Section: main non-free\n"
36 ;
37
38 FileFd fd;
9aaa4528 39 atexit(remove_tmpfile);
caeb19b7
MV
40 tempfile = strdup("apt-test.XXXXXXXX");
41 tempfile_fd = mkstemp(tempfile);
42
43 /* (Re-)Open (as FileFd), write and seek to start of the temp file */
44 equals(fd.OpenDescriptor(tempfile_fd, FileFd::ReadWrite), true);
45 equals(fd.Write(contents, strlen(contents)), true);
46 equals(fd.Seek(0), true);
47
48 pkgSourceList sources(tempfile);
49 equals(sources.size(), 2);
50
51 /* clean up handled by atexit handler, so just return here */
52 return 0;
53}