mirror of
https://git.cloudron.io/cloudron/syncthing-app
synced 2025-09-13 08:19:09 +00:00
Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
481765c3db | ||
|
6ea6e0cd30 | ||
|
0cd6523548 | ||
|
ae1f3401ae | ||
|
7dd3979bdc | ||
|
a5a91b09c8 | ||
|
91335ebc70 | ||
|
c0ba039523 | ||
|
9f78b41ca2 | ||
|
5c2828f669 | ||
|
391419d9f4 | ||
|
d99a39a0e5 | ||
|
ab3a81a67b | ||
|
8e5306db31 | ||
|
e73991042d | ||
|
d566e12bc9 | ||
|
6d051c2ad1 | ||
|
72d3757c51 |
22
CHANGELOG
22
CHANGELOG
@@ -68,3 +68,25 @@
|
||||
* #4657: Sparse files with zero blocks are not closed when pulling
|
||||
* #4668: Remote device out of sync items shows "0 items, ~0 B"
|
||||
|
||||
[1.0.1]
|
||||
* Updated to version 0.14.45
|
||||
* #4659: panic: bug: removed more than added
|
||||
* #4680: Ignore pattern beginning with "#" does not match subpaths
|
||||
* #4689: Ignore patterns in web UI aren't reloaded if only comments change
|
||||
* #4701: Global is different from local state when ignoring files
|
||||
|
||||
[1.0.2]
|
||||
* Update Syncthing to version 0.14.46
|
||||
|
||||
[1.0.3]
|
||||
* Update Syncthing to version 0.14.47
|
||||
|
||||
[1.0.4]
|
||||
* Update Syncthing to version 0.14.48
|
||||
|
||||
[1.0.5]
|
||||
* Update Syncthing to 0.14.49
|
||||
|
||||
[1.0.6]
|
||||
* Update Syncthign to 0.14.50
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
"description": "file://DESCRIPTION.md",
|
||||
"changelog": "file://CHANGELOG",
|
||||
"tagline": "Decentralized file synchronization",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.6",
|
||||
"healthCheckPath": "/healthcheck",
|
||||
"httpPort": 8000,
|
||||
"addons": {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
This app packages Syncthing <upstream>v0.14.44</upstream>.
|
||||
This app packages Syncthing <upstream>v0.14.50</upstream>.
|
||||
|
||||
Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
FROM cloudron/base:0.10.0
|
||||
MAINTAINER Syncthing Developers <support@cloudron.io>
|
||||
|
||||
ENV VERSION 0.14.44
|
||||
ENV VERSION 0.14.50
|
||||
|
||||
RUN mkdir -p /app/code \
|
||||
&& wget https://github.com/syncthing/syncthing/releases/download/v${VERSION}/syncthing-linux-amd64-v${VERSION}.tar.gz -O - \
|
||||
|
@@ -9,14 +9,14 @@
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"chromedriver": "^2.36.0",
|
||||
"ejs": "^2.4.2",
|
||||
"expect.js": "^0.3.1",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mocha": "^2.5.3",
|
||||
"rimraf": "^2.5.3",
|
||||
"selenium-server-standalone-jar": "^2.53.1",
|
||||
"selenium-webdriver": "^2.53.1",
|
||||
"superagent": "^1.4.0",
|
||||
"chromedriver": "^2.31.0"
|
||||
"selenium-webdriver": "^2.53.3",
|
||||
"superagent": "^1.4.0"
|
||||
}
|
||||
}
|
||||
|
22
test/test.js
22
test/test.js
@@ -2,8 +2,11 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
require('chromedriver');
|
||||
|
||||
var execSync = require('child_process').execSync,
|
||||
expect = require('expect.js'),
|
||||
superagent = require('superagent'),
|
||||
path = require('path'),
|
||||
webdriver = require('selenium-webdriver');
|
||||
|
||||
@@ -43,7 +46,7 @@ describe('Application life cycle test', function () {
|
||||
|
||||
var LOCATION = 'test';
|
||||
var TEST_TIMEOUT = 30000;
|
||||
var FOLDER = 'outerspace';
|
||||
var FOLDER = 'xmf'; // keep this small. long folder names fail in automation, not sure why
|
||||
var SYNC_PORT = 22001;
|
||||
var app;
|
||||
|
||||
@@ -61,6 +64,14 @@ describe('Application life cycle test', function () {
|
||||
});
|
||||
}
|
||||
|
||||
function invalidPassword(callback) {
|
||||
superagent.get('https://' + app.fqdn).auth(username, password + 'x').end(function (error, result) {
|
||||
expect(result.status).to.eql(401);
|
||||
|
||||
callback();
|
||||
});
|
||||
}
|
||||
|
||||
function loadPage(callback) {
|
||||
browser.manage().deleteAllCookies().then(function () {
|
||||
return browser.get('https://' + username + ':' + encodeURIComponent(password) + '@' + app.fqdn).then(function () {
|
||||
@@ -78,12 +89,18 @@ describe('Application life cycle test', function () {
|
||||
return browser.findElement(by.css('[ng-click*=addFolder]')).click();
|
||||
}).then(function () {
|
||||
return visible(by.id('folderPath'));
|
||||
}).then(function () {
|
||||
return browser.sleep(4000); // wait more, not sure why this is needed
|
||||
}).then(function() {
|
||||
return browser.findElement(by.id('folderLabel')).sendKeys(FOLDER);
|
||||
}).then(function () {
|
||||
return browser.sleep(4000); // without this sometimes only part of the folder name gets through
|
||||
}).then(function() {
|
||||
return browser.findElement(by.css('[ng-click*=saveFolder]')).click();
|
||||
}).then(function() {
|
||||
return browser.wait(until.elementLocated(by.css('#folders .panel-status span[ng-switch-when=unshared]')), TEST_TIMEOUT);
|
||||
}).then(function () {
|
||||
return browser.sleep(4000);
|
||||
}).then(function() {
|
||||
callback();
|
||||
});
|
||||
@@ -91,7 +108,7 @@ describe('Application life cycle test', function () {
|
||||
|
||||
function checkFolder(callback) {
|
||||
browser.get('https://' + app.fqdn).then(function () {
|
||||
return browser.wait(until.elementLocated(by.xpath(`//span[text()="${FOLDER}"]`), TEST_TIMEOUT));
|
||||
return browser.wait(until.elementLocated(by.xpath(`//span[text()="${FOLDER}"]`)), TEST_TIMEOUT);
|
||||
}).then(function () {
|
||||
callback();
|
||||
});
|
||||
@@ -135,6 +152,7 @@ describe('Application life cycle test', function () {
|
||||
expect(app).to.be.an('object');
|
||||
});
|
||||
|
||||
it('fails with invalid password', invalidPassword);
|
||||
it('can load page', loadPage);
|
||||
it('can add folder', addFolder);
|
||||
|
||||
|
Reference in New Issue
Block a user