Skip to content

Abstract integration helpers #53

@tangrufus

Description

@tangrufus

Summary

Abstract integration helpers. Something like:

- bin := os.Getenv("TEST_BINARY") 
-  if bin == "" { 
-  	t.Error("TEST_BINARY not supplied") 
-  } 
-  if _, err := os.Stat(bin); os.IsNotExist(err) { 
-  	t.Error(bin + "not exist") 
-  } 
  
-   dummy := os.Getenv("TEST_DUMMY")
- 	if dummy == "" {
- 		t.Error("TEST_DUMMY not supplied")
- 	}

+ bin, dummy = integrationTestHelper.prepareEnvironment()

  // after the tests

+ integrationTestHelper.cleanup(dummy)

integrationTestHelper.prepareEnvironment:

  1. Check environment variables are supplied
  2. Clone the dummy files into a temporary location (to be deleted by integrationTestHelper.cleanup)
  3. return the paths, i.e: bin, dummy

Motivation

Cleaning up becomes problematic when not running tests with docker.

Cloning the dummy files into temporary locations ensure integration tests don't interfere with each others, so that developers don't need to clean up dummy

Cons:

  • Tests take longer to run. But I think this is a reasonable trade-off
  • premature abstraction is evil

Additional context

bin := os.Getenv("TEST_BINARY")
if bin == "" {
t.Error("TEST_BINARY not supplied")
}
if _, err := os.Stat(bin); os.IsNotExist(err) {
t.Error(bin + "not exist")
}
dummy := os.Getenv("TEST_DUMMY")
if dummy == "" {
t.Error("TEST_DUMMY not supplied")
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions