Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f14d856
turn off error for fully public contracts
lydiagarms Oct 13, 2025
d4cac9b
formatting
lydiagarms Oct 13, 2025
081deef
chore(setup): remove zk setup when contract is fully public
lydiagarms Nov 28, 2025
8f96adc
chore(contracts): fix contract deployment to support fully public con…
lydiagarms Dec 2, 2025
e54b3fd
chore(orchestration): include common orchestration files for fully pu…
lydiagarms Dec 2, 2025
1983234
fix(solidity-types): allow IdentifierPath and InheritanceSpecifier so…
lydiagarms Dec 4, 2025
52b6634
formatting
lydiagarms Dec 17, 2025
1078e1b
fix(orchestration): skip blocks for fully public contracts - we don't…
lydiagarms Dec 17, 2025
ec9b6f8
chore(contracts) support new expressions
lydiagarms Dec 17, 2025
74c2506
fix(contracts): semi colons for unary statements
lydiagarms Dec 12, 2025
0bc7952
fix(contracts): mappings in returns in contracts
lydiagarms Dec 14, 2025
35ecf25
fix(contracts): semicolons after internal function calls
lydiagarms Dec 14, 2025
72e333f
chore(contracts): support conditionals
lydiagarms Dec 15, 2025
fc0b11b
chore(contracts): support member access
lydiagarms Dec 15, 2025
74ab4f7
fix(contracts): empty strings returned in contracts
lydiagarms Dec 15, 2025
c20a143
fix(contracts): public booleans should be returned
lydiagarms Dec 17, 2025
b1f8eb4
fix(contracts): returns for public nested mappings
lydiagarms Dec 17, 2025
126ca71
fix(contracts): fix tuple expressions
lydiagarms Dec 15, 2025
a3bf9c4
fix(contracts): address() undefined in contracts
lydiagarms Dec 15, 2025
fc347aa
fix(contracts): space after delete operator
lydiagarms Dec 15, 2025
89e7dc9
fix(contracts): replace ERC with ERCShield in contract
lydiagarms Dec 16, 2025
bced425
chore(contracts): copy .zol contract into shield contract for fully p…
lydiagarms Dec 16, 2025
2626d05
fix(unsupportedChecks): remove error message for unsupported while lo…
lydiagarms Dec 16, 2025
0095def
fix(scope): zappify error for fully public contract
lydiagarms Dec 16, 2025
bcf7352
fix(traverse): zappify error due to no declaration for abi when check…
lydiagarms Dec 16, 2025
30c8b97
fix(orchestration): include function signatre when a return is a boolean
lydiagarms Dec 16, 2025
15d30ac
fix(contracts): include internal function calls in the contracts if t…
lydiagarms Dec 16, 2025
d6c8fec
fix(unsupportedchecks): turn off unsupported pure error for fully pub…
lydiagarms Dec 16, 2025
0b0809c
fix(orchestration): exit orchestrationInternalFunctionCallVisitor if …
lydiagarms Dec 16, 2025
3611b5b
fix(contracts): error generating contracts AST where the original con…
lydiagarms Dec 16, 2025
c1136bc
chore(contracts): support conditionals
lydiagarms Dec 16, 2025
7991ceb
fix(contracts): zappify errors during contract compilation for fully …
lydiagarms Dec 17, 2025
ca6780a
fix(orchestration): error due to constructorTx not being created as t…
lydiagarms Dec 17, 2025
7fc683f
lyd/fixingTestRunner
lydiagarms Dec 18, 2025
983868b
try fix for test runner
lydiagarms Dec 18, 2025
039d25a
Merge branch 'master' into lyd/fixingTestRunner
lydiagarms Dec 18, 2025
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
12 changes: 12 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,25 @@ jobs:

test-zapp:
runs-on: ubuntu-latest

env:
NODE_OPTIONS: "--max-old-space-size=3072"

steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v1
with:
node-version: '16.17.0'

- name: Check system resources
run: |
echo "=== Memory Info ==="
free -h
echo "=== Disk Space ==="
df -h
echo "=== CPU Info ==="
nproc

- name: run zappify
run: |
npm ci && ./bin/start
Expand Down
65 changes: 43 additions & 22 deletions apitest.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import chai from 'chai';
import chaiHttp from 'chai-http';
import chaiAsPromised from 'chai-as-promised';
Expand All @@ -16,7 +15,6 @@ chai.use(chaiHttp);
chai.use(chaiAsPromised);

