CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152 - #13

Merged
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152
Feb 23, 2026
Merged

CPP compilation excludes redundant code submission file, fixes codewit-us/codewit.us#152#13
kbuffardi merged 2 commits into
mainfrom
codewit-us/codewit.us#152

Conversation

@kbuffardi

Copy link
Copy Markdown
Contributor

Trying to compile runner.cppandprogram.cpp results in function redefinition errors since program.cpp is already included when the previous cxxtestgen command is run.

Please check this PR thoroughly because this is a quick patch that I have not given due diligence to testing, but I wanted to offer the fix while it's fresh on my mind.

Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

program.cpp was removed from linking unconditionally. That fixes duplicate-symbol errors when tests #include "program.cpp", but it breaks extern-style tests (shown in README.md (line 104) and codeeval.http (line 38)) because student symbols are no longer linked.

Can we:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a strategic standpoint, it's important that we let the user submit code that matches the video's code exactly and it should always pass the tests.

A secondary priority is that we want to avoid the system having to edit the user's submitted attempt (such as wrapping it in a novel namespace, deleting some code, or other workarounds) mostly because (A) it'd add more complexity and potential points of failure, and (B) compilation errors would likely report inconsistent line numbers with what the user actually submitted.

Therefore, it makes sense to put the burden on the test code for every exercise to adapt as necessary to test what was demonstrated in the video.

Can we [...] Verify if all testCode will contain #include program.cpp?

Yes. I'll make sure to document it for reference purposes, but this seems like our best solution. The test code will need to manipulate how program.cpp is processed (e.g. capture cin/cout to automate simulated console interaction, redefine main as program_main, etc.) so we'll need to adopt the practice of making sure to always #include program.cpp in the test file test_program.h

I've verified that the approach this PR takes fixes the compilation error when run manually within the codewit-us/containership/Dockerfile.cpp.box container. However, before merging it, we should verify that it works in local development with codeval + codewit.us

Update/align README.md and codeeval.http with the intended pattern(s) if something somewhere is incorrect?

Agreed, I'll update this PR with those revisions as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Comment threadexecutor.js Outdated
Comment threadexecutor.js

await compileCode('cxxtestgen', ['--error-printer', '-o', runnerCppPath, testHeaderPath], uniqueDir);
await compileCode('g++', ['-o', runnerExecutablePath, runnerCppPath, mainCppPath], uniqueDir);
await compileCode('g++', ['-std=c++20', '-o', runnerExecutablePath, runnerCppPath], uniqueDir);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR #13 fixes the immediate duplicate-linking failure for include-style C++ tests by removing program.cpp from the runner link step, and I have confirmed that include-style payloads now pass locally.

Approving this as a scoped hotfix, with one suggested follow-up issue before/alongside rollout:

  • Remove C++ declaration injection in executor.js (the regex-generated declarations prepended to test_program.h) so test behavior is owned entirely by testCode (#include "program.cpp, main renaming, I/O adaptation), since the current injection can still introduce signature conflicts (e.g., unsigned int vs int) and cause compile errors unrelated to student correctness.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kbuffardi@NickK21