Add startHTTPServer() support function
Centralize httpd creation and add automatic retry to try to deal with NS_ERROR_SOCKET_ADDRESS_IN_USE errors in CI.
This commit is contained in:
parent
17daf9fe8d
commit
fb96cd595d
5 changed files with 75 additions and 83 deletions
|
@ -4,13 +4,9 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
//
|
||||
// Setup
|
||||
//
|
||||
Components.utils.import("resource://zotero-unit/httpd.js");
|
||||
|
||||
var apiKey = Zotero.Utilities.randomString(24);
|
||||
var port = 16213;
|
||||
var baseURL = `http://localhost:${port}/`;
|
||||
|
||||
var win, server, requestCount;
|
||||
var win, server, requestCount, httpd, baseURL;
|
||||
var responses = {};
|
||||
|
||||
function setResponse(response) {
|
||||
|
@ -45,22 +41,23 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
//
|
||||
// Tests
|
||||
//
|
||||
beforeEach(function* () {
|
||||
yield resetDB({
|
||||
beforeEach(async function () {
|
||||
await resetDB({
|
||||
thisArg: this,
|
||||
skipBundledFiles: true
|
||||
});
|
||||
win = yield loadZoteroPane();
|
||||
win = await loadZoteroPane();
|
||||
|
||||
Zotero.HTTP.mock = sinon.FakeXMLHttpRequest;
|
||||
server = sinon.fakeServer.create();
|
||||
server.autoRespond = true;
|
||||
|
||||
this.httpd = new HttpServer();
|
||||
this.httpd.start(port);
|
||||
var port;
|
||||
({ httpd, port } = await startHTTPServer());
|
||||
baseURL = `http://localhost:${port}/`;
|
||||
|
||||
yield Zotero.Users.setCurrentUserID(1);
|
||||
yield Zotero.Users.setCurrentUsername("testuser");
|
||||
await Zotero.Users.setCurrentUserID(1);
|
||||
await Zotero.Users.setCurrentUsername("testuser");
|
||||
|
||||
Zotero.Sync.Storage.Local.setModeForLibrary(Zotero.Libraries.userLibraryID, 'zfs');
|
||||
|
||||
|
@ -103,7 +100,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
|
||||
afterEach(function* () {
|
||||
var defer = new Zotero.Promise.defer();
|
||||
this.httpd.stop(() => defer.resolve());
|
||||
httpd.stop(() => defer.resolve());
|
||||
yield defer.promise;
|
||||
win.close();
|
||||
})
|
||||
|
@ -148,7 +145,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
item.attachmentSyncState = "to_download";
|
||||
yield item.saveTx();
|
||||
|
||||
this.httpd.registerPathHandler(
|
||||
httpd.registerPathHandler(
|
||||
`/users/1/items/${item.key}/file`,
|
||||
{
|
||||
handle: function (request, response) {
|
||||
|
@ -214,7 +211,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
item.attachmentSyncState = "to_download";
|
||||
yield item.saveTx();
|
||||
|
||||
this.httpd.registerPathHandler(
|
||||
httpd.registerPathHandler(
|
||||
`/users/1/items/${item.key}/file`,
|
||||
{
|
||||
handle: function (request, response) {
|
||||
|
@ -251,7 +248,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
var md5 = Zotero.Utilities.Internal.md5(text)
|
||||
|
||||
var s3Path = `pretend-s3/${item.key}`;
|
||||
this.httpd.registerPathHandler(
|
||||
httpd.registerPathHandler(
|
||||
`/users/1/items/${item.key}/file`,
|
||||
{
|
||||
handle: function (request, response) {
|
||||
|
@ -272,7 +269,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
}
|
||||
}
|
||||
);
|
||||
this.httpd.registerPathHandler(
|
||||
httpd.registerPathHandler(
|
||||
"/" + s3Path,
|
||||
{
|
||||
handle: function (request, response) {
|
||||
|
@ -313,7 +310,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
var md5 = Zotero.Utilities.Internal.md5(text);
|
||||
|
||||
var s3Path = `pretend-s3/${item.key}`;
|
||||
this.httpd.registerPathHandler(
|
||||
httpd.registerPathHandler(
|
||||
`/users/1/items/${item.key}/file`,
|
||||
{
|
||||
handle: function (request, response) {
|
||||
|
@ -325,7 +322,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
}
|
||||
}
|
||||
);
|
||||
this.httpd.registerPathHandler(
|
||||
httpd.registerPathHandler(
|
||||
"/" + s3Path,
|
||||
{
|
||||
handle: function (request, response) {
|
||||
|
@ -687,7 +684,7 @@ describe("Zotero.Sync.Storage.Mode.ZFS", function () {
|
|||
var md5 = Zotero.Utilities.Internal.md5(file)
|
||||
|
||||
var s3Path = `pretend-s3/${item.key}`;
|
||||
this.httpd.registerPathHandler(
|
||||
httpd.registerPathHandler(
|
||||
`/users/1/items/${item.key}/file`,
|
||||
{
|
||||
handle: function (request, response) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue