diff --git a/test-syntax.mjs b/test-syntax.mjs new file mode 100644 index 0000000..0ad8bd8 --- /dev/null +++ b/test-syntax.mjs @@ -0,0 +1,44 @@ +import { checkJsSyntax, checkWrittenJsFiles } from 'C:/numexai/numexai/numex-cli/src/syntaxCheck.js'; +import { writeFileSync, rmSync, mkdtempSync } from 'node:fs'; +import { join } from 'node:path'; +import { tmpdir } from 'node:os'; +import assert from 'node:assert'; + +console.log('🧪 Multi-Language Syntax Check Test Başlatılıyor...'); + +const tmpDir = mkdtempSync(join(tmpdir(), 'syntax-test-')); + +try { + // Test 1: Geçerli JS + const validJs = join(tmpDir, 'valid.js'); + writeFileSync(validJs, 'const x = 10; console.log(x);'); + const res1 = await checkJsSyntax(validJs); + assert.strictEqual(res1.ok, true, 'Geçerli JS hatasız olmalı'); + + // Test 2: Geçersiz JSON + const invalidJson = join(tmpDir, 'bad.json'); + writeFileSync(invalidJson, '{ "name": "numex", }'); // trailing comma is invalid JSON + const res2 = await checkJsSyntax(invalidJson); + assert.strictEqual(res2.ok, false, 'Bozuk JSON yakalanmalı'); + assert.match(res2.message, /JSON/, 'Mesajda JSON uyarısı bulunmalı'); + + // Test 3: Kapanmamış parantezli TS/TSX + const badTs = join(tmpDir, 'bad.ts'); + writeFileSync(badTs, 'function test() { return (1 + 2;'); // missing closing parenthesis + const res3 = await checkJsSyntax(badTs); + assert.strictEqual(res3.ok, false, 'Bozuk TS parantez dengesi yakalanmalı'); + + // Test 4: Bozuk HTML gömülü script + const badHtml = join(tmpDir, 'index.html'); + writeFileSync(badHtml, '
'); + const res4 = await checkJsSyntax(badHtml); + assert.strictEqual(res4.ok, false, 'HTML içi bozuk script yakalanmalı'); + + // Test 5: Toplu kontrol + const errors = await checkWrittenJsFiles(tmpDir, ['bad.json', 'bad.ts', 'valid.js']); + assert.strictEqual(errors.length, 2, 'Tam olarak 2 hatalı dosya yakalanmalı'); + + console.log('✅ TÜM TESTLER BAŞARIYLA GEÇTİ!'); +} finally { + rmSync(tmpDir, { recursive: true, force: true }); +}