diff --git a/lua/cp/commands/init.lua b/lua/cp/commands/init.lua index 6dafd00..632411e 100644 --- a/lua/cp/commands/init.lua +++ b/lua/cp/commands/init.lua @@ -109,9 +109,7 @@ local function parse_command(args) end function M.handle_command(opts) - logger.log(('command received: %s'):format(vim.inspect(opts.fargs))) local cmd = parse_command(opts.fargs) - logger.log(('parsed command: %s'):format(vim.inspect(cmd))) if cmd.type == 'error' then logger.log(cmd.message, vim.log.levels.ERROR) @@ -125,19 +123,14 @@ function M.handle_command(opts) end if cmd.type == 'action' then - logger.log(('handling action: %s'):format(cmd.action)) local setup = require('cp.setup') local ui = require('cp.ui.panel') if cmd.action == 'run' then - print('running') - logger.log('calling toggle_run_panel') ui.toggle_run_panel(cmd.debug) elseif cmd.action == 'next' then - logger.log('calling navigate_problem(1)') setup.navigate_problem(1, cmd.language) elseif cmd.action == 'prev' then - logger.log('calling navigate_problem(-1)') setup.navigate_problem(-1, cmd.language) elseif cmd.action == 'pick' then local picker = require('cp.commands.picker') diff --git a/lua/cp/runner/run.lua b/lua/cp/runner/run.lua index abe13e3..2219983 100644 --- a/lua/cp/runner/run.lua +++ b/lua/cp/runner/run.lua @@ -87,14 +87,11 @@ end ---@param expected_file string ---@return TestCase[] local function parse_test_cases_from_files(input_file, expected_file) - if vim.fn.filereadable(input_file) == 0 or vim.fn.filereadable(expected_file) == 0 then - return {} - end - local base_name = vim.fn.fnamemodify(input_file, ':r') local test_cases = {} - local i = 1 + -- Try numbered files first (created by scraper) + local i = 1 while true do local individual_input_file = base_name .. '.' .. i .. '.cpin' local individual_expected_file = base_name .. '.' .. i .. '.cpout' @@ -113,12 +110,6 @@ local function parse_test_cases_from_files(input_file, expected_file) end end - if #test_cases == 0 then - local input_content = table.concat(vim.fn.readfile(input_file), '\n') - local expected_content = table.concat(vim.fn.readfile(expected_file), '\n') - return { create_test_case(1, input_content, expected_content) } - end - return test_cases end diff --git a/lua/cp/scraper.lua b/lua/cp/scraper.lua index 5819478..4f70930 100644 --- a/lua/cp/scraper.lua +++ b/lua/cp/scraper.lua @@ -91,11 +91,6 @@ function M.scrape_problem_tests(platform, contest_id, problem_id, callback) if mkdir_ok then local config = require('cp.config') local base_name = config.default_filename(contest_id, problem_id) - local logger = require('cp.log') - - logger.log( - ('writing %d test files for %s (base: %s)'):format(#result.tests, problem_id, base_name) - ) for i, test_case in ipairs(result.tests) do local input_file = 'io/' .. base_name .. '.' .. i .. '.cpin' @@ -104,23 +99,9 @@ function M.scrape_problem_tests(platform, contest_id, problem_id, callback) local input_content = test_case.input:gsub('\r', '') local expected_content = test_case.expected:gsub('\r', '') - local input_ok = - pcall(vim.fn.writefile, vim.split(input_content, '\n', true), input_file) - local expected_ok = - pcall(vim.fn.writefile, vim.split(expected_content, '\n', true), expected_file) - - if input_ok and expected_ok then - logger.log(('wrote test files: %s, %s'):format(input_file, expected_file)) - else - logger.log( - ('failed to write test files for %s.%d'):format(base_name, i), - vim.log.levels.WARN - ) - end + pcall(vim.fn.writefile, vim.split(input_content, '\n', true), input_file) + pcall(vim.fn.writefile, vim.split(expected_content, '\n', true), expected_file) end - else - local logger = require('cp.log') - logger.log('failed to create io/ directory', vim.log.levels.ERROR) end end) diff --git a/lua/cp/setup.lua b/lua/cp/setup.lua index 82bd6a4..642aca3 100644 --- a/lua/cp/setup.lua +++ b/lua/cp/setup.lua @@ -108,22 +108,20 @@ function M.setup_problem(contest_id, problem_id, language) logger.log('loading test cases...') scraper.scrape_problem_tests(platform, contest_id, problem_id, function(result) - vim.schedule(function() - if result.success then - logger.log(('loaded %d test cases for %s'):format(#(result.tests or {}), problem_id)) - if state.get_problem_id() == problem_id then - state.set_test_cases(result.tests) - end - else - logger.log( - 'failed to load tests: ' .. (result.error or 'unknown error'), - vim.log.levels.ERROR - ) - if state.get_problem_id() == problem_id then - state.set_test_cases({}) - end + if result.success then + logger.log(('loaded %d test cases for %s'):format(#(result.tests or {}), problem_id)) + if state.get_problem_id() == problem_id then + state.set_test_cases(result.tests) end - end) + else + logger.log( + 'failed to load tests: ' .. (result.error or 'unknown error'), + vim.log.levels.ERROR + ) + if state.get_problem_id() == problem_id then + state.set_test_cases({}) + end + end end) else logger.log(('scraping disabled for %s'):format(platform)) @@ -202,20 +200,9 @@ function M.scrape_remaining_problems(platform, contest_id, problems) logger.log(('scraping %d uncached problems in background...'):format(#missing_problems)) for _, prob in ipairs(missing_problems) do - logger.log(('starting background scrape for problem %s'):format(prob.id)) scraper.scrape_problem_tests(platform, contest_id, prob.id, function(result) if result.success then - logger.log( - ('background: scraped problem %s - %d test cases'):format(prob.id, #(result.tests or {})) - ) - else - logger.log( - ('background: failed to scrape problem %s: %s'):format( - prob.id, - result.error or 'unknown error' - ), - vim.log.levels.WARN - ) + logger.log(('background: scraped problem %s'):format(prob.id)) end end) end @@ -260,8 +247,6 @@ function M.navigate_problem(direction, language) local new_problem = problems[new_index] M.setup_problem(contest_id, new_problem.id, language) - - state.set_problem_id(new_problem.id) end return M diff --git a/lua/cp/ui/panel.lua b/lua/cp/ui/panel.lua index 35a4c9e..1ca5551 100644 --- a/lua/cp/ui/panel.lua +++ b/lua/cp/ui/panel.lua @@ -15,7 +15,7 @@ local function get_current_problem() end function M.toggle_run_panel(is_debug) - if state.run_panel_active then + if state.is_run_panel_active() then if current_diff_layout then current_diff_layout.cleanup() current_diff_layout = nil @@ -27,15 +27,12 @@ function M.toggle_run_panel(is_debug) state.saved_session = nil end - print('run panel was active, returning') - state.set_run_panel_active(false) logger.log('test panel closed') return end if not state.get_platform() then - print('no panel active, returning') logger.log( 'No contest configured. Use :CP to set up first.', vim.log.levels.ERROR @@ -44,9 +41,7 @@ function M.toggle_run_panel(is_debug) end local problem_id = get_current_problem() - print(problem_id) if not problem_id then - logger.log('no current problem set', vim.log.levels.ERROR) return end @@ -205,7 +200,7 @@ function M.toggle_run_panel(is_debug) vim.api.nvim_set_current_win(test_windows.tab_win) - state.run_panel_active = true + state.set_run_panel_active(true) state.test_buffers = test_buffers state.test_windows = test_windows local test_state = run.get_run_panel_state()