0.0.193 • Published 7 years ago

@reggi/command v0.0.193

Weekly downloads
36
License
-
Repository
github
Last release
7 years ago

@reggi/command

npm i @reggi/command

Why

I struggled with writing unit tests for my CLI tools. I tried to build out ways of mocking the process variable completley. I have tried every npm module that attempts to mock stido correctly, (the only one that does a good job is TylorS/stdio-mock. But even when stdio is mocked jest still had issues when an actual process.exit would be called. The main way to mock that is to overwrite process. Rather then doing that I've gone in the opposite direction with this:

const command = (m, fn) => {
  if (require.main === m) {
    return fn(process)
  } else {
    return fn
  }
}

This is a simple way to wrap any function that uses process. What this conditional does is this:

  • if it is required / imported the function is returned
  • if it is run through the command line the function is executed and process is passed in.

This allows for this:

export default command(module, ({stdout, exit}) => {
  stdout.write('hello world' + '\n')
  return exit(0)
})

Writing a simple test for this is easy because you can pass in stub / spy functions for the process properties you use (sinon rocks for this).

import {spy} from 'sinon'
import simpleCli from './index'

test('simpleCli', () => {
  const p = {stdout: {write: spy()}, exit: spy()}
  simpleCli(p)
  expect(p.stdout.write.called).toBeTruthy()
  expect(p.exit.called).toBeTruthy()
})
0.0.193

7 years ago

0.0.192

7 years ago

0.0.191

7 years ago

0.0.190

7 years ago

0.0.189

7 years ago

0.0.188

7 years ago

0.0.187

7 years ago

0.0.186

7 years ago

0.0.185

7 years ago

0.0.184

7 years ago

0.0.183

7 years ago

0.0.182

7 years ago

0.0.181

7 years ago

0.0.180

7 years ago

0.0.179

7 years ago

0.0.178

7 years ago

0.0.177

7 years ago

0.0.176

7 years ago

0.0.175

7 years ago

0.0.174

7 years ago

0.0.173

7 years ago

0.0.172

7 years ago

0.0.171

7 years ago

0.0.170

7 years ago

0.0.169

7 years ago

0.0.168

7 years ago

0.0.167

7 years ago

0.0.166

7 years ago

0.0.165

7 years ago

0.0.164

7 years ago

0.0.163

7 years ago

0.0.162

7 years ago

0.0.161

7 years ago

0.0.160

7 years ago

0.0.159

7 years ago

0.0.158

7 years ago

0.0.157

7 years ago

0.0.156

7 years ago

0.0.155

7 years ago

0.0.154

7 years ago

0.0.153

7 years ago

0.0.152

7 years ago

0.0.151

7 years ago

0.0.150

7 years ago

0.0.149

7 years ago

0.0.148

7 years ago

0.0.147

7 years ago

0.0.146

7 years ago

0.0.145

7 years ago

0.0.144

7 years ago

0.0.143

7 years ago

0.0.142

7 years ago

0.0.141

7 years ago

0.0.140

7 years ago

0.0.139

7 years ago

0.0.138

7 years ago

0.0.137

7 years ago

0.0.136

7 years ago

0.0.135

7 years ago

0.0.134

7 years ago

0.0.133

7 years ago

0.0.132

7 years ago

0.0.131

7 years ago

0.0.130

7 years ago

0.0.129

7 years ago

0.0.128

7 years ago

0.0.127

7 years ago

0.0.126

7 years ago

0.0.125

7 years ago

0.0.124

7 years ago

0.0.123

7 years ago

0.0.122

7 years ago

0.0.121

7 years ago

0.0.120

7 years ago

0.0.119

7 years ago

0.0.118

7 years ago

0.0.117

7 years ago

0.0.116

7 years ago

0.0.115

7 years ago

0.0.114

7 years ago

0.0.113

7 years ago

0.0.112

7 years ago

0.0.111

7 years ago

0.0.110

7 years ago

0.0.109

7 years ago

0.0.108

7 years ago

0.0.107

7 years ago

0.0.106

7 years ago

0.0.105

7 years ago

0.0.104

7 years ago

0.0.103

7 years ago

0.0.102

7 years ago

0.0.101

7 years ago

0.0.100

7 years ago

0.0.99

7 years ago

0.0.98

7 years ago

0.0.97

7 years ago

0.0.96

7 years ago

0.0.95

7 years ago

0.0.94

7 years ago

0.0.93

7 years ago

0.0.92

7 years ago

0.0.91

7 years ago

0.0.90

7 years ago

0.0.89

7 years ago

0.0.88

7 years ago

0.0.87

7 years ago

0.0.86

7 years ago

0.0.85

7 years ago

0.0.84

7 years ago

0.0.83

7 years ago

0.0.82

7 years ago

0.0.81

7 years ago

0.0.80

7 years ago

0.0.79

7 years ago

0.0.78

7 years ago

0.0.77

7 years ago

0.0.76

7 years ago

0.0.75

7 years ago

0.0.74

7 years ago

0.0.73

7 years ago

0.0.72

7 years ago

0.0.71

7 years ago

0.0.70

7 years ago

0.0.69

7 years ago

0.0.68

7 years ago

0.0.67

7 years ago

0.0.66

7 years ago

0.0.65

7 years ago

0.0.64

7 years ago

0.0.63

7 years ago

0.0.62

7 years ago

0.0.61

7 years ago

0.0.60

7 years ago

0.0.59

7 years ago

0.0.58

7 years ago

0.0.57

7 years ago

0.0.56

7 years ago

0.0.55

7 years ago

0.0.54

7 years ago

0.0.53

7 years ago

0.0.52

7 years ago

0.0.51

7 years ago

0.0.50

7 years ago

0.0.49

7 years ago

0.0.48

7 years ago

0.0.47

7 years ago

0.0.46

7 years ago

0.0.45

7 years ago

0.0.44

7 years ago

0.0.43

7 years ago

0.0.42

7 years ago

0.0.41

7 years ago

0.0.40

7 years ago

0.0.39

7 years ago

0.0.38

7 years ago

0.0.37

7 years ago

0.0.36

7 years ago

0.0.35

7 years ago

0.0.34

7 years ago

0.0.33

7 years ago

0.0.32

7 years ago

0.0.31

7 years ago

0.0.30

7 years ago

0.0.29

7 years ago

0.0.28

7 years ago

0.0.27

7 years ago

0.0.26

7 years ago

0.0.24

7 years ago

0.0.23

7 years ago

0.0.22

7 years ago

0.0.17

7 years ago

0.0.16

7 years ago

0.0.10

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago