GithubHelp home page GithubHelp logo

debug's Introduction

debug

testing godoc

A small library to assist with testing.

How To

Enable the debug library by setting the ENVRIONMENT variable to something other than production (case insensitive):

  > export ENVRIONMENT=development

Add a debug block to your production implementation:

package main

import (
	"context"

	"github.com/draytonbrown/debug"

)

func Code(ctx context.Context) string {
	//...
	var code string
	_ := debug.Custom(ctx, "debug-id", func() error {
		// Production implementation...
		code = "production-code"
		return nil
	}, func(c *debug.Command[any]) error {
		// Testing implementation...
		code = c.Payload.(string)
		return nil
	})
	//...
	return code
}

Use a debug code in your tests to switch between production and debug implementations:

package main

import (
	"context"
	"testing"

	"github.com/draytonbrown/debug"
)

func TestCode(t *testing.T) {
	ctx := context.Background()
	if c := Code(ctx); c != "production-code" {
		t.Errorf("wanted: production-code, got: %v", c)
	}

	ctx, _ = debug.Context(ctx, "debug-id", "debug-code")
	if c := Code(ctx); c != "debug-code" {
		t.Errorf("wanted: debug-code, got: %v", c)
	}
}

See the tests for more examples

Thanks

This project was inspired by Laurence Withers

debug's People

Contributors

draytonbrown avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.