aboutsummaryrefslogtreecommitdiffstats
path: root/text_cmds/tests/sort_vers.c
blob: 8a3fce8076a3702b157b84236148819fa7983f19 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <darwintest.h>
#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
#include <limits.h>
 
T_DECL(versionstring, "Apple specific version string") {
	char version[128];
	FILE *sortfile = popen("/usr/bin/sort --version", "r");
	T_ASSERT_NOTNULL(sortfile, "Getting version string");
	T_ASSERT_NOTNULL(fgets(version, sizeof(version), sortfile), "Reading version string");
	pclose(sortfile);
	T_ASSERT_NOTNULL(strstr(version, "-Apple"), "Apple in version string");

	char *num = strstr(version, "(");
	char *endnum = strstr(version, ")");
	T_ASSERT_NOTNULL(num, "Locating parens start");
	T_ASSERT_NOTNULL(endnum, "Locating parens end");
	T_ASSERT_GT(endnum, num, "end is after the start");
	long applevers = strtol(num+1, &endnum, 10);
	T_ASSERT_GT(applevers, 0, "Version greater than zero");
	T_ASSERT_LT(applevers, LONG_MAX, "Version less than LONG_MAX");
}