From 289f0537cec4beec52b0d54ce4f0d88153ada75e Mon Sep 17 00:00:00 2001 From: mkp Date: Mon, 31 Aug 2026 13:56:05 +0200 Subject: [PATCH 1/4] maxdiff: add external to tests --- .../tests/test_baselines/FrozenTest.amxd.txt | 18 +- maxdiff/tests/test_baselines/Test.amxd.txt | 1 + maxdiff/tests/test_files/FrozenTest.amxd | Bin 431992 -> 713936 bytes maxdiff/tests/test_files/Test.amxd | Bin 57856 -> 58227 bytes maxdiff/tests/test_files/shell.maxhelp | 909 ++++++++++++++++++ maxdiff/tests/test_files/shell.mxe | Bin 0 -> 30720 bytes maxdiff/tests/test_files/shell.mxe64 | Bin 0 -> 37888 bytes .../test_files/shell.mxo/Contents/Info.plist | 50 + .../test_files/shell.mxo/Contents/MacOS/shell | Bin 0 -> 182544 bytes .../test_files/shell.mxo/Contents/PkgInfo | 1 + .../Contents/_CodeSignature/CodeResources | 115 +++ 11 files changed, 1088 insertions(+), 6 deletions(-) create mode 100644 maxdiff/tests/test_files/shell.maxhelp create mode 100755 maxdiff/tests/test_files/shell.mxe create mode 100755 maxdiff/tests/test_files/shell.mxe64 create mode 100644 maxdiff/tests/test_files/shell.mxo/Contents/Info.plist create mode 100755 maxdiff/tests/test_files/shell.mxo/Contents/MacOS/shell create mode 100644 maxdiff/tests/test_files/shell.mxo/Contents/PkgInfo create mode 100644 maxdiff/tests/test_files/shell.mxo/Contents/_CodeSignature/CodeResources diff --git a/maxdiff/tests/test_baselines/FrozenTest.amxd.txt b/maxdiff/tests/test_baselines/FrozenTest.amxd.txt index 8b38686..07ca4a0 100644 --- a/maxdiff/tests/test_baselines/FrozenTest.amxd.txt +++ b/maxdiff/tests/test_baselines/FrozenTest.amxd.txt @@ -124,10 +124,10 @@ parameters: banks: 0: (MyBank) encoders: ['live.dial', 'InsideBpatcher', '-', '-', '-', '-', '-', '-'] buttons: ['live.text', '-', '-', '-', '-', '-', '-', 'live.menu'] 1: encoders: ['-', '-', 'live.dial', 'MyParameter', 'live.dial', 'live.dial[1]', '-', '-'] buttons: ['-', '-', '-', '-', '-', 'live.text', 'live.menu', '-'] -Test.amxd: 57703 bytes, modified at 2026/08/31 09:52:24 UTC <= Device -MyAbstraction.maxpat: 2027 bytes, modified at 2026/08/31 09:51:02 UTC, 6 instances -ParamAbstraction.maxpat: 1491 bytes, modified at 2026/08/31 09:51:02 UTC, 2 instances -AbstractionWithParameter.maxpat: 1334 bytes, modified at 2026/08/31 09:51:02 UTC, 2 instances +Test.amxd: 58316 bytes, modified at 2026/08/31 11:56:20 UTC <= Device +MyAbstraction.maxpat: 2027 bytes, modified at 2026/08/31 10:48:30 UTC, 6 instances +ParamAbstraction.maxpat: 1491 bytes, modified at 2026/08/31 10:48:30 UTC, 2 instances +AbstractionWithParameter.maxpat: 1334 bytes, modified at 2026/08/31 10:48:30 UTC, 2 instances hz-icon.svg: 484 bytes, modified at 2024/05/24 13:59:36 UTC, 3 instances beat-icon.svg: 533 bytes, modified at 2024/05/24 13:59:36 UTC, 3 instances fpic.png: 7094 bytes, modified at 2024/05/24 13:59:36 UTC, 5 instances @@ -140,10 +140,16 @@ mystorage.json: 239 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance myTestTable: 410 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance TestScript.js: 87 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance collContent.txt: 8 bytes, modified at 2024/05/24 13:59:36 UTC, NOT FOUND IN PATCH +shell.mxo: 4 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH +shell/zipfile: 28122 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH +shell/executable: 182544 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH +shell/plist: 1441 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH +shell.mxe: 30720 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH +shell.mxe64: 37888 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH Total - Counting every abstraction instance - Indicates loading time - Object instances: 90 + Object instances: 91 Connections: 26 Unique - Counting abstractions once - Indicates maintainability - Object instances: 73 + Object instances: 74 Connections: 16 diff --git a/maxdiff/tests/test_baselines/Test.amxd.txt b/maxdiff/tests/test_baselines/Test.amxd.txt index 11044c4..63983fc 100644 --- a/maxdiff/tests/test_baselines/Test.amxd.txt +++ b/maxdiff/tests/test_baselines/Test.amxd.txt @@ -99,6 +99,7 @@ project: ----------- patcher ----------- appversion: 9.1.4-x64-1 | rect: [91, 153, 1288, 310] | openrect: [0, 0, 0, 169] | openrectmode: 0 | default_fontsize: 10.0 | default_fontname: Arial Bold | gridsize: [8, 8] | boxanimatetime: 500 | latency: 0 | is_mpe: 0 | external_mpe_tuning_enabled: 0 | platform_compatibility: 0 | autosave: 0 ----------- objects ----------- +[shell] shell: (default) [comment NOTE: after any changes to this device, also update FrozenTest.amxd] [poly~ MyAbstraction] [poly~ MyAbstraction 3] diff --git a/maxdiff/tests/test_files/FrozenTest.amxd b/maxdiff/tests/test_files/FrozenTest.amxd index 4462f2b95269c8fcf672934d00c64e0fc6cb972e..37033b38b8b76fc37af6c2142adbcd9cefaedbfe 100644 GIT binary patch delta 283803 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%0D^7m@h-~tB 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 diff --git a/maxdiff/tests/test_files/Test.amxd b/maxdiff/tests/test_files/Test.amxd index 17629a0026ded7af9a16b0afc32882cc73650b8c..11557af66a520ebdecac41bfebfedad2a7379af7 100644 GIT binary patch delta 117 zcmZoT!uTniZfDka+ItTlr&OO(-KQ_N;D@IMvG0pz@xwlmYQ79nl*WsFvvXK T$rBD$ZI)pEXS2EAp>QDp;}I*u delta 83 zcmex-jJe?m^8^{D2M;&OMKeuaCMq#m;Sld+elfYp4eYU-Sy}(u@aE;Gq{b&@=EWBz amSjxklhvNAu!D`eAQxSXbu*Jw;X(i`jUH(L diff --git a/maxdiff/tests/test_files/shell.maxhelp b/maxdiff/tests/test_files/shell.maxhelp new file mode 100644 index 0000000..682e7ed --- /dev/null +++ b/maxdiff/tests/test_files/shell.maxhelp @@ -0,0 +1,909 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 0, + "revision" : 8 + } +, + "rect" : [ 158.0, 146.0, 831.0, 513.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-35", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 633.5, 179.0, 98.0, 16.0 ], + "text" : "/usr/local/bin/unrar" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-31", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 217.0, 408.0, 32.5, 16.0 ], + "text" : "set" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-30", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 500.0, 201.0, 56.0, 16.0 ], + "text" : "example-1" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-29", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 500.0, 179.0, 121.0, 16.0 ], + "text" : "/usr/local/bin/example-1" + } + + } +, { + "box" : { + "bgcolor" : [ 1.0, 0.0, 0.065008, 1.0 ], + "fontname" : "Geneva", + "fontsize" : 12.0, + "id" : "obj-34", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 453.5, 53.0, 161.0, 19.0 ], + "text" : "TESTED SUDO WORKS !!!!!", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 1.0, 0.0, 0.065008, 1.0 ], + "fontname" : "Geneva", + "fontsize" : 12.0, + "id" : "obj-33", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 522.5, 89.0, 232.0, 19.0 ], + "text" : "echo 'a' | sudo -S rm -rf /Library/Logs", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 1.0, 0.0, 0.065008, 1.0 ], + "fontname" : "Geneva", + "fontsize" : 12.0, + "id" : "obj-32", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 385.5, 89.0, 128.0, 19.0 ], + "text" : "rm -rf /Library/Logs", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-28", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 391.0, 140.0, 47.0, 16.0 ], + "text" : "penter a" + } + + } +, { + "box" : { + "bgcolor" : [ 1.0, 0.0, 0.065008, 1.0 ], + "fontname" : "Geneva", + "fontsize" : 12.0, + "id" : "obj-27", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 542.0, 118.0, 193.0, 19.0 ], + "text" : "echo 'a' | sudo -S mkdir /AAAA", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-26", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 370.0, 181.0, 84.0, 16.0 ], + "text" : "cd /usr/local/bin" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-25", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 66.0, 386.0, 232.0, 16.0 ], + "text" : "\" y Assume Yes on all queries\"" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-24", + "linecount" : 2, + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 366.5, 235.0, 335.0, 27.0 ], + "text" : "/usr/local/bin/rar a -s -y -hpXXX -x.DS_Store /Users/Mac/Desktop/AR.rar /Users/Mac/Desktop/ALL-NEW-RACK12" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-1", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 134.0, 148.0, 56.0, 16.0 ], + "text" : "vm_stat 1" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "frgb" : 0.0, + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 70.0, 212.0, 105.0, 18.0 ], + "text" : "( works only as root )" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 138.0, 179.0, 32.5, 16.0 ], + "text" : "pkill" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-4", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 23.0, 210.0, 49.0, 16.0 ], + "text" : "tcpdump" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-5", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 345.0, 278.0, 55.0, 18.0 ], + "text" : "print done" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.360784, 0.682353, 1.0 ], + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-6", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 0, + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 0, + "revision" : 8 + } +, + "rect" : [ 621.0, 408.0, 222.0, 234.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-1", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 28.0, 75.0, 110.0, 16.0 ], + "text" : "ls fakedirectory 2>&1" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-2", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 28.0, 156.0, 99.0, 18.0 ], + "text" : "print stdout&stderr" + } + + } +, { + "box" : { + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-3", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 28.0, 100.0, 51.0, 18.0 ], + "text" : "tosymbol" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-4", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "patching_rect" : [ 28.0, 128.0, 30.0, 18.0 ], + "text" : "shell" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "frgb" : 0.0, + "id" : "obj-5", + "linecount" : 3, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 27.0, 23.0, 152.0, 40.0 ], + "text" : "standard error can be combined with stdout by following a command with \"2>&1\"" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-4", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 217.0, 297.0, 81.0, 18.0 ], + "saved_object_attributes" : { + "default_fontface" : 0, + "default_fontname" : "Arial", + "default_fontsize" : 12.0, + "description" : "", + "digest" : "", + "fontface" : 0, + "fontname" : "Arial", + "fontsize" : 12.0, + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p standard-error" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-7", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 196.5, 347.0, 62.0, 18.0 ], + "text" : "print stdout" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-8", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 149.0, 89.0, 132.0, 16.0 ], + "text" : "perl -e 'print \\\"howdy\\\\n\\\"'" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-9", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 144.0, 53.0, 173.0, 16.0 ], + "text" : "ls -l \\\"/Library/Application Support\\\"" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-10", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 26.0, 152.0, 62.0, 16.0 ], + "text" : "echo $USER" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-11", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 32.0, 181.0, 64.0, 16.0 ], + "text" : "perl -version" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-12", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 37.0, 112.0, 32.5, 16.0 ], + "text" : "date" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-13", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 41.0, 56.0, 83.0, 16.0 ], + "text" : "cat /etc/passwd" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "button", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 32.0, 278.0, 20.0, 20.0 ] + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-15", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 148.0, 118.0, 159.0, 16.0 ], + "text" : "ps -x | grep MaxMSP | grep -v grep" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-16", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 12.0, 86.0, 96.0, 16.0 ], + "text" : "mkdir ~/anewfolder" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-17", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 78.0, 112.0, 43.0, 16.0 ], + "text" : "whoami" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-18", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 121.0, 235.0, 97.0, 16.0 ], + "text" : "ping -c 20 localhost" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-19", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 131.0, 31.0, 40.0, 16.0 ], + "text" : "ls -l ~/" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "id" : "obj-20", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "patching_rect" : [ 84.0, 278.0, 134.0, 18.0 ], + "text" : "shell" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 14.0, + "frgb" : 0.0, + "id" : "obj-21", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 17.0, 27.0, 55.0, 22.0 ], + "text" : "SHELL" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 10.0, + "frgb" : 0.0, + "id" : "obj-22", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 66.0, 28.0, 52.0, 18.0 ], + "text" : "unix shell" + } + + } +, { + "box" : { + "fontname" : "Geneva", + "fontsize" : 9.0, + "frgb" : 0.0, + "id" : "obj-23", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 166.0, 181.0, 110.0, 18.0 ], + "text" : "kill the current process" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-12", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-15", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-16", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-17", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-18", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-19", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 1 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-20", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-20", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-20", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-24", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-26", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-28", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-29", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-30", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-31", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-35", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-8", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-9", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 1 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 448.0, 181.0 ], + "source" : [ "", -1 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "shell.mxo", + "type" : "iLaX" + } + ] + } + +} diff --git a/maxdiff/tests/test_files/shell.mxe b/maxdiff/tests/test_files/shell.mxe new file mode 100755 index 0000000000000000000000000000000000000000..0c3f8b77fdc882f8af21895ddc5cc91c9984b9cb GIT binary patch literal 30720 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 literal 0 HcmV?d00001 diff --git a/maxdiff/tests/test_files/shell.mxo/Contents/Info.plist b/maxdiff/tests/test_files/shell.mxo/Contents/Info.plist new file mode 100644 index 0000000..74b6984 --- /dev/null +++ b/maxdiff/tests/test_files/shell.mxo/Contents/Info.plist @@ -0,0 +1,50 @@ + + + + + BuildMachineOSBuild + 19H1217 + CFBundleDevelopmentRegion + English + CFBundleExecutable + shell + CFBundleGetInfoString + shell 8.0.0, Copyright ©2018 Bill Orcutt/Jeremy Bernstein + CFBundleIdentifier + com.bootsquad.shell + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + iLaX + CFBundleShortVersionString + 8.0.0 + CFBundleSignature + max2 + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 8.0.0 + CSResourcesFileMapped + + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 12D4e + DTPlatformName + macosx + DTPlatformVersion + 11.1 + DTSDKBuild + 20C63 + DTSDKName + macosx11.1 + DTXcode + 1240 + DTXcodeBuild + 12D4e + LSMinimumSystemVersion + 10.11 + + diff --git a/maxdiff/tests/test_files/shell.mxo/Contents/MacOS/shell b/maxdiff/tests/test_files/shell.mxo/Contents/MacOS/shell new file mode 100755 index 0000000000000000000000000000000000000000..1cdd809a8d8c166e18e78319e06668550fd92ad1 GIT binary patch literal 182544 zcmeFa33yaR)&^Xi1v+dA5;g(TY?`1#5)vQ^k^sSOO&}&g5y4I;>5xD+dx2yW2?WM8 zZ5*Pg4C)Y_QAyMpR8YVHf*_zc3b+jOxe&n78{+~lkRZ_id#dVoZW`42X6E~!|9_s_ zP`A#hI_K1>x0YLVZ>9UK3)^-u#)1rtbwwP^STbVK`2e z9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy z9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy9RVEy z9RVEy9RVEy9RVEy9RVEy9fAKY0`H#v`U3v&-+({-XY^P9^auVqp^U9$`0Ias1|l2* zX|-mj&d%mZoiE9qS^D|_`oM%g5O1}*>=iDe#3#_+1@TP-?D80qPrUFzDul2qN%6>P zb-LWSPJdFMy#eDyR(X(!iPzdQN_$D@$_Aiml}?2lz|dt95>vrkh-3&zLOaOd?{$%O>F|WUol(QDn6i+kVNv=wuXPNvPbP|MzC7b zEHiFSon}$TY?ah*lCjFy2%h}X`ZkQQs#waZ67zx)aXr`#h-V{a%NT3whTvt4e51ZL z03qUj#>T+V?57wr4PvZ2(lQX}^STUF&TfQagrEJaXY7MZWWppbr~Ds(O!(>M8@9Z% zq~Wov_FgzY0_hy1?r_S`osCj?X`=^Xst@@{zOs-Sz-VA&+)l@s;-Xv%c~@UOI&O4+ zB}o3oCm7;>dBemW=<=QAvnrh~d&%f2QiZItD-p<#gTN&jF->R06E5@_fVwF*&F&@JXTO%X7;2WM2gW| zJ88}sq|_$5u(B}M_Wc-3nyrPnho{ChrEH~jUR=`xrkux}-dw#W!t4o+z+MCLH)72J z`C+8(*%$X_T$8emguIi!P2>U=A2#pl-uQu_o+~67ICZY5!SDN%ffKs}rUHSYfD0oMP@p_$6213E& z*^62{0AZyY>3epIzSY;s&Gd9oN;|6;w11LnJ+Bwz6O@d{Q?)^%XNV-_wh6^ zTLlFHEU>O6?UPvgqO?B3;4(^z5(d*eq_IG&F`u$`2#sSHaOf~|k%X?Id`YR)45XCe zS0Z3*kp-VOl7i>kbO>)pipBE=u*o8ef9ARzTfe8hx!o3k3QxO%iEGMICXpbGR_~Bp zZq27S$aw9f5s*mPYUa55G`Joc$=#xU`wfxaAu&=hi5JRy^moXyc=n)qny)4w&nSbX zN41lVAVuj(Y;Dg1j50Wgac%azp0b4|y_BtVQg-26!&+EunJ7)A``}6!@fx=^b2(K1HZxhq(Ok$ zi`NmI_5xa}5}I^`?0(gW+I7v{RF9y z_%j!med1cbu5u4$dq=J(C65oLmFJOS@$5rYR+7~x$f_7@gm-OXDk<0YJx7z2r(JZ4 zAHh(kh$dmtDbl&cGs-+9rEJZh-cUO-lPjUs{FB++!^u2{@*hNcheUG4FO(6yV4m{{ zaxnhUw+?UvKBcSls&>+Dq$q8qTHEuak$l2f4(t?u?7IsGO@z#DUNm)xYO=9O*ccf0 zYc}?gpy&{VxbdXZr1OR1=GM5oqlMu#Z=#vs_a;4y2}{ZL3tXa4IHgUr)KFf+|j)9>*5lODko2dZ(`uJ&L@mhP%{*&f6S6;{?487m?iWj>cgVxID zS0W7ak%bO$A1OfcQLv%|Y$J0uTv6U7WLIs)1m$o1&%jXQ_a{MW{Mt#6km5|@y@|2p zxo4jeL2T`$u9TI)ZH5jJl^R4zLq*bMJSp*ZB+-yS6z9WoB$aZ#p)05(V6}OD>Opt! zxF(bqeMidNlzAz4rda3gR)$0|=3k`pC2EAl^PvT^gm+Q{-3UI10Cnb-P2nq|3`8GQ zCi1kY(W!BtfsH$@oDm78X`VmEqQ4?aMznWoEP3F78MCLF?s$l3s!IvqiCGA(@tyL| zD;V2Z!%)yNP-z~Md0(>e+2ys52m=sI2+;_!2on&JA!B~+#f=j|XCTZ*$U!JX zC`YK6=BclONtBj@(smlj{4kiOMG|0r70<|a(sMecCoeM=b7Ofp$(xO4&up|t-!BJ) ztzB{??lgL`G7i;S+2kH;_Hu*f>Iux9K-p$*xY=Vg@9PR<7!R;(_8g%GC5Sn|82v-g zA}H04TxA6=1b0@3+4Ga~P%kKWUn3{Y)%z*{WHa27rECS*?7o^RTsvgUN*5|b=qRH& z{TSC@`H^d^x%O@{@)#MZz1ysO&TDbEQTd4oG@MVw@X&b2yp~{6=j3kksd^_h8gm8B z!=#^>8-ji$meliF)=Rflkw^%9*i$2LF9hawvNF)(*>Coo4Bz<{WT)Y-frZGtmRm29 zLup#c)?g`ljV#h!eKyE75m$qIk$H=&%w(^y=bWz6o4}dCPSsC*H0U z6K6DUv6WW33h{cRb&|Qd-QbEcuYA*;h-9a!xX9@u16|EqoUZ&bx65Q}g)w`nDZi}L zE^~5irSnaT3+)za$`~D6Qjj(ww#{nlFJh#%`F2cO8$%l`5eCT zx>7B)8cD_en6ee(>2&Lx|N<}LH}iBDrN^X6FtLKy_7*z1=bL96UaN@anFhOP zoKd9v5$(Zpi>fCl>fK`LnovIx{GWgcm7qxpGjFfK|rk?rcb zcO~WE-3yQ0eJx(MTG%%7P`M70aGBgk5hO)UNA~B=?=Zm_M#!;#V5{4Ft~BggKj9UA zg4}>8_U}q^7YwXd9wr+b4J%%EU2pbo-cQ-yhnoAZ>xMmh~`9l_sg$ z%^bXEkls4PeCSIgY^8Mg@mnfb6ygSXdL>C3Ts_R*?NoqrnDV_Vo4NQ(QRYf+)LVOm zC)Sb&0G<@leO)o>D^I&dVD3DF>0GTiO6mtod;EX<0!52=#RxIRLQ^ncT#;rk z)qxsUK<5KU;jeJZFB(?tcZIfHm( z9xl~lrp42aM)B!p_SSNbVh)&h{S<88`JBu!hyUfMxi-sSPWmqVJ_9P0R=as46%w=G zysIr3+1PsaVCJMl=I|+RnYYanpHOqsK_r|?6FnQy0#`igQKt4LXqRG5Bbxm$k;E^K zFjwy#VDT)DNcT=ZY4P6LmX`FoD<4iBA@KI?Rd8>LL(S&2nLW3+Ay&-ZDJRXI6olIq zv*$MyK>w!AZ1_%9Gn_JexB*MjLHBNSN2+0(cclPnGojr|6{j-NJg-BTLm*r>dv3$x zYct8Fd2YmW69KAsCIGDE2zYJ;*JSRYmx5wLcw zz}m3_YsZS{wA%6k{vNSUdAbj^-DY06_hC`u8Ra9`wRrzJLS2mkcYcH0jfuOr#d8|dp1C&lV0a9}YMF8%gf+-JScWM}iL0IT z6G~G)Ca055y3s=tvoZH$S$j}fjIzRCNk6#JVA}8MV)mvVX~igOp%qQ+H1Eq)5@t$d z%xi89G1tyJL>+!MnqivyctQCsxK*hKM;IW8p}M45Sp%b3Zkjr+Wbo)Ao3CbI5|jOh ze8~Y<@oXH6lLxNFpuv8`?D-xygS6Tgs727uX3zE}P-f4=`+0O!S;~#K1-ov=%o*g0 z#nlkL@>5>zqsmO=?qDc_9u?R2okO#*XBRd}_oMbLzn4y5~pubB^18nktuuSsfA0qT%$^rZ(|q-d?;G(D+6<1k&Q$he;+P zJ?UKd${#M!WEA=!wW6j|4S<-oQ;kB|{`+or7WR6yjKrhFM^QL%JL$Xwj~GGpclMrI z8!{rLri;b5H+|)2?yFkIrg=_KdFJX982v|;x5)+1bnpiZ7S9#wo&qC1iSod|3u&I? z%2Oz7>fVqmxdVJvhCHPQv@{-I?Hp_I{J6OcTwm$lGPEorux!cT4z`v*y=2=GG&aThHJ*$rjq|pX?4bI7u$S zKQo9P@GqPE%Rn#&`qz2B?SkpnNYm{t7*|dI`?(f6G|{Fv(JcF>#oG^4I6!mnZ^f=5 zy$KVm#nTI;cni&_7SAHghU6>S2y>~$GXpM*iF6(6f$Xv7EX0(Pc;e2@L=!)>=GG zY2NhxiUIzuY$9O7SG*1dINp@vy-TbN`%|iK08H~Xx(euZ$^{rs@opEb;@-fQ#maK% z0P+E7myK1AtmSjw;2sc!s{75>Yg4?nTtT>xZnQyp1NU=2Jtw}6&7^$vphUqjc(GQ= zfHvKmaCdzT>;9H*G}#IMIobzQ@0qQc*I?XdboZ|7?|>ShOb2H_BwGJ%?np7rx(DBoi!%@{Q)`$Dkgrq`IKQ>wAUSn(p7W*Vl3 z$KWIu?%^xyWrB-vrG($fg!5DldX{!C5}=RXv4hG&8>~at%BG5io|O~f52k-|%i`s` zVDt5%SJOS@4zc0mt75dX+<&a%*lZpQ`F&k@zpH(C0+^lD=E@3TH_cMLgB~U`_X6zI z+_*ir7Lv~|qCzbvVGJvR3%CO)2Weiw&FqD$3Cy)YR-UiH=@D@SthGL<9K}A{J3*Pv zOHMpMw=K^ZULWdCuaeEj$)>kwAC%-fl!6%>mCJUOc(+salkOT-(Em}!VSZ)RhPg({eEAFE>pVGpM@+td} zfmK}%il63vfxMXJ`4+DMmA^tDt@i0;r100%xVIq4-Cz2c@U&%zQ420San~Ry^#I_OMFG4!jXz+)j*p%>?F0}DF zjrxCw9N+HhpG@wr3DDZjT5w)PCU7jo787a=do$5Fl}(tk(1J^8VNsh%kr;_tS2}D!*lcV``$CpcmglV3WSc1|>(F`QzG521p=ug?ZB9V&0obWAHP}I!tq1D85ZgA%C)HY=~1nG$}o~+_lbW~YI1!M0H zJ+RboB2al?OH~6lPf~w7%r^%X&k@CnOuy5kxUDy+rYkdjXz!}Y%rz9*$}mxim~Pdo zey;RJa%(WPzjq~vZVTN3Z>rst=*KQC<~wB*c>troJAlTZz4q-?m#!Uk2~TaNlvg09 zt;-J5>r|I%{9#Js#{gAUNmG}HDAOBC(}&t!BKhOCXf(C9x4eUA6aMaig*~2%rhE2! z4)6y$Kcr(;>6(Hm3WZ=j>FS%}oj3x^i=N6gC_tT6X~o+o#XA{M52X*!zy;m@BUe1u zU>_6q7cfq)Kpj>#RrXM_P-yjp5ZC9emk|U#y{R8>SnBQ){>q*dPZ#y^oO~XyI!CSz z;7?26g=zI^>2A;#+B+Xrro$*9%b%dq!=%(B2+fq$6V`O&N||I z3yZmCJUopE-+5S=RF;yt%fffgI>Ph#o0r8@BANOM1TEmEP(t;d0rDXz)fa0yV0jZZ ziL3grIP4l{uAOSwN%L0Rn<-m(e7frF+~n{zd&6IOGbMc5esk?T;|;4K%)X`-huz0l zyon*y+LdeIfm4$!B(AA7URg#3;XyWz2e;wN+CUd0gzm!We#y2Ye}UPytGn{ zanuhrQ}93uKwK|1qB}HrdHkVy26h-}-pSZtVEx_Z8f31Wt(;C)c$pP#$`80(;`NOs z>8Sgk>7IMB^n$PPsoJ6wuybw9jsdLgpnl+&GD5@qECy)!6zSGRK@U z?`jV=Z&UY4c+T`zn)fQ&i>1Xh%O_8-o0E2h|Mq^=%JNtBITpH{#q+K*9o;BB>5K6D z5<$>r!*X>OuI1l(!6J57J+QlK$L{LgPEW4V!lxXAAxzK;ZTQo@1!$nw@D(4Rs1*LD zj^<=Mg*k=XG{aBnhI5vrPuyR&Y=QtS|52h5equIHtGy=J@2)2uo1oMtxSi%%axgvo z#`9=g*Wi>LSV}>UoBR_u`F*Xtga)H^uXcfU7rW1)g~+=!y|dwTn%?t zGQ#@=s-pa+qfC^x4V>9KHttQcr#qIK$`rbjU_kn^j5JhHHlBfy4B|bA;ZfkICMUa+ zFoxw(jZwij$bG8>ka&x%&$}UbsE1;=T|eo z-o&qI{5peQGx(KOe7=#{{CX?D&gR!S{5qFk@8s7Ue$D0Ae10w9*Ft_>z^}#pTFS5G z{OaIWIxOlNNvlZT$O?Y_4Zq&QulMq66~8X$*A@KwTYjzK*H!#_KfgY}udDg>L4IAs zuaEHST7F%}uaEQVANaMNU!UUFKk@4`{JMc(8~OEle*H7QZsgaO_;nM%zQV6t_;nk< z{*_;M@M{ylzRs_E_;oM8?&sIH`1NgmeTQEU^6O!KeV<=HK3AEh_VxPFHx05xrlmzs0BnlMN|$^TZp1jS@(VWK`EYClmE0b$Dy zq8=b>6H&*AY9wkbthdw?wVbF&h&n{n{Y0H1YB^CuaNlgHAnF#PN{M=msC=T{AZiX# z-w>5S)F3Q5TBZ|q9Z?gBx`U{Aq81YsP1K`AT|v|)q9TcUo2YI?eM}T1>MNp7V_9Dq zN`2`oqJ~r3A15l2s3S!6r8a$ssM$pAA<9nFHlkcaZ6vCWsAq_(C+cycHWKw9Q9FpL zA?j12?j`DWYCjiIU8vO-5H*OX9HQchx|OIIM5Pf$$4*KyKSh4i;}E#DDkB}yUcE}}jqs+y?xiK-*&Euv^LYH1>h zrkR#kK=D%{j1F|L@`Xjk#jJd>qsV1v<@Qn+{uEa|D8g(`C!Gw*&n?a?F3MZT@JFXO z9K!MnZ4Q=iFR;0bU2MMH<*F>V<1hW3wncVUTn3|Y%;~Buwv#;mNR^e9mK7ARVq31g zm^s-@x2qf{Owx)gX-Qi&AcE^0AWlu}Z%rxCra-C5}Z)M`Bn(QL(+CtQa=fZDo#yIO$@_FLK!PTxE_*ysSnp%cA2jtN^(s zW%+hyFLjsT4}9$vJc%u$44$~iR_tUpS6K<0jwDk$FVYm9T7kb*cEzyVvI@pAyv~FJ zH|4OLZyM=j>1Cy+o7}~w_;IGV#Oo3!T$d1UijR$tV6zz7}9m(bHTtJ>{ciBegRm7Oam=@R__L53duH8|JKY=VN zHARb*8T9u zQsyuLZx_MpESg_pb1uA&DlKvx_JBN7bY5XmaefS!Nt&DjXJt>ncEZo8 zaq(fyRp_wW@&PXD>TpvFnhIMJQuGG`>-2aaUH z*ImgBtFB~0@zIRsMl%Eb{l&lfF<&PnGi5wi#sxAim+^08yh6qg$at-cpOW$OGJZwI zO)`E<#_!AcQyD8V{!Yf{WZdO?;a7x=FPHJJ)oX;58!h7rGM*x1_3!;3oFFVcF5_op zyivy6WV}bl@5uOwjE~FsD;b}bF-sD5(`0$K%D9_MkCgEhGLDvUyo@Kxc)E-;WSk@I z%#nP)j7w#_K<2w-e6NfvWPXk0AC&RqGJZzJ%ca~#$=@&eM`TVZR_$wKomNAC`LwLVyUg<;ZL_)ZQ7C8Q=4z|+*c z61aL-Y$tp1u~zFM{;eNY7`DqFkGG`d#-*lG9===jLo#9p=hAnM>q-3=K|Q8ed+5f_Vq4_(iE{QmV?(No)eX z10}zRx`%a<%~52_Ew;zSmX^7S3M#D_5yEoKuj(W$#!yPliNhX|Xlm=CTRr>N^Q`j6i24zQ?9Sj=&<>88>ti7Oo|b zr^438OJt98mv#tjxrBh~aZ{(fabi#=EGR1~6~^~pDqmGTC^EBLN%)2&d})x)W#^6B zX5jN}?r-dlGU{1XL7eCF3h_09@0gG2du%9UHD%ax%N#D^)&|`G4qrG#jatUXWxYQM zUv*SaT!t@8hTsNmD*v)2ByQ9umgO!W!7bV}d=V3+HEGlMw>BYhzdsRQ;Ukp~YSYSX z4yT>ek7!e+$!0aJ$SEdp5>!N@%VD)S<~yzBj2 z9-{A;0$&vjbn*&HYzyrU8<(izDTVk(C(2(P4Eelbd_k4fmXE&X;;CyprOGdgf^@wm z9iplV2b{aL;b#OeSCIQSK}}+T!!Ejtnv%+GST__n@V#Fk zupr}puJz{tMyDOUf>tV2T)jVsWHFmlpQ4Nnp>P(S7gcbV1=JgPqL`Yjc~~{zTiGDH zMVpLa<1Dx56%`cmd7`OPp7>@i(%CQ4ovMomiKlf4Wga00hGdI3OV(M$a}~}O&9~*z zjfdn(x`k}I^3V|KywD_4P+v7=Kc%?oOU%fN zgPh~H5z!1sD1mO7qU3Lo{2s}tNxoU~ z^hJdvpFT+F|3UIg2MhjyqX~|!KpAMzZ<@lOGu0LGx(T0Y zBaJ@aN}hgCmOi)QrvXU+<*Ni=D*51O!QU_WL6YAf`9-5dKK)t(>7Te(@bpUw#D6zN z@cr@qZp8mCR`AJ^Um7QP8+h{XvUtJ2B>9<=Kf>j!*lfv9#4lQq{Bp_v3H%j?Dz;bh zz3|H)#7`J2?71XgBl$vn>p$hkCW`z+lFyMmeaAf6|C8jmN?wtC2!7ds+PHA4(C-bt z7cecC{4mK^NPaAM{zZC1oYe&I4}veiSLd~EzmP*BD4LDNg}y_NKIxY+M&H@0@{~_a zi|@|kAL3`=qUA|n?cZ5aU*%Q(G9vJyi1f8Q>8sZ`n}FT1n9d@WDqtK+#@>Z|;}s;`d!?)Zf+ zYCn}%^=kxt{_?dvm9NehS4(}BSM}v|;Mdpkq_55|Nm5_sRsE8H^0hqatMgHw)K_^` zKb{DDD4KzbmM496{_;wFl_z=XKicw0U(1ueI^S)P`YNyLYs1%l^KV5dnu92esR9@A8i)(l2YkAUF=ifM~ukxz?QX=r7h|1UUq_57`by8pD zNuKaqjzAw(U(1ueI=_D`^;KTge~bu?zLqC_^?oq5uc*JutNIy2-Cw?zCw=w)afj4b zc~yTvfWDR|ef54*DfLxe)xU$jfD|9%XW*jcNngD`JuLNAUezxN=IVZZEl>LD{cM-i zS9w)GJfM6nPx|Wp?-Qx7@~Zw5qIiG#TAuXP`(+5eqMGIpl~?so2Iy;f(pT@V*Gher zSM?tX(AV;$uilSmNPU%8^(O`BYkAUF@89dCzRIimxP|f$@iTDI@}#fc@86L6DzEB~ z3eeZ`q_3_IVzAC5{8V1mpBA96UwC0)K_^` zUyB#%YkAUF*H0s{&ZY8I{$JHs*IUm>eU(@Bwf<`TKLvRcRZM;^fWNX^$NDTB>uloH z^%>dAr;Gg1unq^WuD6Wf!TKdK1Na96`1b<%YlO02zaoHtBY^J>2SgGK;WH5Z zJAgkCz(-)7)7r}l;1>n(YXf-t-9D}UhXMS_06sLNv-}kSd_n-9%K0i3AwKB={Hy?e zZUCRhdH!|O+(2;v?+)Pa3*grU@J|ZJ z!(aZO06r#wr=O6}%BKhL^fSfCN3RecTL51eAip?(uL9MQz<(FO z2jPpwwf=<(-e3QS0De#a9}}QICV(Fwz~2zSPZPYqytIJ)>;QgV0G}VgFA%)n-lBl~ zdjs%Y-vaVK4d7b?__hE(1V6u^ZQuR@{HOqaqTv1I-xR>l z3E;~D_^JTj6Tts2fPXZAUmw6X3f_*k z`gs#={~i{=UmL(D1n@Tm@buFtT6;4B_*nt`ZVdZ92yYyp8ZT zgm)0$ML39X2;ndS-Ot`f_yFNUguf#kLHGy4{~&yX@G-(C2%jPxML33V9N`4QX9)j9 z_#EL21O=f5;Y);8gs%|3M)(HdTZEGcrx3nF_#WX0gdY)3Bb-5KLuf}hi|`Y|IfU~F z)Zp~He)RLRK?w9~1R)5a2=uEqT@j23VF=w2x+BmJF!x00g+TXw`W>9!2$v!BL5M`? zi_j0DKf(Znfe7@=IfD@B7e0p|(DSV*1QWtggkcE75op~*KYev2!c_>-2r&qw5NKUM zKQ@L>ax+~)UyVR(C%w)7Ki_7|#Kd!HoGSS*ovqMV`nOJ1X!ZZC^Au#@|Kucv#_)f9 zhT^|ytAzdM#yZYT{HM13Cno+=L;kZ88bg;nCGiXS{6)Mb|JM&j{Ic-BbRy!HO$561 zGiM+=jQrB!hYqREryc^+JB~X9<^;GCaKNEMT4t!?osTp?j2}s(m`wI|(K)(MMFaEV}{MA?eo!{}Roa`j>{Xc)JuV!gp=c`HlJ-&E>ufC18ict4Nc<$v|wktpA}BSE}u7jN0s*XtD1 zdvz<$v&k3g0dLaj6*;{^?|65veQ8cKy)CDhzb3chaYh3FwKQbL#fn_= zCS#nHGcC}FgN~aSgozmlk9qxvjajEhWgq+$@en~W5it?Ye^9wFQ!FlB3g#5Bh zdpS;I@o6t^yp*Paw>Y0hM2AX7afYVK0g}MDLsA1xyo82NKf?IW8@+_^&)JDcY{5cBkL0#pBq z!2C|RvSW&=q@c7@UZT(}FDke5`A*HuD9VbnX5?jL#alrX@lvE6I=X`&`s+NXqzBv% zpZq%+B4gZy?D#n0gr8pYi(K4G;$>NOXPyn75eiNmvMaPZ>3n7f;&HL^5Gjt_SmGwQ z#4wlVoQrV8iJBro{xTzOJ~)GAx4;?To5+7EFf~KECVN9#$I__N$?Sk)ab8?=wEMr) z;M3x9{8Ll4|BEsb^NQ^@N9S@9a7w?txX5MAbr;~A-+xdU3`>9aof@B7Qj#@+H@iC0 z{%=YO!0o>}2*=SckIpZ(WbiSGΞ?rK8W*q5{ioo6YHnA8)ndV0~VBdE9tfxh%#X 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 + + + + files + + files2 + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + From f2e233beddc4e99b918a1dcd313325d9f6e1afd8 Mon Sep 17 00:00:00 2001 From: mkp Date: Thu, 3 Sep 2026 13:30:32 +0200 Subject: [PATCH 2/4] maxdiff: rename some variables for clarity Also correct some small typos --- maxdiff/frozen_device_printer.py | 8 +++--- maxdiff/get_frozen_stats.py | 44 ++++++++++++++++++-------------- maxdiff/print_unicode.py | 2 +- maxdiff/process_patcher.py | 32 +++++++++++------------ 4 files changed, 46 insertions(+), 40 deletions(-) diff --git a/maxdiff/frozen_device_printer.py b/maxdiff/frozen_device_printer.py index 2e8a337..32f0ec3 100644 --- a/maxdiff/frozen_device_printer.py +++ b/maxdiff/frozen_device_printer.py @@ -1,5 +1,5 @@ from freezing_utils import * -from get_frozen_stats import get_frozen_stats, get_used_files +from get_frozen_stats import get_frozen_stats, get_frozen_file_usage from patch_printer import get_parameters_string_block @@ -34,7 +34,7 @@ def print_frozen_device(data: bytes) -> str: if "parameters" in main_patcher: frozen_string += get_parameters_string_block(main_patcher, bundled_patchers) - used_files = get_used_files(device_entries) + frozen_file_usage = get_frozen_file_usage(device_entries) i = 0 for entry in device_entries: @@ -44,8 +44,8 @@ def print_frozen_device(data: bytes) -> str: if i == 0: frozen_string += f"{description} <= Device \n" else: - if file_name in used_files: - frozen_string += f"{description}, {used_files[file_name]} instance{'s' if used_files[file_name] > 1 else ''}\n" + if file_name in frozen_file_usage: + frozen_string += f"{description}, {frozen_file_usage[file_name]} instance{'s' if frozen_file_usage[file_name] > 1 else ''}\n" else: frozen_string += f"{description}, NOT FOUND IN PATCH\n" i += 1 diff --git a/maxdiff/get_frozen_stats.py b/maxdiff/get_frozen_stats.py index 640119a..8a3c3b6 100644 --- a/maxdiff/get_frozen_stats.py +++ b/maxdiff/get_frozen_stats.py @@ -1,5 +1,5 @@ from freezing_utils import device_entry_with_data, get_patcher_dict -from process_patcher import Processor, process_patch +from process_patcher import PatcherProcessor, walk_patch def get_frozen_stats(entries: list[device_entry_with_data]) -> tuple[int, int, int, int]: @@ -17,7 +17,7 @@ def get_frozen_stats(entries: list[device_entry_with_data]) -> tuple[int, int, i # get total counts: parse every instance of every abstraction count_processor = CountProcessor() - process_patch( + walk_patch( device_patch, abstraction_entries, count_processor # do recurse into abstractions ) object_count_total, line_count_total = count_processor.get_results() @@ -35,7 +35,7 @@ def get_frozen_stats(entries: list[device_entry_with_data]) -> tuple[int, int, i continue count_processor = CountProcessor() - process_patch(entry_patch, [], count_processor) # don't recurse into abstractions + walk_patch(entry_patch, [], count_processor) # don't recurse into abstractions o, l = count_processor.get_results() object_count_unique += o @@ -44,22 +44,28 @@ def get_frozen_stats(entries: list[device_entry_with_data]) -> tuple[int, int, i return object_count_total, line_count_total, object_count_unique, line_count_unique -class CountProcessor(Processor): +class CountProcessor(PatcherProcessor): def __init__(self): self.object_count = 0 self.line_count = 0 - def process_elements(self, patcher, voice_count: int, abstraction_name=""): + def process_patcher(self, patcher, poly_voice_count: int, abstraction_name=""): """Counts objects and lines in the given patcher.""" - self.object_count += len(patcher.get("boxes", [])) * voice_count - self.line_count += len(patcher.get("lines", [])) * voice_count + self.object_count += len(patcher.get("boxes", [])) * poly_voice_count + self.line_count += len(patcher.get("lines", [])) * poly_voice_count def get_results(self): """Returns the current counts.""" return self.object_count, self.line_count -def get_used_files(entries: list[device_entry_with_data]) -> dict[str, int]: +def get_frozen_file_usage(entries: list[device_entry_with_data]) -> dict[str, int]: + """Returns a dict with the names of all the files that are frozen into this device + with how often they are used in the device. + + It does this by parsing the top patcher and the abstractions found in `entries` recursively + and finding how many objects match with the file names of the bundled dependencies. + """ device = entries[0] # the first entry is always the device file abstraction_entries = [ @@ -70,16 +76,16 @@ def get_used_files(entries: list[device_entry_with_data]) -> dict[str, int]: if device_patch == {}: return {} - abstractions_processor = FileNamesProcessor() - process_patch(device_patch, abstraction_entries, abstractions_processor) - return abstractions_processor.get_results() + dependency_file_names_processor = DependencyUsageCounter() + walk_patch(device_patch, abstraction_entries, dependency_file_names_processor) + return dependency_file_names_processor.get_results() -class FileNamesProcessor(Processor): +class DependencyUsageCounter(PatcherProcessor): def __init__(self): - self.found_filenames = {} + self.filename_occurrences = {} - def process_elements(self, patcher, voice_count: int, abstraction_name=""): + def process_patcher(self, patcher, poly_voice_count: int, abstraction_name=""): """If this patcher is an abstraction, i.e. when an abstraction_name is passed in, increment the entry in the dict. For other patchers, scan them for objects that use files. """ @@ -89,14 +95,14 @@ def process_elements(self, patcher, voice_count: int, abstraction_name=""): filenames.append(abstraction_name) for filename in filenames: - if filename in self.found_filenames: - self.found_filenames[filename] += voice_count + if filename in self.filename_occurrences: + self.filename_occurrences[filename] += poly_voice_count else: - self.found_filenames[filename] = voice_count + self.filename_occurrences[filename] = poly_voice_count def get_results(self): - """Returns a dict of used abstractions mapped to how oftern they are used.""" - return self.found_filenames + """Returns a dict of used abstractions mapped to how often they are used.""" + return self.filename_occurrences def get_dependency_filenames(patcher): diff --git a/maxdiff/print_unicode.py b/maxdiff/print_unicode.py index 4f06fbb..e8b78ea 100644 --- a/maxdiff/print_unicode.py +++ b/maxdiff/print_unicode.py @@ -1,6 +1,6 @@ """ Module that shares a function to gracefully handle printing unicode characters -if the user has the PYTHONIOENCODING environment vairable set to 'ascii'. +if the user has the PYTHONIOENCODING environment variable set to 'ascii'. In that case, replace any characters that can't be encoded with ?. """ diff --git a/maxdiff/process_patcher.py b/maxdiff/process_patcher.py index 305707d..04b7786 100644 --- a/maxdiff/process_patcher.py +++ b/maxdiff/process_patcher.py @@ -1,8 +1,8 @@ from freezing_utils import get_patcher_dict -class Processor: - def process_elements(self, patcher, voice_count: int, abstraction_name=""): +class PatcherProcessor: + def process_patcher(self, patcher, poly_voice_count: int, abstraction_name=""): """Processes patchers.""" def get_results(self): @@ -10,29 +10,29 @@ def get_results(self): return None -def process_patch(patcher, abstraction_entries: list[dict], processor: Processor): - process_patch_recursive(patcher, abstraction_entries, processor, 1, "") +def walk_patch(patcher, abstraction_entries: list[dict], processor: PatcherProcessor): + walk_patch_recursive(patcher, abstraction_entries, processor, 1, "") -def process_patch_recursive( +def walk_patch_recursive( patcher, abstraction_entries: list[dict], - processor: Processor, - voice_count: int, + processor: PatcherProcessor, + poly_voice_count: int, abstraction_file_name: str, ): """Recursively progress through subpatchers, invoking the processor for every patcher - inluding every instance of the patch's dependencies that can be found among the + including every instance of the patch's dependencies that can be found among the abstraction files that were passed in. Arguments patcher: patcher to process abstraction_entries: list of abstraction entries in frozen device processor: instance of a Processor that is invoked for this patch - voice_count: the amount of voices when this patcher occurs in a poly~ in its parent patch + poly_voice_count: the amount of voices when this patcher occurs in a poly~ in its parent patch abstraction_file_name: the file name of the abstraction this patch is in, if it is in an abstraction """ - processor.process_elements(patcher, voice_count, abstraction_file_name) + processor.process_patcher(patcher, poly_voice_count, abstraction_file_name) for box_entry in patcher["boxes"]: box = box_entry["box"] @@ -42,9 +42,9 @@ def process_patch_recursive( ): patch = box["patcher"] # get subpatcher or embedded bpatcher count - process_patch_recursive(patch, abstraction_entries, processor, 1, "") + walk_patch_recursive(patch, abstraction_entries, processor, 1, "") - # if no abstractions were passed in, we assume we don't want to recurse into abstarctions + # if no abstractions were passed in, we assume we don't want to recurse into abstractions if len(abstraction_entries) == 0: continue @@ -60,17 +60,17 @@ def process_patch_recursive( if patch == {}: continue # something went wrong when parsing the abstraction - voice_count = 1 + poly_voice_count = 1 if "text" in box and box["text"].startswith("poly~"): # get poly abstraction count tokens = box["text"].split(" ") - voice_count = int(tokens[2]) if len(tokens) > 2 else 1 + poly_voice_count = int(tokens[2]) if len(tokens) > 2 else 1 - process_patch_recursive( + walk_patch_recursive( patch, abstraction_entries, processor, - voice_count, + poly_voice_count, file_name, ) From 671e3669322d27d05c1413b5c2837fb025e62362 Mon Sep 17 00:00:00 2001 From: mkp Date: Thu, 3 Sep 2026 15:10:01 +0200 Subject: [PATCH 3/4] maxdiff: print amount of occurrences for externals in frozen devices --- maxdiff/freezing_utils.py | 18 ++++++++++ maxdiff/frozen_device_printer.py | 9 +++-- maxdiff/get_frozen_stats.py | 36 ++++++++++++++++--- .../tests/test_baselines/FrozenTest.amxd.txt | 12 +++---- 4 files changed, 63 insertions(+), 12 deletions(-) diff --git a/maxdiff/freezing_utils.py b/maxdiff/freezing_utils.py index d2049e5..9f4be35 100644 --- a/maxdiff/freezing_utils.py +++ b/maxdiff/freezing_utils.py @@ -133,3 +133,21 @@ def strip_trailing_nonjson(device_data_text: str) -> str: # nothing worked; return original so caller can log/handle the parse error return device_data_text + + +EXTERNAL_FILE_SUFFIXES = [".mxe64", ".mxo", ".mxe"] +EXTERNAL_BUNDLE_SEPARATOR = "/" + + +def get_external_name(file_name: str) -> str: + """ + Checks the file name of a bundled entry and returns the name of the external as it appears in the patch + """ + if EXTERNAL_BUNDLE_SEPARATOR in file_name: + return file_name.split(EXTERNAL_BUNDLE_SEPARATOR)[0] + + for suffix in EXTERNAL_FILE_SUFFIXES: + if file_name.endswith(suffix): + return file_name[: -len(suffix)] + + return None diff --git a/maxdiff/frozen_device_printer.py b/maxdiff/frozen_device_printer.py index 32f0ec3..a8cc863 100644 --- a/maxdiff/frozen_device_printer.py +++ b/maxdiff/frozen_device_printer.py @@ -1,5 +1,5 @@ from freezing_utils import * -from get_frozen_stats import get_frozen_stats, get_frozen_file_usage +from get_frozen_stats import get_frozen_stats, get_frozen_file_usage, get_external_name from patch_printer import get_parameters_string_block @@ -47,7 +47,12 @@ def print_frozen_device(data: bytes) -> str: if file_name in frozen_file_usage: frozen_string += f"{description}, {frozen_file_usage[file_name]} instance{'s' if frozen_file_usage[file_name] > 1 else ''}\n" else: - frozen_string += f"{description}, NOT FOUND IN PATCH\n" + # this could be an external + external_name = get_external_name(file_name) + if external_name in frozen_file_usage: + frozen_string += f"{description}, {frozen_file_usage[external_name]} instance{'s' if frozen_file_usage[external_name] > 1 else ''}\n" + else: + frozen_string += f"{description}, NOT FOUND IN PATCH\n" i += 1 [object_count_total, line_count_total, object_count_unique, line_count_unique] = ( diff --git a/maxdiff/get_frozen_stats.py b/maxdiff/get_frozen_stats.py index 8a3c3b6..4478f3f 100644 --- a/maxdiff/get_frozen_stats.py +++ b/maxdiff/get_frozen_stats.py @@ -1,4 +1,4 @@ -from freezing_utils import device_entry_with_data, get_patcher_dict +from freezing_utils import device_entry_with_data, get_patcher_dict, get_external_name from process_patcher import PatcherProcessor, walk_patch @@ -65,6 +65,9 @@ def get_frozen_file_usage(entries: list[device_entry_with_data]) -> dict[str, in It does this by parsing the top patcher and the abstractions found in `entries` recursively and finding how many objects match with the file names of the bundled dependencies. + + Externals are included in the dict just by name. These names can be matched later with + the actual bundled external files. """ device = entries[0] # the first entry is always the device file @@ -72,17 +75,26 @@ def get_frozen_file_usage(entries: list[device_entry_with_data]) -> dict[str, in item for item in entries if str(item["file_name"]).endswith(".maxpat") ] + external_names = list( + dict.fromkeys( + get_external_name(item["file_name"]) + for item in entries + if get_external_name(item["file_name"]) != "" + ) + ) + device_patch = get_patcher_dict(device) if device_patch == {}: return {} - dependency_file_names_processor = DependencyUsageCounter() + dependency_file_names_processor = DependencyUsageCounter(external_names) walk_patch(device_patch, abstraction_entries, dependency_file_names_processor) return dependency_file_names_processor.get_results() class DependencyUsageCounter(PatcherProcessor): - def __init__(self): + def __init__(self, external_names): + self.external_names = external_names self.filename_occurrences = {} def process_patcher(self, patcher, poly_voice_count: int, abstraction_name=""): @@ -91,6 +103,7 @@ def process_patcher(self, patcher, poly_voice_count: int, abstraction_name=""): """ filenames = get_dependency_filenames(patcher) + filenames.extend(get_externals(patcher, self.external_names)) if abstraction_name != "": filenames.append(abstraction_name) @@ -105,8 +118,23 @@ def get_results(self): return self.filename_occurrences +def get_externals(patcher, external_names): + """Check all boxes in this patcher (don't recurse into subpatchers) and collect any objects that are externals""" + externals = [] + for box_entry in patcher["boxes"]: + box = box_entry["box"] + object_type = box["maxclass"] + if object_type == "newobj": + if "text" in box: + boxtext = box["text"] + object_name = boxtext.split(" ")[0] + if object_name in external_names: + externals.append(object_name) + return externals + + def get_dependency_filenames(patcher): - """Check all boxes in this patcher and report any dependencies they might be referring to""" + """Check all boxes in this patcher (don't recurse into subpatchers) and collect any dependencies they might be referring to""" filenames = [] for box_entry in patcher["boxes"]: box = box_entry["box"] diff --git a/maxdiff/tests/test_baselines/FrozenTest.amxd.txt b/maxdiff/tests/test_baselines/FrozenTest.amxd.txt index 07ca4a0..d7f8861 100644 --- a/maxdiff/tests/test_baselines/FrozenTest.amxd.txt +++ b/maxdiff/tests/test_baselines/FrozenTest.amxd.txt @@ -140,12 +140,12 @@ mystorage.json: 239 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance myTestTable: 410 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance TestScript.js: 87 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance collContent.txt: 8 bytes, modified at 2024/05/24 13:59:36 UTC, NOT FOUND IN PATCH -shell.mxo: 4 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH -shell/zipfile: 28122 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH -shell/executable: 182544 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH -shell/plist: 1441 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH -shell.mxe: 30720 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH -shell.mxe64: 37888 bytes, modified at 2026/08/31 10:47:56 UTC, NOT FOUND IN PATCH +shell.mxo: 4 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance +shell/zipfile: 28122 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance +shell/executable: 182544 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance +shell/plist: 1441 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance +shell.mxe: 30720 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance +shell.mxe64: 37888 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance Total - Counting every abstraction instance - Indicates loading time Object instances: 91 From 2f762d89cd638d75e947d0a8239497d74dbcfd51 Mon Sep 17 00:00:00 2001 From: mkp Date: Thu, 3 Sep 2026 14:38:10 +0200 Subject: [PATCH 4/4] maxdiff: add one more copy of external to tests Also test arguments of externals --- .../tests/test_baselines/FrozenTest.amxd.txt | 18 +++++++++--------- maxdiff/tests/test_baselines/Test.amxd.txt | 1 + maxdiff/tests/test_files/FrozenTest.amxd | Bin 713936 -> 714322 bytes maxdiff/tests/test_files/Test.amxd | Bin 58227 -> 58855 bytes 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/maxdiff/tests/test_baselines/FrozenTest.amxd.txt b/maxdiff/tests/test_baselines/FrozenTest.amxd.txt index d7f8861..748e2e6 100644 --- a/maxdiff/tests/test_baselines/FrozenTest.amxd.txt +++ b/maxdiff/tests/test_baselines/FrozenTest.amxd.txt @@ -124,7 +124,7 @@ parameters: banks: 0: (MyBank) encoders: ['live.dial', 'InsideBpatcher', '-', '-', '-', '-', '-', '-'] buttons: ['live.text', '-', '-', '-', '-', '-', '-', 'live.menu'] 1: encoders: ['-', '-', 'live.dial', 'MyParameter', 'live.dial', 'live.dial[1]', '-', '-'] buttons: ['-', '-', '-', '-', '-', 'live.text', 'live.menu', '-'] -Test.amxd: 58316 bytes, modified at 2026/08/31 11:56:20 UTC <= Device +Test.amxd: 58702 bytes, modified at 2026/09/03 12:38:17 UTC <= Device MyAbstraction.maxpat: 2027 bytes, modified at 2026/08/31 10:48:30 UTC, 6 instances ParamAbstraction.maxpat: 1491 bytes, modified at 2026/08/31 10:48:30 UTC, 2 instances AbstractionWithParameter.maxpat: 1334 bytes, modified at 2026/08/31 10:48:30 UTC, 2 instances @@ -140,16 +140,16 @@ mystorage.json: 239 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance myTestTable: 410 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance TestScript.js: 87 bytes, modified at 2026/08/27 14:58:36 UTC, 1 instance collContent.txt: 8 bytes, modified at 2024/05/24 13:59:36 UTC, NOT FOUND IN PATCH -shell.mxo: 4 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance -shell/zipfile: 28122 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance -shell/executable: 182544 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance -shell/plist: 1441 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance -shell.mxe: 30720 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance -shell.mxe64: 37888 bytes, modified at 2026/08/31 10:47:56 UTC, 1 instance +shell.mxo: 4 bytes, modified at 2026/08/31 10:47:56 UTC, 2 instances +shell/zipfile: 28122 bytes, modified at 2026/08/31 10:47:56 UTC, 2 instances +shell/executable: 182544 bytes, modified at 2026/08/31 10:47:56 UTC, 2 instances +shell/plist: 1441 bytes, modified at 2026/08/31 10:47:56 UTC, 2 instances +shell.mxe: 30720 bytes, modified at 2026/08/31 10:47:56 UTC, 2 instances +shell.mxe64: 37888 bytes, modified at 2026/08/31 10:47:56 UTC, 2 instances Total - Counting every abstraction instance - Indicates loading time - Object instances: 91 + Object instances: 92 Connections: 26 Unique - Counting abstractions once - Indicates maintainability - Object instances: 74 + Object instances: 75 Connections: 16 diff --git a/maxdiff/tests/test_baselines/Test.amxd.txt b/maxdiff/tests/test_baselines/Test.amxd.txt index 63983fc..c2d3f19 100644 --- a/maxdiff/tests/test_baselines/Test.amxd.txt +++ b/maxdiff/tests/test_baselines/Test.amxd.txt @@ -100,6 +100,7 @@ project: appversion: 9.1.4-x64-1 | rect: [91, 153, 1288, 310] | openrect: [0, 0, 0, 169] | openrectmode: 0 | default_fontsize: 10.0 | default_fontname: Arial Bold | gridsize: [8, 8] | boxanimatetime: 500 | latency: 0 | is_mpe: 0 | external_mpe_tuning_enabled: 0 | platform_compatibility: 0 | autosave: 0 ----------- objects ----------- [shell] shell: (default) +[shell dummyArgument] shell: (default) [comment NOTE: after any changes to this device, also update FrozenTest.amxd] [poly~ MyAbstraction] [poly~ MyAbstraction 3] diff --git a/maxdiff/tests/test_files/FrozenTest.amxd b/maxdiff/tests/test_files/FrozenTest.amxd index 37033b38b8b76fc37af6c2142adbcd9cefaedbfe..2bcded8605c27a76800cf7da76c36e67f179a5be 100644 GIT binary patch delta 454 zcmYk0K`4V^7{|XoAG19>*ny0u5h;DFZ8lTXW=^aq7r8i?D7BKc8n#kGTAF#kdUB$a zt0duMH;Dr-F8kOpHzyZK^1i;(4!@p$|Mz*G_qn}N?r)SWdyVG}rD!4;ktE5=ktEcd zN3L-&_*ix=#&WhgmYc0*?XutG^Eh1{O~{OhvZSSHDjtn4 z^v}=4qik+(lI1MOPHO9!ORZ*BbKL^3>@IdoC;1Q$H=MTm^kLsbO@Jr zpfpUTJa)<#4d>L8#~~<9(DDnmP)0)&9p-TW-UrJPhlXMJu>U6k_#CBM4X5F&TU3Q2 zkLZW*ur8O67yz3=NF6zza0C{|XzmGTVM+ZD8_8Ng52U83P(&{!gset%DG14)iW!9h zMZS9bK)eL$tcY!(28B$6O8S4XXWpUiit`kDc*b5(_jL)p@Jk>iWD>47MfH;H6`gSB M)Fmlo@K0KQ0m+833IG5A delta 450 zcmca~M*G4^?Flj>8=i16_k` z$qgLB{N`pRdImZQMrI(=*l@DqX2r<`rEHV?nV)SgV4G_zn3tcD8lRMz7hjNAlA&a! zpfvelgtnkkUO_H~XfuyXJC6$^5HkTWGZ3=?F)I+W0Wmuea{w{tb{-e5nwd7KF$Jhl9;|-m@fAKsG{~h zmo?LmEfCJr`&{NszfOWUSxjQ})8ig;nM~jJfXj%f;_7t0M?mGW54r4_s)Rr?X-w6R zK!PUIe?0`MXnqLdq%ln}g{VCE2x!(s6^IJG$3PX6_CYv619_$|dd#K9G+7j4@7Kpb zwUcG1>pcM)Fj)~qYfnG;1ZWk*ZwN>CDNw~JZa9Z?`mCp1dQ9inAc_0~iMWGBQ~+e< Bst^DG diff --git a/maxdiff/tests/test_files/Test.amxd b/maxdiff/tests/test_files/Test.amxd index 11557af66a520ebdecac41bfebfedad2a7379af7..1fcde96c7a0e3f5b37849a7a930adfbea00746a7 100644 GIT binary patch delta 176 zcmex-jQRO#<_R)P$DeMLi)Lapojj36VzNS8^yCc^;*&3M2~NJ?z%p5q*__GLX!80t z^-1g5Cf74Rn;eiVFcqj9V$xUuxkKN45`qzdxFFz$UJ}EOVz96wAV=|wt_GE<}Y}^I8=whs!nVbq2 F0sz3KKyv^9 delta 41 zcmV+^0M`HK%LDVq1CSg7Q{%B7TLP111l^M-i6fIwB{Y+*1Guwb2Aw^#c0_TZb~+Jh