1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
#!/usr/bin/make -f
include /usr/share/dpkg/pkg-info.mk
# generate documentation unless nodoc requested
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
DOCS = README.html README.txt
CHANGELOGS = CHANGELOG.html CHANGELOG.txt
MANPAGES = debian-man/eslint.1
endif
ESLINT = bin/eslint.js
MOCHA = mocha --no-timeout
MOCHA_TAP := $(MOCHA) --reporter tap
# normalize output with TAP where possible unless terse requested
ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
ESLINT += --format tap
MOCHA += --reporter tap
else
ESLINT += --format unix
MOCHA += --reporter dot --no-colors
endif
# Work around missing Node.js module table
MOCHA_SKIP += tests/lib/formatters/table.js
# Work around missing Node.js module eslump
MOCHA_SKIP += tests/tools/eslint-fuzzer.js
# Work around TypeError: Cannot read property 'create' of undefined
MOCHA_SKIP += \
tests/lib/cli.js \
tests/lib/cli-engine.js \
tests/lib/util/source-code.js \
# Work around Syntax error in selector
MOCHA_ISOLATE += \
tests/bin/eslint.js
# Work around misc. breakage
MOCHA_ISOLATE += \
tests/lib/config.js \
tests/lib/config/config-file.js \
tests/lib/config/config-initializer.js \
tests/lib/formatters/codeframe.js \
tests/lib/formatters/stylish.js \
tests/lib/linter.js \
tests/lib/rules/camelcase.js \
tests/lib/rules/id-length.js \
tests/lib/rules/id-match.js \
tests/lib/rules/require-await.js \
tests/lib/util/glob-utils.js \
tests/lib/util/ignored-paths.js \
tests/lib/util/lint-result-cache.js \
tests/lib/util/node-event-generator.js \
tests/lib/util/npm-utils.js \
tests/lib/util/source-code-utils.js
# generate manpage with help2man from --help option of Node.js script
_mkman = NODE_PATH=lib \
help2man $(patsubst %,--name %,$3) --no-info --output $2 $1 \
|| { NODE_PATH=lib $1 --help; false; }
%:
dh $@
%.html: %.md
pandoc --from gfm-raw_html --to html --standalone --output $@ $<
%.txt: %.md
pandoc --from gfm-raw_html --to plain --output $@ $<
# strip extension from executable
debian-man/eslint:
mkdir --parents $(dir $@)
cp --force bin/eslint.js $@
# build manpage
debian-man/eslint.1: %.1: %
$(call _mkman, $<, $@, \
AST-based pattern checker and linting utility for JavaScript)
override_dh_clean:
dh_clean -- $(DOCS) $(CHANGELOGS)
execute_before_dh_auto_build:
node tools/update-unicode-utils.js
override_dh_auto_build: $(DOCS) $(CHANGELOGS) $(MANPAGES)
# TODO: drop symlink when possible
override_dh_auto_test:
ln --force --symbolic --no-target-directory internal-rules \
tools/eslint-plugin-internal-rules
# NODE_PATH=packages:tools $(ESLINT) --report-unused-disable-directives Makefile.js
# find conf -type f -name '*.json' \
# -exec jsonlint {} +
# find docs -type f -name '*.md' \
# -exec lintMarkdown {} +
NODE_PATH=packages:tools $(ESLINT) --report-unused-disable-directives \
$(patsubst %,--ignore-pattern '%',$(ESLINT_SKIP)) \
lib conf bin tests/bin tests/lib tests/tools
NODE_PATH=packages:tools $(MOCHA) \
$(patsubst %,--exclude %,$(MOCHA_SKIP) $(MOCHA_ISOLATE)) \
'tests/{bin,lib,tools}/**/*.js'
NODE_PATH=packages:tools $(MOCHA_TAP) $(MOCHA_ISOLATE) | debian/tap-todo \
'^bin/eslint.js handling crashes prints the error message to stderr in the event of a crash$$' \
'^bin/eslint.js handling crashes prints the error message exactly once to stderr in the event of a crash$$' \
'^bin/eslint.js emitting a warning for ecmaFeatures does not emit a warning when it does not find an ecmaFeatures option$$' \
'^bin/eslint.js emitting a warning for ecmaFeatures emits a warning when it finds an ecmaFeatures option$$' \
'^Config "before each" hook for "should not modify baseConfig when format is specified"$$' \
'^Config "after each" hook for "should not modify baseConfig when format is specified"$$' \
'^ConfigFile write\(\) "before each" hook for "should make sure js config files match linting rules"$$' \
'^ConfigFile write\(\) "after each" hook for "should make sure js config files match linting rules"$$' \
'^configInitializer "after each" hook for "should create default config"$$' \
'^formatter:codeframe "before each" hook for "should return nothing"$$' \
'^formatter:codeframe "after each" hook for "should return nothing"$$' \
'^formatter:stylish "before each" hook for "should not return message"$$' \
'^formatter:stylish "after each" hook for "should not return message"$$' \
'^Linter "before each" hook for "should return same version as instance property"$$' \
'^Linter "after each" hook for "should return same version as instance property"$$' \
'^camelcase valid var \{ category_id = 1 \} = query;$$' \
'^camelcase invalid var \{ category_id = 1 \} = query;$$' \
'^camelcase invalid var \{ category_id \} = query;$$' \
'^camelcase invalid function foo\(\{ no_camelcased = .default value. \}\) \{\};$$' \
'^camelcase invalid const no_camelcased = 0; function foo\(\{ camelcased_value = no_camelcased\}\) \{\}$$' \
'^camelcase invalid const \{ no_camelcased = false \} = bar;$$' \
'^camelcase invalid const \{ no_camelcased = foo_bar \} = bar;$$' \
'^id-length invalid var \{ x\} = \{\};$$' \
'^id-match valid var \{ category_id = 1 \} = query;$$' \
'^id-match invalid var \{ category_id \} = query;$$' \
'^id-match invalid var \{ category_id = 1 \} = query;$$' \
'^id-match invalid function foo\(\{ no_camelcased \}\) \{\};$$' \
'^id-match invalid function foo\(\{ no_camelcased = .default value. \}\) \{\};$$' \
'^id-match invalid const no_camelcased = 0; function foo\(\{ camelcased_value = no_camelcased \}\) \{\}$$' \
'^id-match invalid const \{ no_camelcased = false \} = bar;$$' \
'^require-await valid async function foo\(\) \{ await async \(\) => \{ await doSomething\(\) \} \}$$' \
'^require-await invalid async function foo\(\) \{ await async \(\) => \{ doSomething\(\) \} \}$$' \
'^NodeEventGenerator parsing an invalid selector throws a useful error$$' \
'^IgnoredPaths contains should return false for files outside of the cwd \(with no ignore file provided\)$$' \
'^IgnoredPaths getIgnoredFoldersGlobChecker should ignore default folders when there is no eslintignore file$$' \
'^LintResultCache "before all" hook in "LintResultCache"$$' \
'^globUtils listFilesToProcess\(\) should return an ignored file, if ignore option is turned off$$' \
'^npmUtils "before each" hook for "should not find a direct dependency of the project"$$' \
'^npmUtils "after each" hook for "should not find a direct dependency of the project"$$' \
'^SourceCodeUtil "after each" hook for "should handle single string filename arguments"$$'
# avoid installing stray config files
override_dh_install:
dh_install -X.eslintrc.yml
override_dh_installdocs:
dh_installdocs --all -- $(DOCS)
override_dh_installchangelogs:
dh_installchangelogs -- $(CHANGELOGS)
# unset bogus executable bits
execute_after_dh_fixperms:
chmod --recursive a-x,a+X -- debian/*/usr/share/nodejs
chmod --recursive a+x -- debian/*/usr/share/nodejs/eslint/bin/*
override_dh_gencontrol:
dh_gencontrol -- -V"types:Version=$(shell jq --raw-output .version < Xtypes/package.json)~$(DEB_VERSION)" \
-V"config:Version=$(shell jq --raw-output .version < packages/eslint-config-eslint/package.json)~$(DEB_VERSION)"
|