# How do i test my language

**URL:** <https://racket.discourse.group/t/how-do-i-test-my-language/3739>\
**Category:** Languages\
**Created:** [May 10, 2025, 4:33pm UTC](https://racket.discourse.group/t/how-do-i-test-my-language/3739 "2025-05-10T16:33:01Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mrdev88](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/mrdev88/32/2318_2.png) [@Mrdev88](https://racket.discourse.group/u/Mrdev88)\
**Post date:** [May 10, 2025, 4:33pm UTC](https://racket.discourse.group/t/how-do-i-test-my-language/3739/1 "2025-05-10T16:33:01Z")

</div>

I made a language in racket and i don't know how to test it

Here's my directory:

langtest/  
lang/  
reader.rkt  
main.rkt

---

<div class="post-metadata">

**Author:** ![bakgatviooldoos](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/bakgatviooldoos/32/1381_2.png) [@bakgatviooldoos](https://racket.discourse.group/u/bakgatviooldoos)\
**Post date:** [May 10, 2025, 11:00pm UTC](https://racket.discourse.group/t/how-do-i-test-my-language/3739/2 "2025-05-10T23:00:32Z")

</div>

Hi, @Mrdev88.

I am still learning how to test effectively myself, but a method I have found to be quite helpful, is to go and look at what others have done.

As an example, I am currently interested in reader macros myself, so I went and looked up some of the sources for meta-languages (which is related but unimportant, really).

[AlexKnauth/exact-decimal-lang: a racket lang-extension that reads decimals as exact rationals by default](https://github.com/AlexKnauth/exact-decimal-lang)

You'll see in @AlexKnauth's setup there, the tests live in a similar place to where they usually would in a Racket package, i.e. their own little directory, called for argument's sake, `tests`.

I hope this helps. Kudos on writing your own language! Be sure to share if you do get it working.

---

<div class="post-metadata">

**Author:** ![Mrdev88](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/mrdev88/32/2318_2.png) [@Mrdev88](https://racket.discourse.group/u/Mrdev88)\
**Post date:** [May 12, 2025, 4:22pm UTC](https://racket.discourse.group/t/how-do-i-test-my-language/3739/3 "2025-05-12T16:22:21Z")

</div>

I tried installing it to test it out but i got this error:

> **Error**
>
> ```scheme
> lang/reader.rkt:7:1: module-reader: unbound identifier
> in: module-reader
> compilation context...:
> /Users/mahdiruiz1/Documents/DrRacket/circlecode/lang/reader.rkt
> location...:
> lang/reader.rkt:7:1
> context...:
> /Applications/Racket v8.16/collects/compiler/private/cm-minimal.rkt:700:0: compile-zo*
> /Applications/Racket v8.16/collects/compiler/private/cm-minimal.rkt:634:0: compile-zo*/cross-compile
> /Applications/Racket v8.16/collects/compiler/private/cm-minimal.rkt:450:15
> /Applications/Racket v8.16/collects/compiler/private/cm-minimal.rkt:436:12: build
> /Applications/Racket v8.16/collects/compiler/private/cm-minimal.rkt:407:0: maybe-compile-zo
> /Applications/Racket v8.16/collects/compiler/private/cm-minimal.rkt:210:0: compile-root
> /Applications/Racket v8.16/collects/compiler/private/cm-minimal.rkt:105:4
> 
> ```

Here's my code:

> **Summary**
>
> ```scheme
> main.rkt:
> 
> #lang racket
> 
> (provide (all-defined-out))
> (require (for-syntax syntax/parse))
> 
> (define-syntax (begin-program stx)
> (syntax-parse stx
> [(_ body ...)
> #'(begin body ...)]))
> 
> (provide (rename-out [begin-program #%module-begin]))
> 
> ```
> 
> ```scheme
> reader.rkt:
> 
> #lang racket
> 
> (require syntax/module-reader)
> 
> (provide (all-from-out syntax/module-reader))
> 
> (module-reader "langtest/main")
> 
> ```

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [May 12, 2025, 4:54pm UTC](https://racket.discourse.group/t/how-do-i-test-my-language/3739/4 "2025-05-12T16:54:57Z")

</div>

> [@Mrdev88](#):
>
> ```scheme
> lang/reader.rkt:7:1: module-reader: unbound identifier
> in: module-reader
> 
> ```

The error:

```scheme
lang/reader.rkt:7:1: module-reader: unbound identifier
  in: module-reader

```

says that on line 7 column 1 there is an identifier `module-reader` that is unbound.

In your code we see:

```
(module-reader "langtest/main")

```

Checking the docs for `syntax/module-reader`:

```
https://docs.racket-lang.org/syntax/reader-helpers.html#%28part._module-reader%29

```

we see no export named `module-reader`.
