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:
Dan Stillman 2023-08-16 01:10:56 -04:00
parent 17daf9fe8d
commit fb96cd595d
5 changed files with 75 additions and 83 deletions

View file

@ -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) {