}
static isc_result_t
-setup_master() {
+setup_master(void (*warn)(struct dns_rdatacallbacks *, const char *, ...),
+ void (*error)(struct dns_rdatacallbacks *, const char *, ...))
+{
isc_result_t result;
int len;
isc_buffer_t source;
callbacks.add = add_callback;
callbacks.rawdata = rawdata_callback;
callbacks.zone = NULL;
-
+ if (warn != NULL)
+ callbacks.warn = warn;
+ if (error != NULL)
+ callbacks.error = error;
+ headerset = ISC_FALSE;
return (result);
}
static isc_result_t
-test_master(const char *testfile, dns_masterformat_t format) {
- isc_result_t result;
- headerset = ISC_FALSE;
+test_master(const char *testfile, dns_masterformat_t format,
+ void (*warn)(struct dns_rdatacallbacks *, const char *, ...),
+ void (*error)(struct dns_rdatacallbacks *, const char *, ...))
+{
+ isc_result_t result;
+
+ result = setup_master(warn, error);
+ if (result != ISC_R_SUCCESS)
+ return(result);
+
result = dns_master_loadfile2(testfile, &dns_origin, &dns_origin,
dns_rdataclass_in, ISC_TRUE,
&callbacks, mctx, format);
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master1.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master2.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_UNEXPECTEDEND);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master3.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, DNS_R_NOOWNER);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master4.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master5.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, DNS_R_BADCLASS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master15.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_NOSPACE);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master16.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master6.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master7.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master8.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, DNS_R_SEENINCLUDE);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
+ result = setup_master(NULL, NULL);
+ ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
result = dns_master_loadfile4("testdata/master/master8.data",
&dns_origin, &dns_origin,
dns_rdataclass_in, 0, ISC_TRUE,
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master9.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, DNS_R_BADCLASS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master10.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_test_end();
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
result = test_master("testdata/master/master11.data",
- dns_masterformat_text);
+ dns_masterformat_text, NULL, NULL);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_test_end();
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
/* Raw format version 0 */
- setup_master();
result = test_master("testdata/master/master12.data",
- dns_masterformat_raw);
+ dns_masterformat_raw, NULL, NULL);
ATF_CHECK_STREQ(isc_result_totext(result), "success");
ATF_CHECK(headerset);
ATF_CHECK_EQ(header.flags, 0);
/* Raw format version 1, no source serial */
- setup_master();
result = test_master("testdata/master/master13.data",
- dns_masterformat_raw);
+ dns_masterformat_raw, NULL, NULL);
ATF_CHECK_STREQ(isc_result_totext(result), "success");
ATF_CHECK(headerset);
ATF_CHECK_EQ(header.flags, 0);
/* Raw format version 1, source serial == 2011120101 */
- setup_master();
result = test_master("testdata/master/master14.data",
- dns_masterformat_raw);
+ dns_masterformat_raw, NULL, NULL);
ATF_CHECK_STREQ(isc_result_totext(result), "success");
ATF_CHECK(headerset);
ATF_CHECK((header.flags & DNS_MASTERRAW_SOURCESERIALSET) != 0);
dns_masterformat_raw);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
- result = test_master("test.dump", dns_masterformat_raw);
+ result = test_master("test.dump", dns_masterformat_raw, NULL, NULL);
ATF_CHECK_STREQ(isc_result_totext(result), "success");
ATF_CHECK(headerset);
ATF_CHECK_EQ(header.flags, 0);
dns_masterformat_raw, &header);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
- result = test_master("test.dump", dns_masterformat_raw);
+ result = test_master("test.dump", dns_masterformat_raw, NULL, NULL);
ATF_CHECK_STREQ(isc_result_totext(result), "success");
ATF_CHECK(headerset);
ATF_CHECK((header.flags & DNS_MASTERRAW_SOURCESERIALSET) != 0);
dns_test_end();
}
+static const char *warn_expect_value;
+static isc_boolean_t warn_expect_result;
+
+static void
+warn_expect(struct dns_rdatacallbacks *callbacks, const char *fmt, ...) {
+ char buf[4096];
+ va_list ap;
+
+ UNUSED(callbacks);
+
+ va_start(ap, fmt);
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ va_end(ap);
+ if (warn_expect_value != NULL && strstr(buf, warn_expect_value) != NULL)
+ warn_expect_result = ISC_TRUE;
+}
+
/* Origin change test */
ATF_TC(neworigin);
ATF_TC_HEAD(neworigin, tc) {
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
- setup_master();
+ warn_expect_value = "record with inherited owner";
+ warn_expect_result = ISC_FALSE;
result = test_master("testdata/master/master17.data",
- dns_masterformat_text);
- ATF_REQUIRE_EQ(result, DNS_R_UNSAFENAME);
+ dns_masterformat_text, warn_expect, NULL);
+ ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+ ATF_CHECK_MSG(warn_expect_result, "'%s' warning not emitted",
+ warn_expect_value);
dns_test_end();
}