Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:
run: npm install
working-directory: syntest-solidity
- name: Solidity - Link Local Framework
run: npm link @syntest/framework
run: npm link @syntest/core
working-directory: syntest-solidity

# Building
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ To be able to make quick changes to the syntest-framework and then test it in th

```bash
cd <PATH_TO_SYNTEST_FRAMEWORK>; npm link
cd <PATH_TO_SYNTEST_SOLIDITY>; npm link @syntest/framework
cd <PATH_TO_SYNTEST_SOLIDITY>; npm link @syntest/core
```

This creates a symbolic link to the local syntest-framework instance in the node modules folder of syntest-solidity.
Expand Down
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
},
"dependencies": {
"@solidity-parser/parser": "0.14.5",
"@syntest/framework": "^0.1.2",
"@syntest/core": "0.2.0",
"@truffle/config": "^1.2.44",
"@truffle/provider": "^0.1.17",
"bignumber.js": "9.0.1",
Expand Down Expand Up @@ -83,12 +83,12 @@
"chai": "^4.3.3",
"eslint": "^7.30.0",
"eslint-config-prettier": "^8.1.0",
"mocha": "^8.3.1",
"mocha": "10.2.0",
"nyc": "^15.1.0",
"prettier": "^2.3.2",
"sinon": "^9.2.4",
"ts-node": "^9.0.0",
"typescript": "^4.3.5"
"ts-node": "10.9.1",
"typescript": "4.9.4"
},
"engines": {
"node": ">=10.24.0"
Expand Down
57 changes: 25 additions & 32 deletions src/SolidityLauncher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ import {
getSeed,
clearDirectory,
createTempDirectoryStructure,
} from "@syntest/framework";
Target,
} from "@syntest/core";

import * as path from "path";
import TruffleConfig = require("@truffle/config");
Expand All @@ -65,7 +66,7 @@ import {
createTruffleConfig,
getTestFilePaths,
loadLibrary,
setupTempFolders
setupTempFolders,
} from "./util/fileSystem";

import Messages from "./ui/Messages";
Expand All @@ -87,7 +88,6 @@ import {
collectInitialVariables,
collectStatistics,
} from "./util/collection";
import { Target } from "@syntest/framework";

const pkg = require("../package.json");
const Web3 = require("web3");
Expand Down Expand Up @@ -145,7 +145,10 @@ export class SolidityLauncher {
required: true,
},
}; // TODO
setupOptions(this._program, additionalOptions);
setupOptions(
this._program,
<Record<string, unknown>[]>(<unknown>additionalOptions)
);

const index = process.argv.indexOf(
process.argv.find((a) => a.includes(this._program))
Expand Down Expand Up @@ -192,16 +195,16 @@ export class SolidityLauncher {

this.config.compilers = {
solc: {
version: Properties['solc_compiler_version'],
version: Properties["solc_compiler_version"],
parser: "solcjs",
settings: {
optimizer: {
enabled: true,
runs: 2
}
}
}
}
runs: 2,
},
},
},
};
this.truffle = loadLibrary(this.config);
this.api = new API(myConfig);