const testedZapps = [];
const zappLogs = new Map(); // Store logs for each zapp
const displayedZapps = new Set(); // Track which ZApps have already had logs displayed

const getUserFriendlyTestNames = async folderPath => {
Expand Down Expand Up @@ -55,10 +53,9 @@ const callZAppAPIs = async (zappName, apiRequests, preHook, cnstrctrInputs) => {
console.log(logResult.stderr);
}
// Store logs and mark as displayed to prevent duplicate display in afterEach
zappLogs.set(zappName, {
stdout: logResult.stdout,
stderr: logResult.stderr,
});
const logFilePath = `./test-logs/${zappName}-failed.log`;
fs.mkdirSync('./test-logs', { recursive: true });
fs.writeFileSync(logFilePath, `=== ${zappName} APIACTIONS FAILED ===\n${logResult.stdout}\n${logResult.stderr || ''}`);
displayedZapps.add(zappName);
}
shell.cd('../..');
Expand Down Expand Up @@ -117,36 +114,48 @@ const callZAppAPIs = async (zappName, apiRequests, preHook, cnstrctrInputs) => {
console.log(logResult.stderr);
}
// Store logs and mark as displayed to prevent duplicate display in afterEach
zappLogs.set(zappName, {
stdout: logResult.stdout,
stderr: logResult.stderr,
});
const logFilePath = `../../test-logs/${zappName}-api-failed.log`;
fs.mkdirSync('../../test-logs', { recursive: true });
fs.writeFileSync(logFilePath, `=== ${zappName} API FAILED ===\n${logResult.stdout}\n${logResult.stderr || ''}`);
displayedZapps.add(zappName);
}
// Clean up and re-throw
shell.exec('docker compose -f docker-compose.zapp.yml down -v');
// Also clean node_modules on failure
shell.exec('rm -rf node_modules', { silent: true });
shell.cd('../..');
throw error;
}
shell.cd(`./temp-zapps/${zappName}`);
// Capture logs silently and store them
// Capture logs silently and write to file
const logResult = shell.exec(
'docker compose -f docker-compose.zapp.yml logs',
{ silent: true },
);
if (logResult.code === 0) {
zappLogs.set(zappName, {
stdout: logResult.stdout,
stderr: logResult.stderr,
});
const logFilePath = `../../test-logs/${zappName}.log`;
fs.mkdirSync('../../test-logs', { recursive: true });
fs.writeFileSync(logFilePath, `=== ${zappName} logs ===\n${logResult.stdout}\n${logResult.stderr || ''}`);
}
if (
shell.exec('docker compose -f docker-compose.zapp.yml down -v').code !== 0
) {
shell.echo('docker stop failed');
shell.exit(1);
}

// Clean up node_modules to free memory for next ZApp
console.log(`Cleaning up node_modules for ${zappName}...`);
shell.exec('rm -rf node_modules', { silent: true });

shell.cd('../..');

// Force garbage collection if available
if (global.gc) {
console.log('Running garbage collection...');
global.gc();
}

await new Promise(resolve => {
setTimeout(resolve, 5000);
});
Expand Down Expand Up @@ -683,14 +692,26 @@ function displayLogsForZapp(zappName) {
if (displayedZapps.has(zappName)) {
return; // Skip - already displayed
}
const logs = zappLogs.get(zappName);
if (logs) {

// Try to read logs from file instead of memory
const logFilePath = `./test-logs/${zappName}.log`;
const failedLogPath = `./test-logs/${zappName}-failed.log`;
const apiFailedLogPath = `./test-logs/${zappName}-api-failed.log`;

let logContent = null;

// Check which log file exists
if (fs.existsSync(apiFailedLogPath)) {
logContent = fs.readFileSync(apiFailedLogPath, 'utf8');
} else if (fs.existsSync(failedLogPath)) {
logContent = fs.readFileSync(failedLogPath, 'utf8');
} else if (fs.existsSync(logFilePath)) {
logContent = fs.readFileSync(logFilePath, 'utf8');
}

if (logContent) {
console.log(`\n=== Logs for ${zappName} ===`);
console.log(logs.stdout);
if (logs.stderr) {
console.log(`Stderr for ${zappName}:`);
console.log(logs.stderr);
}
console.log(logContent);
// Mark this ZApp as having logs displayed
displayedZapps.add(zappName);
} else {
Expand Down
Loading