コード例 #1
0
    def check_assignment_mock(self) -> List[Check]:
        def assert_executed_after_baseline() -> CheckResult:
            self.assertEqual(self.count, len(self.baseline_assignments))

            return CheckResult(True, '', '', '')

        return [Check('', assert_executed_after_baseline)]
コード例 #2
0
    def execution_mock(self, file, success_criteria, msg) -> List[Check]:
        def execution() -> CheckResult:
            if 'invalid' not in file:
                return_value, out, err = compile_with_gcc_and_run(
                    'assignments/' + self.assignment + '/' + file)

                msg = 'compiling ' + file + ' with gcc and running the programming gives the expected result'

                if type(success_criteria) is int:
                    self.assertNotIn(
                        success_criteria, EXITCODE_ERROR_RANGE,
                        'The hypster execution result value can also be an Selfie error code'
                    )

                    self.assertEqual(success_criteria, return_value, msg)

                elif type(success_criteria) is str:
                    filtered = filter_status_messages(out)

                    self.assertIs(filtered, success_criteria, msg)

                elif callable(success_criteria):
                    self.assertTrue(
                        success_criteria(return_value, out)[0], msg)
                else:
                    self.assertTrue(False)

            return CheckResult(True, "", "", "")

        return [Check("execution_mock", execution)]
コード例 #3
0
    def check_baseline_assignment_mock(self, n_th_baseline) -> List[Check]:
        def assert_order(i) -> CheckResult:
            self.assertEqual(self.count, i)
            self.count = self.count + 1

            return CheckResult(True, '', '', '')

        return [Check('', lambda: assert_order(n_th_baseline))]
コード例 #4
0
def execute_with_output(check: Check) -> CheckResult:
    print_processing(check.msg)

    try:
        result = check.execute()
    finally:
        stop_processing_spinner()

    if result.result == result.should_succeed:
        print_passed(check.msg)
    else:
        print_failed(check.msg, result.warning, result.output, result.command)

    return result
コード例 #5
0
    def compilable_mock(self, file, msg, should_succeed=True) -> List[Check]:
        def execute() -> CheckResult:
            file_path = 'assignments/' + self.assignment + '/' + file

            is_compilable = self.is_compilable(file)

            self.assertEqual(is_compilable, should_succeed)

            if not is_compilable:
                self.assertNotEqual(
                    compile_with_gcc(file_path), 0,
                    'compiling ' + file + ' with gcc leads to an error')
            else:
                self.assertEqual(
                    compile_with_gcc(file_path), 0,
                    'compiling ' + file + ' with gcc leads to no error')
            return CheckResult(True, "unittest", "", "")

        return [Check("compilable_check_mock", execute)]