Expand Down Expand Up @@ -236,14 +239,13 @@ export class SolidityLauncher {

getUserInterface().report("header", ["GENERAL INFO"]);

getUserInterface().report("property-set", [
"Network Info",
[
getUserInterface().report("property-set", ["Network Info", <string>(<
unknown
>[
["id", this.config.network],
["port", this.config.networks[this.config.network].network_id],
["network", this.config.networks[this.config.network].port],
],
]);
])]);

getUserInterface().report("header", ["TARGETS"]);

Expand Down Expand Up @@ -283,44 +285,35 @@ export class SolidityLauncher {
getUserInterface().report("header", ["CONFIGURATION"]);

getUserInterface().report("single-property", ["Seed", getSeed()]);
getUserInterface().report("property-set", [
"Budgets",
[
getUserInterface().report("property-set", ["Budgets", <string>(<unknown>[
["Iteration Budget", `${Properties.iteration_budget} iterations`],
["Evaluation Budget", `${Properties.evaluation_budget} evaluations`],
["Search Time Budget", `${Properties.search_time} seconds`],
["Total Time Budget", `${Properties.total_time} seconds`],
],
]);
getUserInterface().report("property-set", [
"Algorithm",
[
])]);
getUserInterface().report("property-set", ["Algorithm", <string>(<unknown>[
["Algorithm", Properties.algorithm],
["Population Size", Properties.population_size],
],
]);
])]);
getUserInterface().report("property-set", [
"Variation Probabilities",
[
<string>(<unknown>[
["Resampling", Properties.resample_gene_probability],
["Delta mutation", Properties.delta_mutation_probability],
[
"Re-sampling from chromosome",
Properties.sample_existing_value_probability,
],
["Crossover", Properties.crossover_probability],
],
]),
]);

getUserInterface().report("property-set", [
"Sampling",
[
getUserInterface().report("property-set", ["Sampling", <string>(<unknown>[
["Max Depth", Properties.max_depth],
["Explore Illegal Values", Properties.explore_illegal_values],
["Sample Function Result as Argument", Properties.sample_func_as_arg],
["Crossover", Properties.crossover_probability],
],
]);
])]);

return targetPool;
}
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/static/SolidityTarget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { CFG, Target } from "@syntest/framework";
import { CFG, Target } from "@syntest/core";

import { SolidityTargetPool } from "./SolidityTargetPool";
import * as path from "path";
Expand Down
4 changes: 1 addition & 3 deletions src/analysis/static/SolidityTargetPool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,10 @@ import { TargetMapGenerator } from "./map/TargetMapGenerator";
import { SolidityCFGFactory } from "../../graph/SolidityCFGFactory";
import { ContractMetadata } from "./map/ContractMetadata";
import { ContractFunction } from "./map/ContractFunction";
import { CFG, Properties } from "@syntest/framework";
import { CFG, Properties, TargetPool, Target } from "@syntest/core";
import { ImportVisitor } from "./dependency/ImportVisitor";
import * as fs from "fs";
import { LibraryVisitor } from "./dependency/LibraryVisitor";
import { TargetPool } from "@syntest/framework";
import { Target } from "@syntest/framework";
const SolidityParser = require("@solidity-parser/parser");
const { outputFileSync, copySync } = require("fs-extra");
const Instrumenter = require("../../../src/instrumentation/instrumenter"); // Local version
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/static/map/ContractMetadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { TargetMetaData } from "@syntest/framework";
import { TargetMetaData } from "@syntest/core";

/**
* Interface for Solidity contract metadata.
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/static/map/ContractVisitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ export class ContractVisitor implements SolidityVisitor {
break;
}
case "Mapping": {
if (type.keyType.type === 'ElementaryTypeName') {
if (type.keyType.type === "ElementaryTypeName") {
paramType = `Map<${type.keyType.name},${this.resolveTypes(
type.valueType
)}>`;
Expand Down
9 changes: 8 additions & 1 deletion src/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,14 @@ class API {
try {
// the string replacement is necessary because the istanbul reporter expects contractPath...
// should be fixed by a custom made reporter specific to this project
this.coverage.generate(JSON.parse(JSON.stringify(this.instrumenter.instrumentationData).replaceAll('path', 'contractPath')));
this.coverage.generate(
JSON.parse(
JSON.stringify(this.instrumenter.instrumentationData).replaceAll(
"path",
"contractPath"
)
)
);

const mapping = this.makeKeysRelative(this.coverage.data, this.cwd);
this.saveCoverage(mapping);
Expand Down
2 changes: 1 addition & 1 deletion src/criterion/RequireObjectiveFunction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
NodeType,
ProbeObjectiveFunction,
SearchSubject,
} from "@syntest/framework";
} from "@syntest/core";

export class RequireObjectiveFunction<
T extends Encoding
Expand Down
2 changes: 1 addition & 1 deletion src/graph/SolidityCFGFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
CFGFactory,
Properties,
NodeType,
} from "@syntest/framework";
} from "@syntest/core";

import {
ExternalVisibility,
Expand Down
2 changes: 1 addition & 1 deletion src/search/SolidityExecutionResult.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { ExecutionResult, Datapoint } from "@syntest/framework";
import { ExecutionResult, Datapoint } from "@syntest/core";

export enum SolidityExecutionStatus {
PASSED,
Expand Down
2 changes: 1 addition & 1 deletion src/search/SoliditySubject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import {
NodeType,
ObjectiveFunction,
SearchSubject,
} from "@syntest/framework";
} from "@syntest/core";

import { RequireObjectiveFunction } from "../criterion/RequireObjectiveFunction";
import { ExternalVisibility } from "../analysis/static/map/ContractFunction";
Expand Down
2 changes: 1 addition & 1 deletion src/search/operators/crossover/SolidityTreeCrossover.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { prng, Crossover, Properties } from "@syntest/framework";
import { prng, Crossover, Properties } from "@syntest/core";

import { SolidityTestCase } from "../../../testcase/SolidityTestCase";
import { ConstructorCall } from "../../../testcase/statements/action/ConstructorCall";
Expand Down
2 changes: 1 addition & 1 deletion src/seeding/constant/ConstantPool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { prng } from "@syntest/framework";
import { prng } from "@syntest/core";

/**
* A pool with constants extracted from the subject under test.
Expand Down
4 changes: 2 additions & 2 deletions src/testbuilding/SolidityDecoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { Properties, Decoder } from "@syntest/framework";
import { Properties, Decoder } from "@syntest/core";

import * as path from "path";
import * as web3_utils from "web3-utils";
Expand All @@ -28,7 +28,7 @@ import { ObjectFunctionCall } from "../testcase/statements/action/ObjectFunction
import { SolidityTestCase } from "../testcase/SolidityTestCase";
import { Statement } from "../testcase/statements/Statement";
import { PrimitiveStatement } from "../testcase/statements/primitive/PrimitiveStatement";
import { Target } from "@syntest/framework";
import { Target } from "@syntest/core";

/**
* @author Dimitri Stallenberg
Expand Down
2 changes: 1 addition & 1 deletion src/testbuilding/SoliditySuiteBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { Properties, Archive, getUserInterface } from "@syntest/framework";
import { Properties, Archive, getUserInterface } from "@syntest/core";

import {
readdirSync,
Expand Down
2 changes: 1 addition & 1 deletion src/testcase/SolidityTestCase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { getUserInterface, Encoding, Decoder } from "@syntest/framework";
import { getUserInterface, Encoding, Decoder } from "@syntest/core";
import { ConstructorCall } from "./statements/action/ConstructorCall";
import { SoliditySampler } from "./sampling/SoliditySampler";

Expand Down
2 changes: 1 addition & 1 deletion src/testcase/execution/SolidityRunner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
Properties,
getUserInterface,
EncodingRunner,
} from "@syntest/framework";
} from "@syntest/core";

import * as path from "path";
import {
Expand Down
2 changes: 1 addition & 1 deletion src/testcase/sampling/SolidityRandomSampler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { prng, Properties } from "@syntest/framework";
import { prng, Properties } from "@syntest/core";

import { SoliditySampler } from "./SoliditySampler";
import { AddressStatement } from "../statements/primitive/AddressStatement";
Expand Down
2 changes: 1 addition & 1 deletion src/testcase/sampling/SoliditySampler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import { SearchSubject, EncodingSampler } from "@syntest/framework";
import { SearchSubject, EncodingSampler } from "@syntest/core";
import { Parameter } from "../../analysis/static/parsing/Parameter";

import { SolidityTestCase } from "../SolidityTestCase";
Expand Down
3 changes: 1 addition & 2 deletions src/testcase/statements/RootStatement.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
*/

import { Statement } from "./Statement";
import { EncodingSampler } from "@syntest/framework/dist/search/EncodingSampler";
import { Encoding } from "@syntest/framework/dist/search/Encoding";
import { Encoding, EncodingSampler } from "@syntest/core";
import { ActionStatement } from "./action/ActionStatement";
import { Parameter } from "../../analysis/static/parsing/Parameter";

Expand Down
4 changes: 1 addition & 3 deletions src/testcase/statements/Statement.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
* limitations under the License.
*/

import { EncodingSampler } from "@syntest/framework/dist/search/EncodingSampler";
import { prng } from "@syntest/framework/dist/util/prng";
import { Encoding } from "@syntest/framework/dist/search/Encoding";
import { prng, EncodingSampler, Encoding } from "@syntest/core";
import { Parameter } from "../../analysis/static/parsing/Parameter";

/**
Expand Down
4 changes: 2 additions & 2 deletions src/testcase/statements/action/ActionStatement.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
*/

import { Statement } from "../Statement";
import { EncodingSampler } from "@syntest/framework";
import { Encoding } from "@syntest/framework";
import { EncodingSampler } from "@syntest/core";
import { Encoding } from "@syntest/core";
import { Parameter } from "../../../analysis/static/parsing/Parameter";

/**
Expand Down
2 changes: 1 addition & 1 deletion src/testcase/statements/action/ConstructorCall.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*/

import { AddressStatement } from "../primitive/AddressStatement";
import { prng } from "@syntest/framework";
import { prng } from "@syntest/core";
import { SoliditySampler } from "../../sampling/SoliditySampler";
import { ActionStatement } from "./ActionStatement";
import { Statement } from "../Statement";
Expand Down
Loading