diff --git a/dl-tests.sh b/dl-tests.sh new file mode 100644 index 0000000..776531b --- /dev/null +++ b/dl-tests.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +tag=$(sed -n 's/^Version:\s\(.*\)$/\1/p' ./*.spec | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') +url=$(sed -n 's/^URL:\s\(.*\)$/\1/p' ./*.spec | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') +pkgdir=$(basename $url | sed -s 's/\.git$//') + +echo "tag: $tag" +echo "URL: $url" +echo "pkgdir: $pkgdir" + +set -e + +tmp=$(mktemp -d) + +trap cleanup EXIT +cleanup() { + echo Cleaning up... + set +e + [ -z "$tmp" -o ! -d "$tmp" ] || rm -rf "$tmp" +} + +unset CDPATH +pwd=$(pwd) + +pushd "$tmp" +git clone $url +cd $pkgdir +echo Finding git tag +gittag=$(git show-ref --tags | cut -d' ' -f2 | grep "${tag}$" || git show-ref --tags | cut -d' ' -f2 | sort -Vr | head -n1) +if [ -z $gittag ]; then + gittag=tags/$tag +fi +echo "Git Tag: $gittag" +if [ -d "test" ]; then + git archive --prefix='test/' --format=tar ${gittag}:test/ \ + | bzip2 > "$pwd"/tests-${tag}.tar.bz2 +elif [ -d "tests" ]; then + git archive --prefix='tests/' --format=tar ${gittag}:tests/ \ + | bzip2 > "$pwd"/tests-${tag}.tar.bz2 +elif [ -d "spec" ]; then + git archive --prefix='spec/' --format=tar ${gittag}:spec/ \ + | bzip2 > "$pwd"/tests-${tag}.tar.bz2 +else + echo "No test directory found for tag ${gittag}" +fi +if [ -d "support" ]; then + git archive --prefix='support/' --format=tar ${gittag}:support/ \ + | bzip2 > "$pwd"/support-${tag}.tar.bz2 +fi +if [ -d "fixture" ]; then + git archive --prefix='fixture/' --format=tar ${gittag}:fixture/ \ + | bzip2 > "$pwd"/fixture-${tag}.tar.bz2 +fi +if [ -d "examples" ]; then + git archive --prefix='examples/' --format=tar ${gittag}:examples/ \ + | bzip2 > "$pwd"/examples-${tag}.tar.bz2 +elif [ -d "example" ]; then + git archive --prefix='example/' --format=tar ${gittag}:example/ \ + | bzip2 > "$pwd"/examples-${tag}.tar.bz2 +fi +if [ -d "tasks" ]; then + git archive --prefix='tasks/' --format=tar ${gittag}:tasks/ \ + | bzip2 > "$pwd"/tasks-${tag}.tar.bz2 +fi +if [ -d "docs" ]; then + git archive --prefix='docs/' --format=tar ${gittag}:docs/ \ + | bzip2 > "$pwd"/docs-${tag}.tar.bz2 +elif [ -d "doc" ]; then + git archive --prefix='doc/' --format=tar ${gittag}:doc/ \ + | bzip2 > "$pwd"/docs-${tag}.tar.bz2 +fi +if [ -d "src" ]; then + git archive --prefix='src/' --format=tar ${gittag}:src/ \ + | bzip2 > "$pwd"/src-${tag}.tar.bz2 +fi +if [ -d "tools" ]; then + git archive --prefix='tools/' --format=tar ${gittag}:tools/ \ + | bzip2 > "$pwd"/tools-${tag}.tar.bz2 +fi +if [ -d "scripts" ]; then + git archive --prefix='scripts/' --format=tar ${gittag}:scripts/ \ + | bzip2 > "$pwd"/scripts-${tag}.tar.bz2 +fi +if [ -d "modules" ]; then + git archive --prefix='modules/' --format=tar ${gittag}:modules/ \ + | bzip2 > "$pwd"/modules-${tag}.tar.bz2 +fi +if [ -d "ts" ]; then + git archive --prefix='ts/' --format=tar ${gittag}:ts/ \ + | bzip2 > "$pwd"/ts-${tag}.tar.bz2 +fi +if [ -d "build" ]; then + git archive --prefix='build/' --format=tar ${gittag}:build/ \ + | bzip2 > "$pwd"/build-${tag}.tar.bz2 +fi +if [ -d "fixtures" ]; then + git archive --prefix='fixtures/' --format=tar ${gittag}:fixtures/ \ + | bzip2 > "$pwd"/fixtures-${tag}.tar.bz2 +fi +if [ -d "mocks" ]; then + git archive --prefix='mocks/' --format=tar ${gittag}:mocks/ \ + | bzip2 > "$pwd"/mocks-${tag}.tar.bz2 +fi +if [ -d "typings" ]; then + git archive --prefix='typings/' --format=tar ${gittag}:typings/ \ + | bzip2 > "$pwd"/typings-${tag}.tar.bz2 +fi +popd diff --git a/find-up-2.1.0.tgz b/find-up-2.1.0.tgz new file mode 100644 index 0000000..24904e1 Binary files /dev/null and b/find-up-2.1.0.tgz differ diff --git a/fixture-2.1.0.tar.bz2 b/fixture-2.1.0.tar.bz2 new file mode 100644 index 0000000..6288618 Binary files /dev/null and b/fixture-2.1.0.tar.bz2 differ diff --git a/nodejs-find-up.spec b/nodejs-find-up.spec new file mode 100644 index 0000000..1f85fdd --- /dev/null +++ b/nodejs-find-up.spec @@ -0,0 +1,53 @@ +%{?nodejs_find_provides_and_requires} +%global packagename find-up +%global enable_tests 0 +Name: nodejs-find-up +Version: 2.1.0 +Release: 1 +Summary: Find a file by walking up parent directories +License: MIT +URL: https://github.com/sindresorhus/find-up +Source0: https://registry.npmjs.org/find-up/-/find-up-%{version}.tgz +Source1: fixture-%{version}.tar.bz2 +Source10: dl-tests.sh +Source2: https://raw.githubusercontent.com/sindresorhus/find-up/v%{version}/test.js +ExclusiveArch: %{nodejs_arches} noarch +BuildArch: noarch +BuildRequires: nodejs-packaging npm(locate-path) +%if 0%{?enable_tests} +BuildRequires: npm(ava) +%endif +Requires: nodejs +%description +Find a file by walking up parent directories + +%prep +%setup -q -n package +%setup -q -T -D -a 1 -n package + +%build + +%install +mkdir -p %{buildroot}%{nodejs_sitelib}/%{packagename} +cp -pr package.json *.js \ + %{buildroot}%{nodejs_sitelib}/%{packagename} +%nodejs_symlink_deps + +%check +%nodejs_symlink_deps --check +%{__nodejs} -e 'require("./")' +%if 0%{?enable_tests} +%{_bindir}/ava +%else +%{_bindir}/echo -e "\e[101m -=#=- Tests disabled -=#=- \e[0m" +%endif + +%files +%{!?_licensedir:%global license %doc} +%doc *.md +%license license +%{nodejs_sitelib}/%{packagename} + +%changelog +* Thu Aug 20 2020 Anan Fu - 2.1.0-1 +- package init diff --git a/nodejs-find-up.yaml b/nodejs-find-up.yaml new file mode 100644 index 0000000..7a6b7a0 --- /dev/null +++ b/nodejs-find-up.yaml @@ -0,0 +1,4 @@ +version_control: github +src_repo: sindresorhus/find-up +tag_prefix: "^v" +seperator: "." diff --git a/test.js b/test.js new file mode 100644 index 0000000..557afe2 --- /dev/null +++ b/test.js @@ -0,0 +1,247 @@ +import fs from 'fs'; +import path from 'path'; +import test from 'ava'; +import tempfile from 'tempfile'; +import fn from './'; + +const name = { + pkgDir: 'find-up', + pkg: 'package.json', + fixtureDir: 'fixture', + baz: 'baz.js', + qux: 'qux.js' +}; + +// These paths are relative to the project root +const rel = { + fixtureDir: name.fixtureDir +}; +rel.baz = path.join(rel.fixtureDir, name.baz); +rel.qux = path.join(rel.fixtureDir, name.qux); +rel.barDir = path.join(rel.fixtureDir, 'foo', 'bar'); + +const abs = { + pkgDir: __dirname +}; +abs.pkg = path.join(abs.pkgDir, name.pkg); +abs.fixtureDir = path.join(abs.pkgDir, name.fixtureDir); +abs.baz = path.join(abs.fixtureDir, name.baz); +abs.qux = path.join(abs.fixtureDir, name.qux); +abs.barDir = path.join(abs.fixtureDir, 'foo', 'bar'); + +// Create a disjoint directory, used for the not-found tests +test.beforeEach(t => { + const tmpDir = tempfile(); + fs.mkdirSync(tmpDir); + t.context.disjoint = tmpDir; +}); + +test.afterEach(t => { + fs.rmdirSync(t.context.disjoint); +}); + +test('async (child file)', async t => { + const filePath = await fn(name.pkg); + + t.is(filePath, abs.pkg); +}); + +test('sync (child file)', t => { + const filePath = fn.sync(name.pkg); + + t.is(filePath, abs.pkg); +}); + +test('async (child dir)', async t => { + const filePath = await fn(name.fixtureDir); + + t.is(filePath, abs.fixtureDir); +}); + +test('sync (child dir)', t => { + const filePath = fn.sync(name.fixtureDir); + + t.is(filePath, abs.fixtureDir); +}); + +test('async (child file, custom cwd)', async t => { + const filePath = await fn(name.baz, { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.baz); +}); + +test('sync (child file, custom cwd)', t => { + const filePath = fn.sync(name.baz, { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.baz); +}); + +test('async (child file, array, custom cwd)', async t => { + const filePath = await fn([name.baz], { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.baz); +}); + +test('sync (child file, array, custom cwd)', t => { + const filePath = fn.sync([name.baz], { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.baz); +}); + +test('async (first child file, array, custom cwd)', async t => { + const filePath = await fn([name.qux, name.baz], { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.qux); +}); + +test('sync (first child file, array, custom cwd)', t => { + const filePath = fn.sync([name.qux, name.baz], { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.qux); +}); + +test('async (second child file, array, custom cwd)', async t => { + const filePath = await fn(['fake', name.baz], { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.baz); +}); + +test('sync (second child file, array, custom cwd)', t => { + const filePath = fn.sync(['fake', name.baz], { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.baz); +}); + +test('async (cwd)', async t => { + const filePath = await fn(name.pkgDir, { + cwd: abs.pkgDir + }); + + t.is(filePath, abs.pkgDir); +}); + +test('sync (cwd)', t => { + const filePath = fn.sync(name.pkgDir, { + cwd: abs.pkgDir + }); + + t.is(filePath, abs.pkgDir); +}); + +test('async (cousin file, custom cwd)', async t => { + const filePath = await fn(name.baz, { + cwd: rel.barDir + }); + + t.is(filePath, abs.baz); +}); + +test('sync (cousin file, custom cwd)', t => { + const filePath = fn.sync(name.baz, { + cwd: rel.barDir + }); + + t.is(filePath, abs.baz); +}); + +test('async (nested descendant file)', async t => { + const filePath = await fn(rel.baz); + + t.is(filePath, abs.baz); +}); + +test('sync (nested descendant file)', t => { + const filePath = fn.sync(rel.baz); + + t.is(filePath, abs.baz); +}); + +test('async (nested descendant dir)', async t => { + const filePath = await fn(rel.barDir); + + t.is(filePath, abs.barDir); +}); + +test('sync (nested descendant dir)', t => { + const filePath = fn.sync(rel.barDir); + + t.is(filePath, abs.barDir); +}); + +test('async (nested cousin dir, custom cwd)', async t => { + const filePath = await fn(rel.barDir, { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.barDir); +}); + +test('sync (nested cousin dir, custom cwd)', t => { + const filePath = fn.sync(rel.barDir, { + cwd: rel.fixtureDir + }); + + t.is(filePath, abs.barDir); +}); + +test('async (ancestor dir, custom cwd)', async t => { + const filePath = await fn(name.fixtureDir, { + cwd: rel.barDir + }); + + t.is(filePath, abs.fixtureDir); +}); + +test('sync (ancestor dir, custom cwd)', t => { + const filePath = fn.sync(name.fixtureDir, { + cwd: rel.barDir + }); + + t.is(filePath, abs.fixtureDir); +}); + +test('async (not found)', async t => { + const filePath = await fn('somenonexistentfile.js'); + + t.is(filePath, null); +}); + +test('sync (not found)', t => { + const filePath = fn.sync('somenonexistentfile.js'); + + t.is(filePath, null); +}); + +// Both tests start in a disjoint directory. `package.json` should not be found +// and `null` should be returned. +test('async (not found, custom cwd)', async t => { + const filePath = await fn(name.pkg, { + cwd: t.context.disjoint + }); + + t.is(filePath, null); +}); + +test('sync (not found, custom cwd)', t => { + const filePath = fn.sync(name.pkg, { + cwd: t.context.disjoint + }); + + t.is(filePath, null); +});