Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ _This release is scheduled to be released on 2023-04-01._

- Added increments for hourly forecasts in weather module (#2996)
- Added tests for hourly weather forecast
- Added possibility to ignore MagicMirror repo in updatenotification module

### Removed

Expand Down
16 changes: 9 additions & 7 deletions modules/default/updatenotification/git_helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class GitHelper {
async add(moduleName) {
let moduleFolder = BASE_DIR;

if (moduleName !== "default") {
if (moduleName !== "MagicMirror") {
moduleFolder = `${moduleFolder}modules/${moduleName}`;
}

Expand Down Expand Up @@ -68,7 +68,7 @@ class GitHelper {
isBehindInStatus: false
};

if (repo.module === "default") {
if (repo.module === "MagicMirror") {
// the hash is only needed for the mm repo
const { stderr, stdout } = await this.execShell(`cd ${repo.folder} && git rev-parse HEAD`);

Expand Down Expand Up @@ -121,22 +121,24 @@ class GitHelper {
return gitInfo;
}

const { stderr } = await this.execShell(`cd ${repo.folder} && git fetch --dry-run`);
const { stderr } = await this.execShell(`cd ${repo.folder} && git fetch -n --dry-run`);

// example output:
// From https://github.com/MichMich/MagicMirror
// e40ddd4..06389e3 develop -> origin/develop
// here the result is in stderr (this is a git default, don't ask why ...)
const matches = stderr.match(this.getRefRegex(gitInfo.current));

if (!matches || !matches[0]) {
// no refs found, nothing to do
return;
// this is the default if there was no match from "git fetch -n --dry-run".
// Its a fallback because if there was a real "git fetch", the above "git fetch -n --dry-run" would deliver nothing.
let refDiff = gitInfo.current + "..origin/" + gitInfo.current;
if (matches && matches[0]) {
refDiff = matches[0];
}

// get behind with refs
try {
const { stdout } = await this.execShell(`cd ${repo.folder} && git rev-list --ancestry-path --count ${matches[0]}`);
const { stdout } = await this.execShell(`cd ${repo.folder} && git rev-list --ancestry-path --count ${refDiff}`);
gitInfo.behind = parseInt(stdout);

return gitInfo;
Expand Down
4 changes: 3 additions & 1 deletion modules/default/updatenotification/node_helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ module.exports = NodeHelper.create({
}
}

await this.gitHelper.add("default");
if (!this.ignoreUpdateChecking("MagicMirror")) {
await this.gitHelper.add("MagicMirror");
}
},

async socketNotificationReceived(notification, payload) {
Expand Down
2 changes: 1 addition & 1 deletion modules/default/updatenotification/updatenotification.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Module.register("updatenotification", {

addFilters() {
this.nunjucksEnvironment().addFilter("diffLink", (text, status) => {
if (status.module !== "default") {
if (status.module !== "MagicMirror") {
return text;
}

Expand Down
2 changes: 1 addition & 1 deletion modules/default/updatenotification/updatenotification.njk
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<div class="small bright">
<i class="fas fa-exclamation-circle"></i>
<span>
{% set mainTextLabel = "UPDATE_NOTIFICATION" if name === "default" else "UPDATE_NOTIFICATION_MODULE" %}
{% set mainTextLabel = "UPDATE_NOTIFICATION" if name === "MagicMirror" else "UPDATE_NOTIFICATION_MODULE" %}
{{ mainTextLabel | translate({MODULE_NAME: name}) }}
</span>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,24 @@ exports[`Updatenotification custom module returns status information without has
}
`;

exports[`Updatenotification default returns status information 1`] = `
exports[`Updatenotification MagicMirror returns status information 1`] = `
{
"behind": 5,
"current": "develop",
"hash": "332e429a41f1a2339afd4f0ae96dd125da6beada",
"isBehindInStatus": false,
"module": "default",
"module": "MagicMirror",
"tracking": "origin/develop",
}
`;

exports[`Updatenotification default returns status information early if isBehindInStatus 1`] = `
exports[`Updatenotification MagicMirror returns status information early if isBehindInStatus 1`] = `
{
"behind": 5,
"current": "develop",
"hash": "332e429a41f1a2339afd4f0ae96dd125da6beada",
"isBehindInStatus": true,
"module": "default",
"module": "MagicMirror",
"tracking": "origin/develop",
}
`;
13 changes: 3 additions & 10 deletions tests/unit/functions/updatenotification_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ describe("Updatenotification", () => {
return { stdout: gitRevParseOut, stderr: gitRevParseErr };
} else if (command.includes("git status -sb")) {
return { stdout: gitStatusOut, stderr: gitStatusErr };
} else if (command.includes("git fetch --dry-run")) {
} else if (command.includes("git fetch -n --dry-run")) {
return { stdout: gitFetchOut, stderr: gitFetchErr };
} else if (command.includes("git rev-list --ancestry-path --count")) {
return { stdout: gitRevListOut, stderr: gitRevListErr };
Expand All @@ -71,8 +71,8 @@ describe("Updatenotification", () => {
jest.clearAllMocks();
});

describe("default", () => {
const moduleName = "default";
describe("MagicMirror", () => {
const moduleName = "MagicMirror";

beforeEach(async () => {
gitRemoteOut = "origin\tgit@github.com:MichMich/MagicMirror.git (fetch)\norigin\tgit@github.com:MichMich/MagicMirror.git (push)\n";
Expand Down Expand Up @@ -108,13 +108,6 @@ describe("Updatenotification", () => {
const { error } = require("logger");
expect(error).toHaveBeenCalledWith(`Failed to retrieve repo info for ${moduleName}: Failed to retrieve status`);
});

it("excludes repo if refs don't match regex", async () => {
Comment thread
rejas marked this conversation as resolved.
gitFetchErr = "";

const repos = await gitHelper.getRepos();
expect(repos.length).toBe(0);
});
});

describe("custom module", () => {
Expand Down