{"id":19818055,"url":"https://github.com/berkeley-cs61b/bsag-jh61b","last_synced_at":"2026-05-11T01:03:56.109Z","repository":{"id":89934875,"uuid":"581426011","full_name":"Berkeley-CS61B/bsag-jh61b","owner":"Berkeley-CS61B","description":"jh61b step definitions for BSAG","archived":false,"fork":false,"pushed_at":"2024-03-05T02:47:13.000Z","size":46,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-11T08:12:32.142Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Berkeley-CS61B.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-23T06:36:10.000Z","updated_at":"2024-12-09T13:00:38.000Z","dependencies_parsed_at":"2025-01-11T08:12:10.946Z","dependency_job_id":"c8b51cd8-7f54-4921-9d83-372febde4190","html_url":"https://github.com/Berkeley-CS61B/bsag-jh61b","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Berkeley-CS61B%2Fbsag-jh61b","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Berkeley-CS61B%2Fbsag-jh61b/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Berkeley-CS61B%2Fbsag-jh61b/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Berkeley-CS61B%2Fbsag-jh61b/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Berkeley-CS61B","download_url":"https://codeload.github.com/Berkeley-CS61B/bsag-jh61b/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241174211,"owners_count":19922254,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T10:14:30.816Z","updated_at":"2026-05-11T01:03:51.076Z","avatar_url":"https://github.com/Berkeley-CS61B.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `jh61b` for BSAG\n\nSteps for running `jh61b.jar` with BSAG.\n\n## Notice\n\n**This package is currently under active development! It's probably broken.**\nI'm working as fast as I can to un-break it and add features.\nOnce I've verified that I can run an autograder, I will publish it on PyPI.\n\n## Usage\n\n`jh61b` uses \"pieces\", which are a related group of test files. Each piece\nis defined by the set of student files and assessment files it depends on.\n\nAn example set of `jh61b` steps might look like\n\n```yaml\n# Check that the relevant files are present\n- jh61b.check_files:\n      pieces:\n          TestIntList:\n              # Student files must be present and not clobbered by AG files\n              student_files:\n                  - IntList/IntListExercises.java\n                  - IntList/IntList.java\n                  - IntList/Primes.java\n              # jh61b test files that will be run later.\n              assessment_files:\n                  - AGTestAddConstant.java\n                  - AGTestSetToZeroIfMaxFEL.java\n                  - AGTestSquarePrimes.java\n          # Define multiple pieces that can succeed or fail independently\n          TestArithmetic:\n              student_files:\n                  - Arithmetic/Arithmetic.java\n              assessment_files:\n                  - AGTestArithmetic.java\n          TestDebugExercise:\n              student_files:\n                  - DebugExercise/DebugExercise2.java\n              assessment_files:\n                  - AGTestDebugExercise.java\n# Compile every piece\n- jh61b.compilation\n# use `jdeps` to verify that student files don't depend on disallowed libraries\n# for example, `reflect` can be used to fake behavior under test.\n- jh61b.dep_check:\n      disallowed_classes:\n          - java.lang.reflect.**\n# Run assessments\n- jh61b.assessment:\n      # Some pieces will have special settings. If a piece isn't special, no\n      # need to specify it.\n      piece_configs:\n          # This test requires students to pass every test in the file(s) to\n          # receive full credit. The aggregation report has gradescope test\n          # number \"3\".\n          TestDebugExercise\n              require_full_score: true\n              aggregated_number: 3\n# Weight module scores to achieve a total score.\n- jh61b.final_score:\n      scoring:\n          TestIntList: 80\n          TestArithmetic: 16\n          TestDebugExercise: 32\n      max_points: 128\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkeley-cs61b%2Fbsag-jh61b","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberkeley-cs61b%2Fbsag-jh61b","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkeley-cs61b%2Fbsag-jh61b/lists"}