Add Emacs Lisp track
This commit is contained in:
parent
4dbde081a0
commit
7329498db5
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"authors": [
|
||||
"canweriotnow"
|
||||
],
|
||||
"contributors": [
|
||||
"benreyn",
|
||||
"konrad",
|
||||
"kytrinyx",
|
||||
"vermiculus"
|
||||
],
|
||||
"files": {
|
||||
"solution": [
|
||||
"hello-world.el"
|
||||
],
|
||||
"test": [
|
||||
"hello-world-test.el"
|
||||
],
|
||||
"example": [
|
||||
".meta/example.el"
|
||||
]
|
||||
},
|
||||
"blurb": "The classical introductory exercise. Just say \"Hello, World!\".",
|
||||
"source": "This is an exercise to introduce users to using Exercism",
|
||||
"source_url": "https://en.wikipedia.org/wiki/%22Hello,_world!%22_program"
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{"track":"emacs-lisp","exercise":"hello-world","id":"cc423d14697547f3bb31a57ef9da699d","url":"https://exercism.org/tracks/emacs-lisp/exercises/hello-world","handle":"Nebucatnetzer","is_requester":true,"auto_approve":false}
|
|
@ -0,0 +1,82 @@
|
|||
# Help
|
||||
|
||||
## Running the tests
|
||||
|
||||
Tests can be run several ways.
|
||||
|
||||
## Interactively from within Emacs
|
||||
|
||||
1. Open test file, `M-x eval-buffer RET`
|
||||
2. Interactively and individually, with `M-x ert RET test-name RET`
|
||||
3. Interactively and all at once, with `M-x ert RET t RET`
|
||||
Note that this will run all tests currently loaded into Emacs!
|
||||
4. Rerun `M-x eval-buffer RET` before testing whenever you've made changes
|
||||
|
||||
To only execute the tests in the current buffer you can add this to your `.emacs` or `init.el`:
|
||||
|
||||
```elisp
|
||||
(defun my-eval-and-run-all-tests-in-buffer ()
|
||||
"Deletes all loaded tests from the runtime, evaluates the current buffer and runs all loaded tests with ert."
|
||||
(interactive)
|
||||
(ert-delete-all-tests)
|
||||
(eval-buffer)
|
||||
(ert 't))
|
||||
```
|
||||
|
||||
After restarting Emacs:
|
||||
|
||||
1. Open test file
|
||||
2. `M-x my-eval-and-run-all-tests-in-buffer RET`
|
||||
|
||||
## From the terminal
|
||||
|
||||
To run run all tests from the terminal, in batch mode, execute `emacs -batch -l ert -l *-test.el -f ert-run-tests-batch-and-exit`
|
||||
|
||||
The above command is a bit unwieldy, so if you like:
|
||||
|
||||
1. Create a file on your `$PATH` (probably in `~/bin`) called `ert-run`
|
||||
2. The contents of the file should be as follows:
|
||||
```sh
|
||||
#!/usr/bin/env sh
|
||||
emacs -batch -l ert -l $1 -f ert-run-tests-batch-and-exit
|
||||
```
|
||||
3. Make the file executable with `chmod +x ert-run`
|
||||
|
||||
You should be able to simply call `ert-run *-test.el` and run the tests
|
||||
in batch mode.
|
||||
|
||||
## Other options
|
||||
|
||||
Other options can be found in the docs, `C-h i m ert RET`.
|
||||
|
||||
## Submitting your solution
|
||||
|
||||
You can submit your solution using the `exercism submit hello-world.el` command.
|
||||
This command will upload your solution to the Exercism website and print the solution page's URL.
|
||||
|
||||
It's possible to submit an incomplete solution which allows you to:
|
||||
|
||||
- See how others have completed the exercise
|
||||
- Request help from a mentor
|
||||
|
||||
## Need to get help?
|
||||
|
||||
If you'd like help solving the exercise, check the following pages:
|
||||
|
||||
- The [Emacs Lisp track's documentation](https://exercism.org/docs/tracks/emacs-lisp)
|
||||
- [Exercism's programming category on the forum](https://forum.exercism.org/c/programming/5)
|
||||
- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs)
|
||||
|
||||
Should those resources not suffice, you could submit your (incomplete) solution to request mentoring.
|
||||
|
||||
To get help if you're having trouble, you can use one of the following resources:
|
||||
|
||||
- [The Emacs Wiki](http://emacswiki.org/) is invaluable. Spend lots of time here.
|
||||
- [The Emacs Editor](http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html) is the official manual for GNU Emacs.
|
||||
- IRC - there are [Libera.Chat](https://libera.chat/) channels for `#emacs`, `#org-mode`, and many Emacs
|
||||
packages, and many helpful folks around. And with emacs, IRC is as close as
|
||||
`M-x erc`.
|
||||
- Matrix - on [Matrix](https://matrix.org/) there are rooms for [emacs](https://matrix.to/#/#emacs:matrix.org), [org-mode](https://matrix.to/#/#org-mode:matrix.org), and other Emacs packages.
|
||||
You can [join the Emacs Matrix space](https://matrix.to/#/#emacs-space:matrix.org) to get an overview of the available channels.
|
||||
To join Matrix from within Emacs you can use the [Ement.el](https://github.com/alphapapa/ement.el) package.
|
||||
- [StackOverflow](http://stackoverflow.com/questions/tagged/elisp) and [Emacs StackExchange](https://emacs.stackexchange.com/questions/tagged/elisp) can be used to search for your problem and see if it has been answered already. You can also ask and answer questions.
|
|
@ -0,0 +1,38 @@
|
|||
# Hello World
|
||||
|
||||
Welcome to Hello World on Exercism's Emacs Lisp Track.
|
||||
If you need help running the tests or submitting your code, check out `HELP.md`.
|
||||
|
||||
## Instructions
|
||||
|
||||
The classical introductory exercise.
|
||||
Just say "Hello, World!".
|
||||
|
||||
["Hello, World!"][hello-world] is the traditional first program for beginning programming in a new language or environment.
|
||||
|
||||
The objectives are simple:
|
||||
|
||||
- Modify the provided code so that it produces the string "Hello, World!".
|
||||
- Run the test suite and make sure that it succeeds.
|
||||
- Submit your solution and check it at the website.
|
||||
|
||||
If everything goes well, you will be ready to fetch your first real exercise.
|
||||
|
||||
[hello-world]: https://en.wikipedia.org/wiki/%22Hello,_world!%22_program
|
||||
|
||||
## Source
|
||||
|
||||
### Created by
|
||||
|
||||
- @canweriotnow
|
||||
|
||||
### Contributed to by
|
||||
|
||||
- @benreyn
|
||||
- @konrad
|
||||
- @kytrinyx
|
||||
- @vermiculus
|
||||
|
||||
### Based on
|
||||
|
||||
This is an exercise to introduce users to using Exercism - https://en.wikipedia.org/wiki/%22Hello,_world!%22_program
|
|
@ -0,0 +1,16 @@
|
|||
;;; hello-world-test.el --- Tests for Hello World (exercism) -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Commentary:
|
||||
;; Common test data version: 1.1.0 be3ae66
|
||||
|
||||
;;; Code:
|
||||
|
||||
(load-file "hello-world.el")
|
||||
(declare-function hello "hello-world.el")
|
||||
|
||||
(ert-deftest hello-world-test ()
|
||||
(should (string= (hello) "Hello, World!")))
|
||||
|
||||
(provide 'hello-world-test)
|
||||
|
||||
;;; hello-world-test.el ends here
|
|
@ -0,0 +1,9 @@
|
|||
;;; hello-world.el --- Hello World exercise (exercism) -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
(defun hello ()
|
||||
"Goodbye, Mars!")
|
||||
|
||||
(provide 'hello-world)
|
||||
;;; hello-world.el ends here
|
Loading…
Reference in New Issue