aboutsummaryrefslogtreecommitdiffstats
path: root/src/exercises
diff options
context:
space:
mode:
Diffstat (limited to 'src/exercises')
-rw-r--r--src/exercises/exercise.go38
-rw-r--r--src/exercises/exercises_suite_test.go53
-rw-r--r--src/exercises/list.go44
-rw-r--r--src/exercises/runner.go29
4 files changed, 0 insertions, 164 deletions
diff --git a/src/exercises/exercise.go b/src/exercises/exercise.go
deleted file mode 100644
index 22700c8..0000000
--- a/src/exercises/exercise.go
+++ /dev/null
@@ -1,38 +0,0 @@
-package exercises
-
-import (
- "os"
- "regexp"
-)
-
-var notDoneRegex = regexp.MustCompile(`(?m)^\s*///?\s*I\s+AM\s+NOT\s+DONE`)
-
-type Exercise struct {
- Name string
- Path string
- Mode string
- Hint string
-}
-
-func (e Exercise) State() State {
- data, err := os.ReadFile(e.Path)
- if err != nil {
- return Pending
- }
-
- if notDoneRegex.Match(data) {
- return Pending
- }
- return Done
-}
-
-type State int
-
-const (
- Pending State = iota + 1
- Done
-)
-
-func (s State) String() string {
- return [...]string{"Pending", "Done"}[s-1]
-}
diff --git a/src/exercises/exercises_suite_test.go b/src/exercises/exercises_suite_test.go
deleted file mode 100644
index c916326..0000000
--- a/src/exercises/exercises_suite_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-package exercises_test
-
-import (
- "os"
- "testing"
-
- "github.com/mauricioabreu/golings/src/exercises"
- . "github.com/onsi/ginkgo/v2"
- . "github.com/onsi/gomega"
-)
-
-func TestExercises(t *testing.T) {
- RegisterFailHandler(Fail)
- RunSpecs(t, "Exercises Suite")
-}
-
-var _ = Describe("Exercises", func() {
- Describe("Checking exercise state", func() {
- When("'I AM NOT DONE' comment is still there", func() {
- It("has the Pending state", func() {
- file, err := os.CreateTemp("/tmp", "exercise*.go")
- file.Write([]byte(`// exercise1.go
- // I AM NOT DONE
- package main
-
- func main() {
-
- }
- `))
- Expect(err).To(BeNil())
-
- defer os.Remove(file.Name())
-
- ex := exercises.Exercise{Path: file.Name()}
-
- Expect(ex.State()).To(Equal(exercises.Pending))
- })
- })
-
- When("'I AM NOT DONE' comment is not there", func() {
- It("has the Done state", func() {
- file, err := os.CreateTemp("/tmp", "exercise*.go")
- Expect(err).To(BeNil())
-
- defer os.Remove(file.Name())
-
- ex := exercises.Exercise{Path: file.Name()}
-
- Expect(ex.State()).To(Equal(exercises.Done))
- })
- })
- })
-})
diff --git a/src/exercises/list.go b/src/exercises/list.go
deleted file mode 100644
index c0c7261..0000000
--- a/src/exercises/list.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package exercises
-
-import (
- "errors"
- "os"
-
- "github.com/pelletier/go-toml/v2"
-)
-
-var ErrExerciseNotFound = errors.New("exercise not found")
-
-type Info struct {
- Exercises []Exercise
-}
-
-func List() ([]Exercise, error) {
- var info Info
-
- data, err := os.ReadFile("info.toml")
- if err != nil {
- return info.Exercises, err
- }
-
- if err := toml.Unmarshal(data, &info); err != nil {
- return info.Exercises, err
- }
-
- return info.Exercises, nil
-}
-
-func Find(exercise string) (Exercise, error) {
- exs, err := List()
- if err != nil {
- return Exercise{}, err
- }
-
- for _, ex := range exs {
- if ex.Name == exercise {
- return ex, nil
- }
- }
-
- return Exercise{}, ErrExerciseNotFound
-}
diff --git a/src/exercises/runner.go b/src/exercises/runner.go
deleted file mode 100644
index d034093..0000000
--- a/src/exercises/runner.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package exercises
-
-import (
- "bytes"
- "fmt"
- "os/exec"
-)
-
-type Result struct {
- Exercise Exercise
- Out string
- Err string
-}
-
-func Run(name string) (Result, error) {
- exercise, err := Find(name)
- if err != nil {
- return Result{}, err
- }
-
- cmd := exec.Command("go", "run", fmt.Sprintf("./%s", exercise.Path))
- var stdout, stderr bytes.Buffer
- cmd.Stdout = &stdout
- cmd.Stderr = &stderr
-
- err = cmd.Run()
-
- return Result{Exercise: exercise, Out: stdout.String(), Err: stderr.String()}, err
-}