diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyTaskManager.java b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyTaskManager.java index 8213a2bc4728..f2af92b87b69 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyTaskManager.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyTaskManager.java @@ -46,6 +46,7 @@ public class StudyTaskManager implements PersistentStateComponent, Dumb public boolean myShouldUseJavaFx = StudyUtils.hasJavaFx(); private StudyToolWindow.StudyToolWindowMode myToolWindowMode = StudyToolWindow.StudyToolWindowMode.TEXT; private boolean myTurnEditingMode = false; + private boolean myEnableTestingFromSamples = true; @Transient private final Project myProject; @@ -202,4 +203,12 @@ public class StudyTaskManager implements PersistentStateComponent, Dumb public void setUser(@NotNull final StepicUser user) { myUser = user; } + + public boolean isEnableTestingFromSamples() { + return myEnableTestingFromSamples; + } + + public void setEnableTestingFromSamples(boolean enableTestingFromSamples) { + myEnableTestingFromSamples = enableTestingFromSamples; + } } diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java b/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java index 4557795ead31..4db6a2669043 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java @@ -130,7 +130,12 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun private void checkForAdaptiveCourse(ProgressIndicator indicator) { final StudyTestsOutputParser.TestsOutput testOutput = getTestOutput(indicator); if (testOutput != null) { - if (testOutput.isSuccess()) { + // As tests in adaptive courses are created from + // samples and stored in task, to disable it we should ignore local testing results + if (StudyTaskManager.getInstance(myProject).isEnableTestingFromSamples() && !testOutput.isSuccess()) { + onTaskFailed(testOutput.getMessage()); + } + else { final Pair pair = EduAdaptiveStepicConnector.checkTask(myProject, myTask); if (pair != null && !(!pair.getFirst() && pair.getSecond().isEmpty())) { if (pair.getFirst()) { @@ -152,9 +157,6 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun myProject)); } } - else { - onTaskFailed(testOutput.getMessage()); - } } } diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.form b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.form index 86fa610cb50e..05a78d765af9 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.form +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.form @@ -1,9 +1,9 @@
- + - + @@ -16,13 +16,13 @@ - + - + @@ -64,6 +64,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java index 9b48578db82a..8039f880fb55 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java @@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.DocumentAdapter; +import com.intellij.ui.components.JBCheckBox; import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.StudyUtils; import com.jetbrains.edu.learning.settings.StudyOptionsProvider; @@ -26,6 +27,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.Document; @@ -39,6 +42,7 @@ public class StepicStudyOptions implements StudyOptionsProvider { private JTextField myLoginTextField; private JPasswordField myPasswordField; private JPanel myPane; + private JBCheckBox myEnableTestingFromSamples; private boolean myCredentialsModified; @@ -72,6 +76,13 @@ public class StepicStudyOptions implements StudyOptionsProvider { public void focusLost(FocusEvent e) { } }); + + myEnableTestingFromSamples.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + myCredentialsModified = true; + } + }); reset(); } @@ -107,11 +118,13 @@ public class StepicStudyOptions implements StudyOptionsProvider { public void reset() { Project project = StudyUtils.getStudyProject(); if (project != null) { - final StepicUser user = StudyTaskManager.getInstance(project).getUser(); + StudyTaskManager taskManager = StudyTaskManager.getInstance(project); + final StepicUser user = taskManager.getUser(); if (user != null) { setLogin(user.getEmail()); setPassword(DEFAULT_PASSWORD_TEXT); } + myEnableTestingFromSamples.setSelected(taskManager.isEnableTestingFromSamples()); resetCredentialsModification(); } else { @@ -129,7 +142,9 @@ public class StepicStudyOptions implements StudyOptionsProvider { if (myCredentialsModified) { final Project project = StudyUtils.getStudyProject(); if (project != null) { - final StepicUser user = StudyTaskManager.getInstance(project).getUser(); + StudyTaskManager taskManager = StudyTaskManager.getInstance(project); + taskManager.setEnableTestingFromSamples(myEnableTestingFromSamples.isSelected()); + final StepicUser user = taskManager.getUser(); user.setEmail(getLogin()); user.setPassword(getPassword()); if (!StringUtil.isEmptyOrSpaces(getLogin()) && !StringUtil.isEmptyOrSpaces(getPassword())) {