Update template from monorepo #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Autograding | |
| on: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| env: | |
| STUDENT_CORPUS_SEED: ${{ github.actor }} | |
| jobs: | |
| grade: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Install dependencies | |
| run: pip install -r requirements.txt | |
| - name: Run student code | |
| run: python app/main.py | |
| continue-on-error: true | |
| - name: Clone autograder | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: Tech901/ai102-autograder-tests | |
| token: ${{ secrets.AUTOGRADER_PAT }} | |
| path: .autograder | |
| # --- 27 tests, 100 points --- | |
| - name: "test_student_modified_select_service" | |
| id: test1 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_student_modified_select_service" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_student_modified_select_service -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_student_modified_estimate_cost" | |
| id: test2 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_student_modified_estimate_cost" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_student_modified_estimate_cost -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_design_has_architecture" | |
| id: test3 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_design_has_architecture" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_design_has_architecture -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_design_is_valid_json" | |
| id: test4 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_design_is_valid_json" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_design_is_valid_json -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_correct_services_per_department" | |
| id: test5 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_correct_services_per_department" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_correct_services_per_department -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_unique_justifications" | |
| id: test6 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_unique_justifications" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_unique_justifications -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_rai_not_empty" | |
| id: test7 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_rai_not_empty" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_rai_not_empty -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_min_distinct_services" | |
| id: test8 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_min_distinct_services" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_min_distinct_services -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_valid_sdk_names" | |
| id: test9 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_valid_sdk_names" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_valid_sdk_names -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_auth_model_mentioned" | |
| id: test10 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_auth_model_mentioned" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_auth_model_mentioned -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_comprehensive_audit_fields" | |
| id: test11 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_comprehensive_audit_fields" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_comprehensive_audit_fields -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_auth_comparison_mentions_three_models" | |
| id: test12 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_auth_comparison_mentions_three_models" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_auth_comparison_mentions_three_models -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_four_services_validated" | |
| id: test13 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_four_services_validated" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_four_services_validated -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_exact_math_311" | |
| id: test14 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_exact_math_311" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_exact_math_311 -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_exact_math_public_works" | |
| id: test15 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_exact_math_public_works" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_exact_math_public_works -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_budget_flag_logic" | |
| id: test16 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_budget_flag_logic" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_budget_flag_logic -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_total_equals_sum" | |
| id: test17 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_total_equals_sum" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_total_equals_sum -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_metric_names_valid" | |
| id: test18 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_metric_names_valid" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_metric_names_valid -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_alert_rules_have_condition_and_action" | |
| id: test19 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_alert_rules_have_condition_and_action" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_alert_rules_have_condition_and_action -v --tb=short" | |
| timeout: "5" | |
| max-score: "4" | |
| - name: "test_result_json_is_valid_json" | |
| id: test20 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_result_json_is_valid_json" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_result_json_is_valid_json -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: "test_no_leaked_endpoints" | |
| id: test21 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_no_leaked_endpoints" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_no_leaked_endpoints -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: "test_no_hardcoded_secrets_ast" | |
| id: test22 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_no_hardcoded_secrets_ast" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_no_hardcoded_secrets_ast -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: "test_pricing_version_present" | |
| id: test23 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_pricing_version_present" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_pricing_version_present -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: "test_justification_minimum_length" | |
| id: test24 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_justification_minimum_length" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_justification_minimum_length -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: "test_validation_has_required_fields" | |
| id: test25 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_validation_has_required_fields" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_validation_has_required_fields -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: "test_shared_resources_complete" | |
| id: test26 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_shared_resources_complete" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_shared_resources_complete -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: "test_alternative_differs_from_primary" | |
| id: test27 | |
| uses: classroom-resources/autograding-command-grader@v1 | |
| with: | |
| test-name: "test_alternative_differs_from_primary" | |
| command: "python -m pytest .autograder/activity02-architect-platform/test_hidden.py::test_alternative_differs_from_primary -v --tb=short" | |
| timeout: "5" | |
| max-score: "3" | |
| - name: Autograding Reporter | |
| uses: classroom-resources/autograding-grading-reporter@v1 | |
| env: | |
| TEST1_RESULTS: "${{ steps.test1.outputs.result }}" | |
| TEST2_RESULTS: "${{ steps.test2.outputs.result }}" | |
| TEST3_RESULTS: "${{ steps.test3.outputs.result }}" | |
| TEST4_RESULTS: "${{ steps.test4.outputs.result }}" | |
| TEST5_RESULTS: "${{ steps.test5.outputs.result }}" | |
| TEST6_RESULTS: "${{ steps.test6.outputs.result }}" | |
| TEST7_RESULTS: "${{ steps.test7.outputs.result }}" | |
| TEST8_RESULTS: "${{ steps.test8.outputs.result }}" | |
| TEST9_RESULTS: "${{ steps.test9.outputs.result }}" | |
| TEST10_RESULTS: "${{ steps.test10.outputs.result }}" | |
| TEST11_RESULTS: "${{ steps.test11.outputs.result }}" | |
| TEST12_RESULTS: "${{ steps.test12.outputs.result }}" | |
| TEST13_RESULTS: "${{ steps.test13.outputs.result }}" | |
| TEST14_RESULTS: "${{ steps.test14.outputs.result }}" | |
| TEST15_RESULTS: "${{ steps.test15.outputs.result }}" | |
| TEST16_RESULTS: "${{ steps.test16.outputs.result }}" | |
| TEST17_RESULTS: "${{ steps.test17.outputs.result }}" | |
| TEST18_RESULTS: "${{ steps.test18.outputs.result }}" | |
| TEST19_RESULTS: "${{ steps.test19.outputs.result }}" | |
| TEST20_RESULTS: "${{ steps.test20.outputs.result }}" | |
| TEST21_RESULTS: "${{ steps.test21.outputs.result }}" | |
| TEST22_RESULTS: "${{ steps.test22.outputs.result }}" | |
| TEST23_RESULTS: "${{ steps.test23.outputs.result }}" | |
| TEST24_RESULTS: "${{ steps.test24.outputs.result }}" | |
| TEST25_RESULTS: "${{ steps.test25.outputs.result }}" | |
| TEST26_RESULTS: "${{ steps.test26.outputs.result }}" | |
| TEST27_RESULTS: "${{ steps.test27.outputs.result }}" | |
| with: | |
| runners: test1,test2,test3,test4,test5,test6,test7,test8,test9,test10,test11,test12,test13,test14,test15,test16,test17,test18,test19,test20,test21,test22,test23,test24,test25,test26,test27 |