mirror of
https://git.cloudron.io/cloudron/syncthing-app
synced 2025-09-13 16:29:09 +00:00
Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9801d5e255 | ||
|
31b7b66a31 | ||
|
dce1a84d59 | ||
|
f57c6fce92 | ||
|
eb13771fd7 | ||
|
81d73ad09e | ||
|
3858cac612 | ||
|
40d2f5626e | ||
|
e73e316292 | ||
|
f651048574 | ||
|
6d6ed058f7 | ||
|
df6b2725ad | ||
|
81277451dc | ||
|
e9a80dddda | ||
|
ba33f68bc8 | ||
|
aa4cdb2de9 |
31
CHANGELOG
31
CHANGELOG
@@ -444,3 +444,34 @@
|
|||||||
* #9274: Missing lock in DeviceStatistics ("fatal error: concurrent map read and map write")
|
* #9274: Missing lock in DeviceStatistics ("fatal error: concurrent map read and map write")
|
||||||
* #7406: Add UPnP support for IPv6
|
* #7406: Add UPnP support for IPv6
|
||||||
|
|
||||||
|
[1.26.2]
|
||||||
|
* Update Syncthing to 1.27.3
|
||||||
|
* [Full changelog](https://github.com/syncthing/syncthing/releases/tag/v1.27.3)
|
||||||
|
* #9039: Sync from Linux to Mac with ownership - Local additions after rescan
|
||||||
|
* #9241: Versions path does not honor tilde (~) shortcut
|
||||||
|
* #8616: Add CLI completion
|
||||||
|
* #9151: Add "stay logged in" checkbox to login dialog
|
||||||
|
|
||||||
|
[1.26.3]
|
||||||
|
* Update Syncthing to 1.27.4
|
||||||
|
* [Full changelog](https://github.com/syncthing/syncthing/releases/tag/v1.27.4)
|
||||||
|
* #9369: Panic in ignore matching on invalid UTF-8 from filesystem watcher
|
||||||
|
* #9435: syncthing should be cgroup aware
|
||||||
|
* #9339: File system watcher should skip ignored directories in more cases
|
||||||
|
|
||||||
|
[1.26.4]
|
||||||
|
* Update Syncthing to 1.27.5
|
||||||
|
* [Full changelog](https://github.com/syncthing/syncthing/releases/tag/v1.27.5)
|
||||||
|
* #8972: Open share settings when clicking 'shared with'
|
||||||
|
* #9470: Show encryption status for devices sharing folder
|
||||||
|
|
||||||
|
[1.26.5]
|
||||||
|
* Update Syncthing to 1.27.6
|
||||||
|
* [Full changelog](https://github.com/syncthing/syncthing/releases/tag/v1.27.6)
|
||||||
|
* lib/db: Drop indexes for outgoing data to force refresh (ref #9496) (#9502)
|
||||||
|
|
||||||
|
[1.26.6]
|
||||||
|
* Update Syncthing to 1.27.7
|
||||||
|
* [Full changelog](https://github.com/syncthing/syncthing/releases/tag/v1.27.7)
|
||||||
|
* #9503: lib/nat: panic: runtime error: index out of range
|
||||||
|
|
||||||
|
@@ -5,8 +5,8 @@
|
|||||||
"description": "file://DESCRIPTION.md",
|
"description": "file://DESCRIPTION.md",
|
||||||
"changelog": "file://CHANGELOG",
|
"changelog": "file://CHANGELOG",
|
||||||
"tagline": "Decentralized file synchronization",
|
"tagline": "Decentralized file synchronization",
|
||||||
"version": "1.26.1",
|
"version": "1.26.6",
|
||||||
"upstreamVersion": "1.27.2",
|
"upstreamVersion": "1.27.7",
|
||||||
"healthCheckPath": "/healthcheck",
|
"healthCheckPath": "/healthcheck",
|
||||||
"httpPort": 8000,
|
"httpPort": 8000,
|
||||||
"addons": {
|
"addons": {
|
||||||
|
@@ -3,7 +3,7 @@ FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768
|
|||||||
RUN mkdir -p /app/code
|
RUN mkdir -p /app/code
|
||||||
WORKDIR /app/code
|
WORKDIR /app/code
|
||||||
|
|
||||||
ARG VERSION=1.27.2
|
ARG VERSION=1.27.7
|
||||||
|
|
||||||
RUN wget https://github.com/syncthing/syncthing/releases/download/v${VERSION}/syncthing-linux-amd64-v${VERSION}.tar.gz -O - | tar -xz -C /app/code --strip-components=1
|
RUN wget https://github.com/syncthing/syncthing/releases/download/v${VERSION}/syncthing-linux-amd64-v${VERSION}.tar.gz -O - | tar -xz -C /app/code --strip-components=1
|
||||||
|
|
||||||
|
1125
test/package-lock.json
generated
1125
test/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -9,10 +9,9 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chromedriver": "^120.0.1",
|
"chromedriver": "^124.0.1",
|
||||||
"expect.js": "^0.3.1",
|
"expect.js": "^0.3.1",
|
||||||
"mocha": "^10.2.0",
|
"mocha": "^10.4.0",
|
||||||
"selenium-webdriver": "^4.16.0",
|
"selenium-webdriver": "^4.20.0"
|
||||||
"superagent": "^8.1.2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
24
test/test.js
24
test/test.js
@@ -13,7 +13,6 @@ require('chromedriver');
|
|||||||
|
|
||||||
const execSync = require('child_process').execSync,
|
const execSync = require('child_process').execSync,
|
||||||
expect = require('expect.js'),
|
expect = require('expect.js'),
|
||||||
superagent = require('superagent'),
|
|
||||||
path = require('path'),
|
path = require('path'),
|
||||||
timers = require('timers/promises'),
|
timers = require('timers/promises'),
|
||||||
{ Builder, By, until } = require('selenium-webdriver'),
|
{ Builder, By, until } = require('selenium-webdriver'),
|
||||||
@@ -67,6 +66,17 @@ describe('Application life cycle test', function () {
|
|||||||
await waitForElement(By.xpath('//span[text()="Actions"]'));
|
await waitForElement(By.xpath('//span[text()="Actions"]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function logout() {
|
||||||
|
await browser.get('https://' + app.fqdn);
|
||||||
|
await waitForElement(By.xpath('//span[text()="Actions"]'));
|
||||||
|
await browser.findElement(By.xpath('//span[text()="Actions"]')).click();
|
||||||
|
await browser.sleep(4000);
|
||||||
|
await waitForElement(By.xpath('//span[text()="Log Out"]'));
|
||||||
|
await browser.findElement(By.xpath('//span[text()="Log Out"]')).click();
|
||||||
|
await browser.sleep(4000);
|
||||||
|
await waitForElement(By.id('user'));
|
||||||
|
}
|
||||||
|
|
||||||
async function loadPage() {
|
async function loadPage() {
|
||||||
await browser.get('https://' + app.fqdn);
|
await browser.get('https://' + app.fqdn);
|
||||||
await waitForElement(By.xpath('//span[text()="Actions"]'));
|
await waitForElement(By.xpath('//span[text()="Actions"]'));
|
||||||
@@ -76,12 +86,13 @@ describe('Application life cycle test', function () {
|
|||||||
await browser.get('https://' + app.fqdn);
|
await browser.get('https://' + app.fqdn);
|
||||||
await browser.findElement(By.css('[ng-click*=addFolder]')).click();
|
await browser.findElement(By.css('[ng-click*=addFolder]')).click();
|
||||||
await waitForElement(By.id('folderPath'));
|
await waitForElement(By.id('folderPath'));
|
||||||
await browser.sleep(4000); // wait more, not sure why this is needed
|
await browser.sleep(8000); // wait more, not sure why this is needed
|
||||||
await browser.findElement(By.id('folderLabel')).sendKeys(FOLDER);
|
await browser.findElement(By.id('folderLabel')).sendKeys(FOLDER);
|
||||||
await browser.sleep(4000); // without this sometimes only part of the folder name gets through
|
await browser.sleep(8000); // without this sometimes only part of the folder name gets through
|
||||||
await browser.findElement(By.css('[ng-click*=saveFolder]')).click();
|
await browser.findElement(By.css('[ng-click*=saveFolder]')).click();
|
||||||
|
await browser.sleep(8000); // without this "stale element"
|
||||||
await waitForElement(By.xpath(`//span[contains(text(), '${FOLDER}')]`));
|
await waitForElement(By.xpath(`//span[contains(text(), '${FOLDER}')]`));
|
||||||
await browser.sleep(4000);
|
await browser.sleep(8000);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function checkFolder() {
|
async function checkFolder() {
|
||||||
@@ -114,6 +125,7 @@ describe('Application life cycle test', function () {
|
|||||||
it('can login', login.bind(null, username, password));
|
it('can login', login.bind(null, username, password));
|
||||||
it('can load page', loadPage);
|
it('can load page', loadPage);
|
||||||
it('can add folder', addFolder);
|
it('can add folder', addFolder);
|
||||||
|
it('can logout', logout);
|
||||||
|
|
||||||
it('backup app', async function () { execSync('cloudron backup create --app ' + app.id, EXEC_ARGS); });
|
it('backup app', async function () { execSync('cloudron backup create --app ' + app.id, EXEC_ARGS); });
|
||||||
it('restore app', async function () {
|
it('restore app', async function () {
|
||||||
@@ -125,6 +137,7 @@ describe('Application life cycle test', function () {
|
|||||||
it('can login', login.bind(null, username, password));
|
it('can login', login.bind(null, username, password));
|
||||||
it('can load page', loadPage);
|
it('can load page', loadPage);
|
||||||
it('can check folder', checkFolder);
|
it('can check folder', checkFolder);
|
||||||
|
it('can logout', logout);
|
||||||
|
|
||||||
it('move to different location', async function () {
|
it('move to different location', async function () {
|
||||||
await browser.get('about:blank');
|
await browser.get('about:blank');
|
||||||
@@ -136,6 +149,7 @@ describe('Application life cycle test', function () {
|
|||||||
it('can login', login.bind(null, username, password));
|
it('can login', login.bind(null, username, password));
|
||||||
it('can load page', loadPage);
|
it('can load page', loadPage);
|
||||||
it('can check folder', checkFolder);
|
it('can check folder', checkFolder);
|
||||||
|
it('can logout', logout);
|
||||||
|
|
||||||
it('uninstall app', async function () {
|
it('uninstall app', async function () {
|
||||||
await browser.get('about:blank');
|
await browser.get('about:blank');
|
||||||
@@ -151,6 +165,8 @@ describe('Application life cycle test', function () {
|
|||||||
it('can login', login.bind(null, username, password));
|
it('can login', login.bind(null, username, password));
|
||||||
it('can load page', loadPage);
|
it('can load page', loadPage);
|
||||||
it('can add folder', addFolder);
|
it('can add folder', addFolder);
|
||||||
|
it('can logout', logout);
|
||||||
|
|
||||||
it('can update', async function () {
|
it('can update', async function () {
|
||||||
await browser.get('about:blank');
|
await browser.get('about:blank');
|
||||||
execSync('cloudron update --app ' + LOCATION, EXEC_ARGS);
|
execSync('cloudron update --app ' + LOCATION, EXEC_ARGS);
|
||||||
|
Reference in New Issue
Block a user