diff --git a/corpus/README.md b/corpus/README.md new file mode 100644 index 0000000..875c15f --- /dev/null +++ b/corpus/README.md @@ -0,0 +1,15 @@ +# .fls-Korpus + +Projektdateien, an denen Lesen und Schreiben gemessen werden. Alle GPL. + +| Ordner | Herkunft | +| --- | --- | +| `java-examples/` | `gitlab.com/filius1/filius`, `beispiele/` @ `6640354` (Filius 2.14.0) | +| `java-tests/` | ebenda, `src/test/resources/` | +| `ipad-fixtures/` | `filius-ipad`, `ios/FiliusPadTests/Fixtures/FLS/` @ `3b5ded0` | + +`corpus.swift.json` schreibt das Swift-Orakel (`npm run oracle`): was der +Swift-Leser aus jeder Datei macht. **Swift ist hier kein Schiedsrichter** — +er verwirft den Java-Gateway unter der Beschriftung `Heimrouter` samt seinen +Kabeln und Geräte, deren Position XMLEncoder über eine Rückverweis-Kette +schreibt (s. Plan §13, M2). Schiedsrichter für das Dateiformat ist Java. diff --git a/corpus/corpus.swift.json b/corpus/corpus.swift.json new file mode 100644 index 0000000..61ca08f --- /dev/null +++ b/corpus/corpus.swift.json @@ -0,0 +1,427 @@ +{ + "ipad-fixtures\/dns_server.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 2, + "notebook" : 1, + "pc" : 5 + }, + "links" : 7, + "nodes" : 8, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.0-SNAPSHOT (11.03.2012)", + "warnings" : [ + + ] + }, + "ipad-fixtures\/Public_and_Private_Networks_2_EN.fls" : { + "documentation" : 12, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 2, + "pc" : 2, + "router" : 1 + }, + "links" : 4, + "nodes" : 6, + "residual" : 0, + "skipped" : 1, + "version" : "Filius version: 2.9.4 (20.07.2025)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS cable 1: unresolved port references 'Port1' and 'Port3'", + "Skipped FILIUS cable 4: unresolved port references 'Port9' and 'Port2'" + ] + }, + "ipad-fixtures\/zwei_rechnernetze_komplett.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 2, + "notebook" : 2, + "pc" : 1, + "router" : 1 + }, + "links" : 5, + "nodes" : 6, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.3.1.3 (29. Januar 2011)", + "warnings" : [ + + ] + }, + "java-examples\/anwendung_komplett.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 2, + "pc" : 1 + }, + "links" : 3, + "nodes" : 4, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 2.1.0 (11.10.2022)", + "warnings" : [ + + ] + }, + "java-examples\/dhcp_test_scenario.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 3, + "pc" : 2 + }, + "links" : 3, + "nodes" : 6, + "residual" : 0, + "skipped" : 1, + "version" : "Filius version: 2.8.0 (15.03.2025)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS cable 4: unresolved port references 'Port6' and 'Port8'", + "Skipped FILIUS cable 5: unresolved port references 'Port9' and 'Port7'" + ] + }, + "java-examples\/dns_server.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 2, + "notebook" : 1, + "pc" : 5 + }, + "links" : 7, + "nodes" : 8, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.0-SNAPSHOT (11.03.2012)", + "warnings" : [ + + ] + }, + "java-examples\/einfaches_rechnernetz_komplett.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 3, + "notebook" : 4, + "pc" : 5 + }, + "links" : 11, + "nodes" : 12, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.4.5 (04.11.2012)", + "warnings" : [ + + ] + }, + "java-examples\/email_komplett.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 4, + "pc" : 4 + }, + "links" : 8, + "nodes" : 9, + "residual" : 0, + "skipped" : 0, + "version" : null, + "warnings" : [ + "Email Client on 'Rechner 3' has inconsistent kontoListe map entry #2; account bean values remain authoritative.", + "Email Client on 'Rechner 3' ignored duplicate kontoListe account entry #2.", + "Email Client on 'Rechner 3' ignored duplicate kontoListe account entry #3.", + "Email Client on 'Rechner 4' ignored duplicate kontoListe account entry #2.", + "Email Client on 'Rechner 1' ignored duplicate kontoListe account entry #2.", + "Email Client on 'Rechner 2' ignored duplicate kontoListe account entry #2." + ] + }, + "java-examples\/Internet_Complete_with_e-Mail_Webserver_Intranet_Portforwarding_Firewall_DHCP_EN.fls" : { + "documentation" : 11, + "kinds" : { + "networkSwitch" : 3, + "notebook" : 5, + "pc" : 6, + "router" : 7 + }, + "links" : 20, + "nodes" : 21, + "residual" : 0, + "skipped" : 4, + "version" : "Filius version: 2.9.4 (20.07.2025)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS node with missing bounds coordinates", + "Skipped FILIUS node with missing bounds coordinates", + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped malformed Java GUIDocuItem with missing type or geometry.", + "Skipped malformed Java GUIDocuItem with missing type or geometry.", + "Skipped malformed Java GUIDocuItem with missing type or geometry.", + "Skipped FILIUS cable 13: unresolved port references 'Port35' and 'Port39'", + "Skipped FILIUS cable 14: unresolved port references 'Port36' and 'Port40'", + "Skipped FILIUS cable 18: unresolved port references 'Port44' and 'Port7'", + "Skipped FILIUS cable 19: unresolved port references 'Port45' and 'Port5'", + "Skipped FILIUS cable 24: unresolved port references 'Port32' and 'Port50'", + "Skipped FILIUS cable 26: unresolved port references 'Port34' and 'Port33'" + ] + }, + "java-examples\/Internet_Komplett_mit_eMail_Webserver_Intranet_Portforwarding_Firewall_DHCP_DE.fls" : { + "documentation" : 9, + "kinds" : { + "networkSwitch" : 3, + "notebook" : 4, + "pc" : 6, + "router" : 7 + }, + "links" : 19, + "nodes" : 20, + "residual" : 0, + "skipped" : 5, + "version" : "Filius version: 2.9.4 (20.07.2025)", + "warnings" : [ + "Skipped FILIUS node with missing bounds coordinates", + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS node with missing bounds coordinates", + "Skipped FILIUS node with missing bounds coordinates", + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped malformed Java GUIDocuItem with missing type or geometry.", + "Skipped malformed Java GUIDocuItem with missing type or geometry.", + "Skipped malformed Java GUIDocuItem with missing type or geometry.", + "Skipped FILIUS cable 2: unresolved port references 'Port2' and 'Port6'", + "Skipped FILIUS cable 13: unresolved port references 'Port34' and 'Port33'", + "Skipped FILIUS cable 14: unresolved port references 'Port35' and 'Port39'", + "Skipped FILIUS cable 15: unresolved port references 'Port36' and 'Port40'", + "Skipped FILIUS cable 19: unresolved port references 'Port44' and 'Port7'", + "Skipped FILIUS cable 20: unresolved port references 'Port45' and 'Port5'", + "Skipped FILIUS cable 26: unresolved port references 'Port51' and 'Port32'" + ] + }, + "java-examples\/internetwork_komplett.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 4, + "notebook" : 3, + "pc" : 3, + "router" : 3 + }, + "links" : 12, + "nodes" : 13, + "residual" : 0, + "skipped" : 1, + "version" : "Filius version: 2.1.0 (11.10.2022)", + "warnings" : [ + "Skipped FILIUS node with missing bounds coordinates", + "Skipped FILIUS cable 1: unresolved port references 'Port17' and 'Port0'" + ] + }, + "java-examples\/man-in-the-middle.fls" : { + "documentation" : 3, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 3, + "pc" : 3 + }, + "links" : 6, + "nodes" : 7, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 2.5.1 (23.10.2023)", + "warnings" : [ + + ] + }, + "java-examples\/modem_beispiel.fls" : { + "documentation" : 0, + "kinds" : { + "notebook" : 1, + "pc" : 1, + "remoteLink" : 2 + }, + "links" : 2, + "nodes" : 4, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.5.4 (08.12.2013)", + "warnings" : [ + "Imported Java Modem 'Modem (Zugreifend)' as Remote Link pair 'java-modem-port-12345' (mode=CLIENT [2], ip=localhost, port=12345); host socket transport was replaced by deterministic in-project pairing by normalized port, and cross-host identity is not preserved.", + "Imported Java Modem 'Modem (Zugangspunkt)' as Remote Link pair 'java-modem-port-12345' (mode=SERVER [1], ip=localhost, port=12345); host socket transport was replaced by deterministic in-project pairing by normalized port, and cross-host identity is not preserved." + ] + }, + "java-examples\/multicast_server.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 2, + "pc" : 1 + }, + "links" : 3, + "nodes" : 4, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 2.4.1 (07.06.2023)", + "warnings" : [ + + ] + }, + "java-examples\/nat_with_mapped_port.fls" : { + "documentation" : 9, + "kinds" : { + "networkSwitch" : 4, + "notebook" : 3, + "pc" : 3, + "router" : 3 + }, + "links" : 10, + "nodes" : 13, + "residual" : 0, + "skipped" : 2, + "version" : "Filius version: 2.8.0 (15.03.2025)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS cable 8: unresolved port references 'Port2' and 'Port24'", + "Skipped FILIUS cable 9: unresolved port references 'Port23' and 'Port6'", + "Skipped FILIUS cable 10: unresolved port references 'Port19' and 'Port22'", + "Skipped FILIUS cable 11: unresolved port references 'Port21' and 'Port11'" + ] + }, + "java-examples\/nat.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 1, + "pc" : 1 + }, + "links" : 1, + "nodes" : 3, + "residual" : 0, + "skipped" : 1, + "version" : "Filius version: 2.5.1 (23.10.2023)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS cable 1: unresolved port references 'Port2' and 'Port1'", + "Skipped FILIUS cable 2: unresolved port references 'Port0' and 'Port4'" + ] + }, + "java-examples\/private_and_public_network.fls" : { + "documentation" : 7, + "kinds" : { + "networkSwitch" : 2, + "notebook" : 2, + "pc" : 1 + }, + "links" : 3, + "nodes" : 5, + "residual" : 0, + "skipped" : 1, + "version" : "Filius version: 2.5.1 (23.10.2023)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS cable 1: unresolved port references 'Port0' and 'Port6'", + "Skipped FILIUS cable 2: unresolved port references 'Port7' and 'Port5'" + ] + }, + "java-examples\/private_und_public_networks_mit_provider_DE.fls" : { + "documentation" : 10, + "kinds" : { + "networkSwitch" : 2, + "notebook" : 2, + "pc" : 3, + "router" : 2 + }, + "links" : 7, + "nodes" : 9, + "residual" : 0, + "skipped" : 1, + "version" : "Filius version: 2.9.4 (20.07.2025)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS cable 1: unresolved port references 'Port0' and 'Port6'", + "Skipped FILIUS cable 2: unresolved port references 'Port7' and 'Port5'" + ] + }, + "java-examples\/Public_and_Private_Networks_2_EN.fls" : { + "documentation" : 12, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 2, + "pc" : 2, + "router" : 1 + }, + "links" : 4, + "nodes" : 6, + "residual" : 0, + "skipped" : 1, + "version" : "Filius version: 2.9.4 (20.07.2025)", + "warnings" : [ + "Skipped unsupported FILIUS node type 'Heimrouter' in konfiguration.xml", + "Skipped FILIUS cable 1: unresolved port references 'Port1' and 'Port3'", + "Skipped FILIUS cable 4: unresolved port references 'Port9' and 'Port2'" + ] + }, + "java-examples\/webserver.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 1, + "notebook" : 1, + "pc" : 1 + }, + "links" : 2, + "nodes" : 3, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.5.1 (13.02.2013)", + "warnings" : [ + + ] + }, + "java-examples\/zwei_rechnernetze_komplett.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 2, + "notebook" : 2, + "pc" : 1, + "router" : 1 + }, + "links" : 5, + "nodes" : 6, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.3.1.3 (29. Januar 2011)", + "warnings" : [ + + ] + }, + "java-tests\/einfaches_rechnernetz_komplett.fls" : { + "documentation" : 0, + "kinds" : { + "networkSwitch" : 3, + "notebook" : 4, + "pc" : 5 + }, + "links" : 11, + "nodes" : 12, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.4.5 (04.11.2012)", + "warnings" : [ + + ] + }, + "java-tests\/empty.fls" : { + "documentation" : 0, + "kinds" : { + + }, + "links" : 0, + "nodes" : 0, + "residual" : 0, + "skipped" : 0, + "version" : "Filius version: 1.9.0 (02.05.2020)", + "warnings" : [ + + ] + } +} diff --git a/corpus/ipad-fixtures/Public_and_Private_Networks_2_EN.fls b/corpus/ipad-fixtures/Public_and_Private_Networks_2_EN.fls new file mode 100644 index 0000000..113c240 Binary files /dev/null and b/corpus/ipad-fixtures/Public_and_Private_Networks_2_EN.fls differ diff --git a/corpus/ipad-fixtures/dns_server.fls b/corpus/ipad-fixtures/dns_server.fls new file mode 100644 index 0000000..764f41e Binary files /dev/null and b/corpus/ipad-fixtures/dns_server.fls differ diff --git a/corpus/ipad-fixtures/zwei_rechnernetze_komplett.fls b/corpus/ipad-fixtures/zwei_rechnernetze_komplett.fls new file mode 100644 index 0000000..1d48ce0 Binary files /dev/null and b/corpus/ipad-fixtures/zwei_rechnernetze_komplett.fls differ diff --git a/corpus/java-examples/Internet_Complete_with_e-Mail_Webserver_Intranet_Portforwarding_Firewall_DHCP_EN.fls b/corpus/java-examples/Internet_Complete_with_e-Mail_Webserver_Intranet_Portforwarding_Firewall_DHCP_EN.fls new file mode 100644 index 0000000..b9be011 Binary files /dev/null and b/corpus/java-examples/Internet_Complete_with_e-Mail_Webserver_Intranet_Portforwarding_Firewall_DHCP_EN.fls differ diff --git a/corpus/java-examples/Internet_Komplett_mit_eMail_Webserver_Intranet_Portforwarding_Firewall_DHCP_DE.fls b/corpus/java-examples/Internet_Komplett_mit_eMail_Webserver_Intranet_Portforwarding_Firewall_DHCP_DE.fls new file mode 100644 index 0000000..0055af2 Binary files /dev/null and b/corpus/java-examples/Internet_Komplett_mit_eMail_Webserver_Intranet_Portforwarding_Firewall_DHCP_DE.fls differ diff --git a/corpus/java-examples/Public_and_Private_Networks_2_EN.fls b/corpus/java-examples/Public_and_Private_Networks_2_EN.fls new file mode 100644 index 0000000..113c240 Binary files /dev/null and b/corpus/java-examples/Public_and_Private_Networks_2_EN.fls differ diff --git a/corpus/java-examples/anwendung_komplett.fls b/corpus/java-examples/anwendung_komplett.fls new file mode 100644 index 0000000..38ad78c Binary files /dev/null and b/corpus/java-examples/anwendung_komplett.fls differ diff --git a/corpus/java-examples/dhcp_test_scenario.fls b/corpus/java-examples/dhcp_test_scenario.fls new file mode 100644 index 0000000..406cd14 Binary files /dev/null and b/corpus/java-examples/dhcp_test_scenario.fls differ diff --git a/corpus/java-examples/dns_server.fls b/corpus/java-examples/dns_server.fls new file mode 100644 index 0000000..764f41e Binary files /dev/null and b/corpus/java-examples/dns_server.fls differ diff --git a/corpus/java-examples/einfaches_rechnernetz_komplett.fls b/corpus/java-examples/einfaches_rechnernetz_komplett.fls new file mode 100644 index 0000000..cfddffe Binary files /dev/null and b/corpus/java-examples/einfaches_rechnernetz_komplett.fls differ diff --git a/corpus/java-examples/email_komplett.fls b/corpus/java-examples/email_komplett.fls new file mode 100644 index 0000000..6c8190a Binary files /dev/null and b/corpus/java-examples/email_komplett.fls differ diff --git a/corpus/java-examples/internetwork_komplett.fls b/corpus/java-examples/internetwork_komplett.fls new file mode 100644 index 0000000..53dcc39 Binary files /dev/null and b/corpus/java-examples/internetwork_komplett.fls differ diff --git a/corpus/java-examples/man-in-the-middle.fls b/corpus/java-examples/man-in-the-middle.fls new file mode 100644 index 0000000..1c0ebfa Binary files /dev/null and b/corpus/java-examples/man-in-the-middle.fls differ diff --git a/corpus/java-examples/modem_beispiel.fls b/corpus/java-examples/modem_beispiel.fls new file mode 100644 index 0000000..bdf4a55 Binary files /dev/null and b/corpus/java-examples/modem_beispiel.fls differ diff --git a/corpus/java-examples/multicast_server.fls b/corpus/java-examples/multicast_server.fls new file mode 100644 index 0000000..3d718d6 Binary files /dev/null and b/corpus/java-examples/multicast_server.fls differ diff --git a/corpus/java-examples/nat.fls b/corpus/java-examples/nat.fls new file mode 100644 index 0000000..26f625a Binary files /dev/null and b/corpus/java-examples/nat.fls differ diff --git a/corpus/java-examples/nat_with_mapped_port.fls b/corpus/java-examples/nat_with_mapped_port.fls new file mode 100644 index 0000000..7e9b25c Binary files /dev/null and b/corpus/java-examples/nat_with_mapped_port.fls differ diff --git a/corpus/java-examples/private_and_public_network.fls b/corpus/java-examples/private_and_public_network.fls new file mode 100644 index 0000000..92999b8 Binary files /dev/null and b/corpus/java-examples/private_and_public_network.fls differ diff --git a/corpus/java-examples/private_und_public_networks_mit_provider_DE.fls b/corpus/java-examples/private_und_public_networks_mit_provider_DE.fls new file mode 100644 index 0000000..92ce2a0 Binary files /dev/null and b/corpus/java-examples/private_und_public_networks_mit_provider_DE.fls differ diff --git a/corpus/java-examples/webserver.fls b/corpus/java-examples/webserver.fls new file mode 100644 index 0000000..1fa285c Binary files /dev/null and b/corpus/java-examples/webserver.fls differ diff --git a/corpus/java-examples/zwei_rechnernetze_komplett.fls b/corpus/java-examples/zwei_rechnernetze_komplett.fls new file mode 100644 index 0000000..1d48ce0 Binary files /dev/null and b/corpus/java-examples/zwei_rechnernetze_komplett.fls differ diff --git a/corpus/java-tests/einfaches_rechnernetz_komplett.fls b/corpus/java-tests/einfaches_rechnernetz_komplett.fls new file mode 100644 index 0000000..cfddffe Binary files /dev/null and b/corpus/java-tests/einfaches_rechnernetz_komplett.fls differ diff --git a/corpus/java-tests/empty.fls b/corpus/java-tests/empty.fls new file mode 100644 index 0000000..922444d Binary files /dev/null and b/corpus/java-tests/empty.fls differ diff --git a/tools/swift-oracle/Sources/Oracle/main.swift b/tools/swift-oracle/Sources/Oracle/main.swift index e89a26c..5037862 100644 --- a/tools/swift-oracle/Sources/Oracle/main.swift +++ b/tools/swift-oracle/Sources/Oracle/main.swift @@ -257,8 +257,50 @@ func run(_ scenario: Scenario) -> JSON { ] } +// MARK: - .fls corpus + +/// Imports every .fls under `root` and summarizes what the Swift reader made of it. +func readCorpus(root: URL) throws -> JSON { + var result: JSON = [:] + let enumerator = FileManager.default.enumerator(at: root, includingPropertiesForKeys: nil) + var files: [URL] = [] + while let item = enumerator?.nextObject() as? URL { + if item.pathExtension == "fls" { files.append(item) } + } + for file in files.sorted(by: { $0.path < $1.path }) { + let name = String(file.path.dropFirst(root.path.count + 1)) + do { + let imported = try TopologyProjectStore.importFiliusArchive(Data(contentsOf: file)) + let state = imported.state + var kinds: [String: Int] = [:] + for node in state.graph.nodes { kinds[node.kind.rawValue, default: 0] += 1 } + result[name] = [ + "version": imported.report.filiusVersion ?? NSNull(), + "nodes": imported.report.importedNodeCount, + "links": imported.report.importedLinkCount, + "documentation": imported.report.importedDocumentationItemCount, + "skipped": imported.report.skippedNodeCount, + "warnings": imported.report.warnings, + "residual": imported.opaqueContent.residualCount, + "kinds": kinds, + ] as JSON + } catch { + result[name] = ["error": String(describing: error)] as JSON + } + } + return result +} + // MARK: - Main +if CommandLine.arguments.count == 4, CommandLine.arguments[1] == "--corpus" { + let summary = try readCorpus(root: URL(fileURLWithPath: CommandLine.arguments[2])) + let data = try JSONSerialization.data(withJSONObject: summary, options: [.prettyPrinted, .sortedKeys]) + try (data + Data("\n".utf8)).write(to: URL(fileURLWithPath: CommandLine.arguments[3])) + print("corpus: \(summary.count) files") + exit(0) +} + let directory = URL(fileURLWithPath: CommandLine.arguments.dropFirst().first ?? ".") let files = try FileManager.default.contentsOfDirectory(at: directory, includingPropertiesForKeys: nil) .filter { $0.lastPathComponent.hasSuffix(".scenario.json") } diff --git a/tools/swift-oracle/core.191 b/tools/swift-oracle/core.191 new file mode 100644 index 0000000..6bcc668 Binary files /dev/null and b/tools/swift-oracle/core.191 differ diff --git a/tools/swift-oracle/core.7 b/tools/swift-oracle/core.7 new file mode 100644 index 0000000..7d37f31 Binary files /dev/null and b/tools/swift-oracle/core.7 differ diff --git a/tools/swift-oracle/run.sh b/tools/swift-oracle/run.sh index 413e0d8..a2df364 100755 --- a/tools/swift-oracle/run.sh +++ b/tools/swift-oracle/run.sh @@ -6,5 +6,9 @@ set -eu here="$(cd "$(dirname "$0")" && pwd)" root="$(cd "$here/../.." && pwd)" [ -d "$here/Sources/FiliusCore" ] || "$here/fetch-upstream.sh" -docker run --rm -v "$root:/work" -w /work/tools/swift-oracle swift:6.1-jammy \ - sh -c 'swift build -q 2>&1 | grep -v "Sendable\|^ *|\|^ *\`" ; .build/debug/Oracle /work/packages/core/test/scenarios' +# A failed build must stop here: a stale binary would write stale references. +docker run --rm -v "$root:/work" -w /work/tools/swift-oracle swift:6.1-jammy sh -c ' + set -e + swift build -q + .build/debug/Oracle /work/packages/core/test/scenarios + .build/debug/Oracle --corpus /work/corpus /work/corpus/corpus.swift.json'