Private
Public Access
Release 0.13.0
This commit is contained in:
1 parent
7f6eeab39e
commit
c0d891b372
49 files changed
+1523
-478
No files matched your search
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
const assert=require('assert'),fs=require('fs'),vm=require('vm');
|
||||
const ids=['host','port','piccapPort','receiver','token','clearToken','endpoint','handover','autostart','error','status','regions','start','stop','refresh','saveTarget','testConnection','testResult','diagnostics','profile','customEditor','customProfile','saveProfile','profileStatus','calibrate','validateCalibration','cancelCalibration','editProfile','customProfileField','overviewTab','receiverTab','calibrationTab','calibrationShortcut','hostField','portField','piccapPortField','tokenField','grantRoot','rootHint'];
|
||||
const ids=['reloadService','versionWarning','host','port','piccapPort','receiver','token','clearToken','endpoint','handover','autostart','error','status','regions','start','stop','refresh','saveTarget','testConnection','testResult','diagnostics','profile','customEditor','customProfile','saveProfile','profileStatus','calibrate','validateCalibration','cancelCalibration','editProfile','customProfileField','overviewTab','receiverTab','calibrationTab','calibrationShortcut','hostField','portField','piccapPortField','tokenField','grantRoot','rootHint'];
|
||||
const elements={};
|
||||
ids.forEach(id=>elements[id]={value:'',textContent:'',disabled:false,checked:false,attributes:{},style:{},addEventListener(){},focus(){},appendChild(){},setAttribute(k,v){this.attributes[k]=v;},getAttribute(k){return this.attributes[k];}});
|
||||
const requests=[];
|
||||
|
||||
@@ -34,6 +34,12 @@ class VersionTests(unittest.TestCase):
|
||||
self.assertEqual(app, {'version': '1.2.3', 'id': 'unchanged'})
|
||||
self.assertIn('"1.2.3"', (sync_version.ROOT / 'native/version.h').read_text())
|
||||
|
||||
def test_ui_drift_is_rejected(self):
|
||||
sync_version.synchronize()
|
||||
(sync_version.ROOT / 'app/version.js').write_text("var HYPERDRM_APP_VERSION = 'old';")
|
||||
with self.assertRaises(ValueError):
|
||||
sync_version.synchronize(check=True)
|
||||
|
||||
def test_invalid_version_is_rejected(self):
|
||||
(sync_version.ROOT / 'VERSION').write_text('1.2\n')
|
||||
with self.assertRaises(ValueError):
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
'use strict';
|
||||
const assert=require('assert'),fs=require('fs'),vm=require('vm');
|
||||
const elements={},requests=[];let serviceVersion='0.12.0';
|
||||
for(const match of fs.readFileSync('app/index.html','utf8').matchAll(/id="([^"]+)"/g))elements[match[1]]={style:{},value:'',textContent:'',disabled:false,attributes:{},addEventListener(){},focus(){},appendChild(){},getAttribute(k){return this.attributes[k];},setAttribute(k,v){this.attributes[k]=v;}};
|
||||
class Bridge {
|
||||
call(uri){requests.push(uri);this.onservicecallback(JSON.stringify(uri.endsWith('/status')?{returnValue:true,version:serviceVersion,piccapInstalled:false,receiverConnecting:true,connectionTest:{state:'Not tested'}}:{returnValue:true}));}
|
||||
cancel(){}
|
||||
}
|
||||
const c={document:{getElementById(id){assert(elements[id],id);return elements[id];},createElement(){return {style:{}};}},window:{},PalmServiceBridge:Bridge,setupRemoteNavigation(){},setInterval(){},setTimeout(){return 1;},clearTimeout(){}};
|
||||
vm.createContext(c);vm.runInContext(fs.readFileSync('app/version.js','utf8'),c);vm.runInContext(fs.readFileSync('app/app.js','utf8'),c);
|
||||
assert(!c.versionCompatible && elements.start.disabled && elements.saveTarget.disabled);
|
||||
assert(elements.versionWarning.textContent.includes('0.12.0'));assert.equal(elements.reloadService.style.display,'inline-block');
|
||||
elements.reloadService.onclick();assert(requests.some(uri=>uri.endsWith('/restartService')));
|
||||
const count=requests.length;c.call('start',r=>assert.equal(r.returnValue,false));assert.equal(requests.length,count);
|
||||
elements.stop.onclick();assert(requests.some(uri=>uri.endsWith('/stop')));
|
||||
serviceVersion=c.HYPERDRM_APP_VERSION;c.call('status',c.display);
|
||||
assert(c.versionCompatible && !elements.start.disabled && elements.versionWarning.style.display==='none');
|
||||
assert.equal(elements.reloadService.style.display,'none');assert(elements.handover.disabled);assert(elements.status.textContent.includes('Connecting'));
|
||||
serviceVersion=undefined;c.call('status',c.display);assert(!c.versionCompatible && elements.versionWarning.textContent.includes('unknown'));
|
||||
c.display({returnValue:false,errorText:'Disconnected'});assert(!c.versionCompatible);
|
||||
console.log('PASS: old/missing service versions block mutations, Stop remains available, matching service restores controls and unavailable PicCap remains disabled');
|
||||
Reference in new issue
Block a user