Skip to content

Commit

Permalink
Merge pull request #1786 from zb3/fix-overwritten-output
Browse files Browse the repository at this point in the history
  • Loading branch information
a3957273 committed Apr 15, 2024
2 parents 7538be6 + db331e9 commit 42ad9a4
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/web/App.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,12 @@ class App {
// has completed.
if (this.autoBakePause) return false;

if (this.autoBake_ && !this.baking) {
if (this.baking) {
this.manager.worker.cancelBakeForAutoBake();
this.baking = false;
}

if (this.autoBake_) {
log.debug("Auto-baking");
this.manager.worker.bakeInputs({
nums: [this.manager.tabs.getActiveTab("input")],
Expand Down
22 changes: 22 additions & 0 deletions src/web/waiters/WorkerWaiter.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,28 @@ class WorkerWaiter {
};
}

/**
* Cancels the current bake making it possible to autobake again
*/
cancelBakeForAutoBake() {
if (this.totalOutputs > 1) {
this.cancelBake();
} else {
// In this case the UI changes can be skipped

for (let i = this.chefWorkers.length - 1; i >= 0; i--) {
if (this.chefWorkers[i].active) {
this.removeChefWorker(this.chefWorkers[i]);
}
}

this.inputs = [];
this.inputNums = [];
this.totalOutputs = 0;
this.loadingOutputs = 0;
}
}

/**
* Cancels the current bake by terminating and removing all ChefWorkers
*
Expand Down
41 changes: 41 additions & 0 deletions tests/browser/01_io.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,33 @@ module.exports = {
browser.expect.element("#output-text .cm-status-bar .eol-value").text.to.equal("LF");
},

"Autobaking the latest input": browser => {
// Use the sleep recipe to simulate a long running task
utils.loadRecipe(browser, "Sleep", "input", [2000]);

browser.waitForElementVisible("#stale-indicator");

// Enable previously disabled autobake
browser.click("#auto-bake-label");

browser.sendKeys("#input-text .cm-content", "1");

browser.pause(500);

// Make another change while the previous input is being baked
browser.sendKeys("#input-text .cm-content", "2");

browser
.waitForElementNotVisible("#stale-indicator")
.waitForElementNotVisible("#output-loader");

// Ensure we got the latest input baked
utils.expectOutput(browser, "input12");

// Turn autobake off again
browser.click("#auto-bake-label");
},

"Special content": browser => {
/* Special characters are rendered correctly */
utils.setInput(browser, SPECIAL_CHARS, false);
Expand Down Expand Up @@ -645,6 +672,20 @@ module.exports = {
},

"Loading from URL": browser => {
utils.clear(browser);

/* Side panel displays correct info */
utils.uploadFile(browser, "files/TowelDay.jpeg");

browser
.waitForElementVisible("#input-text .cm-file-details")
.waitForElementVisible("#input-text .cm-file-details .file-details-toggle-shown")
.waitForElementVisible("#input-text .cm-file-details .file-details-thumbnail")
.waitForElementVisible("#input-text .cm-file-details .file-details-name")
.waitForElementVisible("#input-text .cm-file-details .file-details-size")
.waitForElementVisible("#input-text .cm-file-details .file-details-type")
.waitForElementVisible("#input-text .cm-file-details .file-details-loaded");

/* Complex deep link populates the input correctly (encoding, eol, input) */
browser
.urlHash("recipe=To_Base64('A-Za-z0-9%2B/%3D')&input=VGhlIHNoaXBzIGh1bmcgaW4gdGhlIHNreSBpbiBtdWNoIHRoZSBzYW1lIHdheSB0aGF0IGJyaWNrcyBkb24ndC4M&ienc=21866&oenc=1201&ieol=FF&oeol=PS")
Expand Down

0 comments on commit 42ad9a4

Please sign in to comment.