diff --git a/Makefile b/Makefile index 7a61e72c6..3d44723e0 100644 --- a/Makefile +++ b/Makefile @@ -106,8 +106,7 @@ android: test: build/test/Makefile $(MAKE) -C build/test BUILDTYPE=$(BUILDTYPE) V=$(V) test -test-%: build/test/Makefile - $(MAKE) -C build/test BUILDTYPE=$(BUILDTYPE) V=$(V) test +test-%: test ./scripts/run_tests.sh --gtest_filter=$* # build Mac OS X project for Xcode diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index e53e9a84a..6a715f378 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -17,7 +17,9 @@ if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then fi # install test server dependencies -(cd test; npm install express@4.11) +if [ ! -d "test/node_modules/express" ]; then + (cd test; npm install express@4.11.1) +fi RESULT=0 ${CMD} "$@" || RESULT=$? diff --git a/test/headless/headless.cpp b/test/headless/headless.cpp index cd976be27..9f19c2c56 100644 --- a/test/headless/headless.cpp +++ b/test/headless/headless.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -29,7 +30,7 @@ void rewriteLocalScheme(rapidjson::Value &value, rapidjson::Document::AllocatorT class HeadlessTest : public ::testing::TestWithParam { public: static void SetUpTestCase() { - const auto server = mbgl::test::getBaseDirectory() + "/headless/server.js"; + const auto server = mbgl::platform::applicationRoot() + "/TEST_DATA/headless/server.js"; pid = mbgl::test::startServer(server.c_str()); display = std::make_shared(); } diff --git a/test/storage/cache_response.cpp b/test/storage/cache_response.cpp index 57aa8a5e1..62aded7ca 100644 --- a/test/storage/cache_response.cpp +++ b/test/storage/cache_response.cpp @@ -16,20 +16,20 @@ TEST_F(Storage, CacheResponse) { const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/cache" }; fs.request(resource, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Response 1"); - EXPECT_GT(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Response 1", res.data); + EXPECT_LT(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); fs.request(resource, uv_default_loop(), [&, res](const Response &res2) { - EXPECT_EQ(res2.status, res.status); - EXPECT_EQ(res2.data, res.data); - EXPECT_EQ(res2.expires, res.expires); - EXPECT_EQ(res2.modified, res.modified); - EXPECT_EQ(res2.etag, res.etag); - EXPECT_EQ(res2.message, res.message); + EXPECT_EQ(res.status, res2.status); + EXPECT_EQ(res.data, res2.data); + EXPECT_EQ(res.expires, res2.expires); + EXPECT_EQ(res.modified, res2.modified); + EXPECT_EQ(res.etag, res2.etag); + EXPECT_EQ(res.message, res2.message); CacheResponse.finish(); }); diff --git a/test/storage/cache_revalidate.cpp b/test/storage/cache_revalidate.cpp index 1c8653f18..75df5822a 100644 --- a/test/storage/cache_revalidate.cpp +++ b/test/storage/cache_revalidate.cpp @@ -17,22 +17,22 @@ TEST_F(Storage, CacheRevalidate) { const Resource revalidateSame { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; fs.request(revalidateSame, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Response"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, "snowfall"); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Response", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("snowfall", res.etag); + EXPECT_EQ("", res.message); fs.request(revalidateSame, uv_default_loop(), [&, res](const Response &res2) { - EXPECT_EQ(res2.status, Response::Successful); - EXPECT_EQ(res2.data, "Response"); + EXPECT_EQ(Response::Successful, res2.status); + EXPECT_EQ("Response", res2.data); // We use this to indicate that a 304 reply came back. - EXPECT_GT(res2.expires, 0); - EXPECT_EQ(res2.modified, 0); + EXPECT_LT(0, res2.expires); + EXPECT_EQ(0, res2.modified); // We're not sending the ETag in the 304 reply, but it should still be there. - EXPECT_EQ(res2.etag, "snowfall"); - EXPECT_EQ(res2.message, ""); + EXPECT_EQ("snowfall", res2.etag); + EXPECT_EQ("", res2.message); CacheRevalidateSame.finish(); }); @@ -40,21 +40,21 @@ TEST_F(Storage, CacheRevalidate) { const Resource revalidateModified { Resource::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; fs.request(revalidateModified, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Response"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 1420070400); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Response", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(1420070400, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); fs.request(revalidateModified, uv_default_loop(), [&, res](const Response &res2) { - EXPECT_EQ(res2.status, Response::Successful); - EXPECT_EQ(res2.data, "Response"); + EXPECT_EQ(Response::Successful, res2.status); + EXPECT_EQ("Response", res2.data); // We use this to indicate that a 304 reply came back. - EXPECT_GT(res2.expires, 0); - EXPECT_EQ(res2.modified, 1420070400); - EXPECT_EQ(res2.etag, ""); - EXPECT_EQ(res2.message, ""); + EXPECT_LT(0, res2.expires); + EXPECT_EQ(1420070400, res2.modified); + EXPECT_EQ("", res2.etag); + EXPECT_EQ("", res2.message); CacheRevalidateModified.finish(); }); @@ -62,20 +62,20 @@ TEST_F(Storage, CacheRevalidate) { const Resource revalidateEtag { Resource::Unknown, "http://127.0.0.1:3000/revalidate-etag" }; fs.request(revalidateEtag, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Response 1"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, "response-1"); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Response 1", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("response-1", res.etag); + EXPECT_EQ("", res.message); fs.request(revalidateEtag, uv_default_loop(), [&, res](const Response &res2) { - EXPECT_EQ(res2.status, Response::Successful); - EXPECT_EQ(res2.data, "Response 2"); - EXPECT_EQ(res2.expires, 0); - EXPECT_EQ(res2.modified, 0); - EXPECT_EQ(res2.etag, "response-2"); - EXPECT_EQ(res2.message, ""); + EXPECT_EQ(Response::Successful, res2.status); + EXPECT_EQ("Response 2", res2.data); + EXPECT_EQ(0, res2.expires); + EXPECT_EQ(0, res2.modified); + EXPECT_EQ("response-2", res2.etag); + EXPECT_EQ("", res2.message); CacheRevalidateEtag.finish(); }); diff --git a/test/storage/directory_reading.cpp b/test/storage/directory_reading.cpp index 90b7846fd..84221f3f2 100644 --- a/test/storage/directory_reading.cpp +++ b/test/storage/directory_reading.cpp @@ -11,14 +11,13 @@ TEST_F(Storage, ReadDirectory) { DefaultFileSource fs(nullptr, uv_default_loop()); - const auto dir = std::string { "asset://" } + mbgl::test::getBaseDirectory() + "/fixtures/storage"; - fs.request({ Resource::Unknown, dir }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Error); - EXPECT_EQ(res.data.size(), 0ul); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, "illegal operation on a directory"); + fs.request({ Resource::Unknown, "asset://TEST_DATA/fixtures/storage" }, uv_default_loop(), [&](const Response &res) { + EXPECT_EQ(Response::Error, res.status); + EXPECT_EQ(0ul, res.data.size()); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("illegal operation on a directory", res.message); ReadDirectory.finish(); }); diff --git a/test/storage/file_reading.cpp b/test/storage/file_reading.cpp index 93c119d44..f7eea9c88 100644 --- a/test/storage/file_reading.cpp +++ b/test/storage/file_reading.cpp @@ -3,6 +3,7 @@ #include #include +#include TEST_F(Storage, EmptyFile) { SCOPED_TEST(EmptyFile) @@ -11,14 +12,15 @@ TEST_F(Storage, EmptyFile) { DefaultFileSource fs(nullptr, uv_default_loop()); - const auto file = std::string { "asset://" } + mbgl::test::getBaseDirectory() + "/fixtures/storage/empty"; - fs.request({ Resource::Unknown, file }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data.size(), 0ul); - EXPECT_EQ(res.expires, 0); - EXPECT_GT(res.modified, 0); - EXPECT_NE(res.etag, ""); - EXPECT_EQ(res.message, ""); + fs.request({ Resource::Unknown, "asset://TEST_DATA/fixtures/storage/empty" }, + uv_default_loop(), + [&](const Response &res) { + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ(0ul, res.data.size()); + EXPECT_EQ(0, res.expires); + EXPECT_LT(1420000000, res.modified); + EXPECT_NE("", res.etag); + EXPECT_EQ("", res.message); EmptyFile.finish(); }); @@ -32,14 +34,15 @@ TEST_F(Storage, NonExistentFile) { DefaultFileSource fs(nullptr, uv_default_loop()); - const auto file = std::string { "asset://" } + mbgl::test::getBaseDirectory() + "/fixtures/storage/does_not_exist"; - fs.request({ Resource::Unknown, file }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Error); - EXPECT_EQ(res.data.size(), 0ul); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, "no such file or directory"); + fs.request({ Resource::Unknown, "asset://TEST_DATA/fixtures/storage/does_not_exist" }, + uv_default_loop(), + [&](const Response &res) { + EXPECT_EQ(Response::Error, res.status); + EXPECT_EQ(0ul, res.data.size()); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("no such file or directory", res.message); NonExistentFile.finish(); }); diff --git a/test/storage/http_cancel.cpp b/test/storage/http_cancel.cpp index 948fab8de..0a5194d6e 100644 --- a/test/storage/http_cancel.cpp +++ b/test/storage/http_cancel.cpp @@ -36,12 +36,12 @@ TEST_F(Storage, HTTPCancelMultiple) { ADD_FAILURE() << "Callback should not be called"; }); fs.request(resource, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); HTTPCancelMultiple.finish(); }); fs.cancel(req2); diff --git a/test/storage/http_coalescing.cpp b/test/storage/http_coalescing.cpp index 0224b2444..bfd9137ab 100644 --- a/test/storage/http_coalescing.cpp +++ b/test/storage/http_coalescing.cpp @@ -23,15 +23,15 @@ TEST_F(Storage, HTTPCoalescing) { if (!reference) { reference = &res; } else { - EXPECT_EQ(reference, &res); + EXPECT_EQ(&res, reference); } - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); if (counter >= total) { HTTPCoalescing.finish(); diff --git a/test/storage/http_error.cpp b/test/storage/http_error.cpp index 274b88fd4..101166780 100644 --- a/test/storage/http_error.cpp +++ b/test/storage/http_error.cpp @@ -26,14 +26,14 @@ TEST_F(Storage, HTTPError) { fs.request({ Resource::Unknown, "http://127.0.0.1:3000/temporary-error" }, uv_default_loop(), [&](const Response &res) { const auto duration = double(uv_hrtime() - start) / 1e9; - EXPECT_GT(duration, 1) << "Backoff timer didn't wait 1 second"; - EXPECT_LT(duration, 1.2) << "Backoff timer fired too late"; - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_LT(1, duration) << "Backoff timer didn't wait 1 second"; + EXPECT_GT(1.2, duration) << "Backoff timer fired too late"; + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); HTTPTemporaryError.finish(); }); @@ -41,14 +41,14 @@ TEST_F(Storage, HTTPError) { fs.request({ Resource::Unknown, "http://127.0.0.1:3001/" }, uv_default_loop(), [&](const Response &res) { const auto duration = double(uv_hrtime() - start) / 1e9; // 1.5 seconds == 4 retries, with a 500ms timeout (see above). - EXPECT_GT(duration, 1.5) << "Resource wasn't retried the correct number of times"; - EXPECT_LT(duration, 1.7) << "Resource wasn't retried the correct number of times"; - EXPECT_EQ(res.status, Response::Error); + EXPECT_LT(1.5, duration) << "Resource wasn't retried the correct number of times"; + EXPECT_GT(1.7, duration) << "Resource wasn't retried the correct number of times"; + EXPECT_EQ(Response::Error, res.status); EXPECT_TRUE(res.message == "Couldn't connect to server" || res.message == "The operation couldn’t be completed. (NSURLErrorDomain error -1004.)"); - EXPECT_EQ(res.data, ""); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); + EXPECT_EQ("", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); HTTPConnectionError.finish(); }); diff --git a/test/storage/http_header_parsing.cpp b/test/storage/http_header_parsing.cpp index 0ee78a291..2cecd78a4 100644 --- a/test/storage/http_header_parsing.cpp +++ b/test/storage/http_header_parsing.cpp @@ -15,12 +15,12 @@ TEST_F(Storage, HTTPHeaderParsing) { DefaultFileSource fs(nullptr, uv_default_loop()); fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test?modified=1420794326&expires=1420797926&etag=foo" }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_EQ(res.expires, 1420797926); - EXPECT_EQ(res.modified, 1420794326); - EXPECT_EQ(res.etag, "foo"); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_EQ(1420797926, res.expires); + EXPECT_EQ(1420794326, res.modified); + EXPECT_EQ("foo", res.etag); + EXPECT_EQ("", res.message); HTTPExpiresTest.finish(); }); @@ -29,12 +29,12 @@ TEST_F(Storage, HTTPHeaderParsing) { std::chrono::system_clock::now().time_since_epoch()).count(); fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test?cachecontrol=max-age=120" }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_LT(std::abs(res.expires - now - 120), 2) << "Expiration date isn't about 120 seconds in the future"; - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_GT(2, std::abs(res.expires - now - 120)) << "Expiration date isn't about 120 seconds in the future"; + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); HTTPCacheControlTest.finish(); }); diff --git a/test/storage/http_load.cpp b/test/storage/http_load.cpp index 8ffae05b1..73057f94f 100644 --- a/test/storage/http_load.cpp +++ b/test/storage/http_load.cpp @@ -18,12 +18,12 @@ TEST_F(Storage, HTTPLoad) { std::function req = [&]() { const auto current = number++; fs.request({ Resource::Unknown, std::string("http://127.0.0.1:3000/load/") + std::to_string(current) }, uv_default_loop(), [&, current](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, std::string("Request ") + std::to_string(current)); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ(std::string("Request ") + std::to_string(current), res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); if (number <= max) { req(); diff --git a/test/storage/http_noloop.cpp b/test/storage/http_noloop.cpp index d9d69af5a..673c8bf73 100644 --- a/test/storage/http_noloop.cpp +++ b/test/storage/http_noloop.cpp @@ -21,13 +21,13 @@ TEST_F(Storage, HTTPNoLoop) { }); fs.request({ Resource::Unknown, "http://127.0.0.1:3000/temporary-error" }, [&](const Response &res) { - EXPECT_NE(mainThread, uv_thread_self()) << "Response was called in the same thread"; - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_NE(uv_thread_self(), mainThread) << "Response was called in the same thread"; + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); HTTPNoLoop.finish(); uv_async_send(async); diff --git a/test/storage/http_other_loop.cpp b/test/storage/http_other_loop.cpp index d45525039..45990ac21 100644 --- a/test/storage/http_other_loop.cpp +++ b/test/storage/http_other_loop.cpp @@ -13,12 +13,12 @@ TEST_F(Storage, HTTPOtherLoop) { DefaultFileSource fs(nullptr); fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test" }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); HTTPOtherLoop.finish(); }); diff --git a/test/storage/http_reading.cpp b/test/storage/http_reading.cpp index 7130e13c6..3033a6f54 100644 --- a/test/storage/http_reading.cpp +++ b/test/storage/http_reading.cpp @@ -15,23 +15,23 @@ TEST_F(Storage, HTTPReading) { const auto mainThread = uv_thread_self(); fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test" }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(mainThread, uv_thread_self()); - EXPECT_EQ(res.status, Response::Successful); - EXPECT_EQ(res.data, "Hello World!"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); - EXPECT_EQ(res.message, ""); + EXPECT_EQ(uv_thread_self(), mainThread); + EXPECT_EQ(Response::Successful, res.status); + EXPECT_EQ("Hello World!", res.data); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); + EXPECT_EQ("", res.message); HTTPTest.finish(); }); fs.request({ Resource::Unknown, "http://127.0.0.1:3000/doesnotexist" }, uv_default_loop(), [&](const Response &res) { - EXPECT_EQ(mainThread, uv_thread_self()); - EXPECT_EQ(res.status, Response::Error); - EXPECT_EQ(res.message, "HTTP status code 404"); - EXPECT_EQ(res.expires, 0); - EXPECT_EQ(res.modified, 0); - EXPECT_EQ(res.etag, ""); + EXPECT_EQ(uv_thread_self(), mainThread); + EXPECT_EQ(Response::Error, res.status); + EXPECT_EQ("HTTP status code 404", res.message); + EXPECT_EQ(0, res.expires); + EXPECT_EQ(0, res.modified); + EXPECT_EQ("", res.etag); HTTP404.finish(); }); diff --git a/test/storage/storage.cpp b/test/storage/storage.cpp index 30f632d19..5dbd13dcd 100644 --- a/test/storage/storage.cpp +++ b/test/storage/storage.cpp @@ -1,10 +1,10 @@ #include "storage.hpp" +#include pid_t Storage::pid = 0; void Storage::SetUpTestCase() { - const auto server = mbgl::test::getBaseDirectory() + "/storage/server.js"; - fprintf(stderr, "server: %s\n", server.c_str()); + const auto server = mbgl::platform::applicationRoot() + "/TEST_DATA/storage/server.js"; pid = mbgl::test::startServer(server.c_str()); } diff --git a/test/test.gyp b/test/test.gyp index 0362b8805..af7dd97ee 100644 --- a/test/test.gyp +++ b/test/test.gyp @@ -3,10 +3,23 @@ '../gyp/common.gypi', ], 'targets': [ + { 'target_name': 'symlink_TEST_DATA', + 'type': 'none', + 'hard_dependency': 1, + 'actions': [ + { + 'action_name': 'Symlink Fixture Directory', + 'inputs': ['