1+ #! /bin/bash
2+
3+ # Create test fixtures for all package managers
4+ FIXTURES_DIR=" $( dirname " $0 " ) "
5+
6+ # JavaScript Package Managers
7+ echo " Creating JavaScript package manager fixtures..."
8+
9+ # NPM
10+ mkdir -p " $FIXTURES_DIR /js-npm"
11+ cat > " $FIXTURES_DIR /js-npm/package.json" << 'EOF '
12+ {
13+ "name": "test-npm",
14+ "version": "1.0.0",
15+ "scripts": {
16+ "test": "echo 'npm test'",
17+ "build": "echo 'npm build'"
18+ }
19+ }
20+ EOF
21+ touch " $FIXTURES_DIR /js-npm/package-lock.json"
22+
23+ # Yarn
24+ mkdir -p " $FIXTURES_DIR /js-yarn"
25+ cat > " $FIXTURES_DIR /js-yarn/package.json" << 'EOF '
26+ {
27+ "name": "test-yarn",
28+ "version": "1.0.0",
29+ "packageManager": "yarn@3.0.0",
30+ "scripts": {
31+ "test": "echo 'yarn test'",
32+ "build": "echo 'yarn build'"
33+ }
34+ }
35+ EOF
36+ touch " $FIXTURES_DIR /js-yarn/yarn.lock"
37+
38+ # PNPM
39+ mkdir -p " $FIXTURES_DIR /js-pnpm"
40+ cat > " $FIXTURES_DIR /js-pnpm/package.json" << 'EOF '
41+ {
42+ "name": "test-pnpm",
43+ "version": "1.0.0",
44+ "scripts": {
45+ "test": "echo 'pnpm test'",
46+ "build": "echo 'pnpm build'"
47+ }
48+ }
49+ EOF
50+ touch " $FIXTURES_DIR /js-pnpm/pnpm-lock.yaml"
51+
52+ # Bun
53+ mkdir -p " $FIXTURES_DIR /js-bun"
54+ cat > " $FIXTURES_DIR /js-bun/package.json" << 'EOF '
55+ {
56+ "name": "test-bun",
57+ "version": "1.0.0",
58+ "scripts": {
59+ "test": "echo 'bun test'",
60+ "build": "echo 'bun build'"
61+ }
62+ }
63+ EOF
64+ touch " $FIXTURES_DIR /js-bun/bun.lockb"
65+
66+ # Python Package Managers
67+ echo " Creating Python package manager fixtures..."
68+
69+ # Pip
70+ mkdir -p " $FIXTURES_DIR /py-pip"
71+ cat > " $FIXTURES_DIR /py-pip/requirements.txt" << 'EOF '
72+ flask==2.0.0
73+ requests==2.28.0
74+ EOF
75+
76+ # Pipenv
77+ mkdir -p " $FIXTURES_DIR /py-pipenv"
78+ cat > " $FIXTURES_DIR /py-pipenv/Pipfile" << 'EOF '
79+ [[source]]
80+ url = "https://pypi.org/simple"
81+ verify_ssl = true
82+ name = "pypi"
83+
84+ [packages]
85+ flask = "==2.0.0"
86+
87+ [dev-packages]
88+ pytest = "*"
89+ EOF
90+ touch " $FIXTURES_DIR /py-pipenv/Pipfile.lock"
91+
92+ # Poetry
93+ mkdir -p " $FIXTURES_DIR /py-poetry"
94+ cat > " $FIXTURES_DIR /py-poetry/pyproject.toml" << 'EOF '
95+ [tool.poetry]
96+ name = "test-poetry"
97+ version = "0.1.0"
98+ description = "Test Poetry project"
99+
100+ [tool.poetry.dependencies]
101+ python = "^3.8"
102+ flask = "^2.0.0"
103+
104+ [tool.poetry.dev-dependencies]
105+ pytest = "^7.0.0"
106+ EOF
107+ touch " $FIXTURES_DIR /py-poetry/poetry.lock"
108+
109+ # UV
110+ mkdir -p " $FIXTURES_DIR /py-uv"
111+ cat > " $FIXTURES_DIR /py-uv/pyproject.toml" << 'EOF '
112+ [project]
113+ name = "test-uv"
114+ version = "0.1.0"
115+ dependencies = [
116+ "flask>=2.0.0",
117+ ]
118+
119+ [tool.uv]
120+ dev-dependencies = [
121+ "pytest>=7.0.0",
122+ ]
123+ EOF
124+ touch " $FIXTURES_DIR /py-uv/uv.lock"
125+
126+ # Conda
127+ mkdir -p " $FIXTURES_DIR /py-conda"
128+ cat > " $FIXTURES_DIR /py-conda/environment.yml" << 'EOF '
129+ name: test-conda
130+ dependencies:
131+ - python=3.9
132+ - flask=2.0.0
133+ - pip:
134+ - requests==2.28.0
135+ EOF
136+
137+ # Workspace configurations
138+ echo " Creating workspace fixtures..."
139+
140+ # NPM Workspace
141+ mkdir -p " $FIXTURES_DIR /workspace-npm/packages/app"
142+ cat > " $FIXTURES_DIR /workspace-npm/package.json" << 'EOF '
143+ {
144+ "name": "npm-workspace",
145+ "version": "1.0.0",
146+ "workspaces": [
147+ "packages/*"
148+ ]
149+ }
150+ EOF
151+ cat > " $FIXTURES_DIR /workspace-npm/packages/app/package.json" << 'EOF '
152+ {
153+ "name": "@workspace/app",
154+ "version": "1.0.0"
155+ }
156+ EOF
157+ touch " $FIXTURES_DIR /workspace-npm/package-lock.json"
158+
159+ # PNPM Workspace
160+ mkdir -p " $FIXTURES_DIR /workspace-pnpm/packages/app"
161+ cat > " $FIXTURES_DIR /workspace-pnpm/pnpm-workspace.yaml" << 'EOF '
162+ packages:
163+ - 'packages/*'
164+ EOF
165+ cat > " $FIXTURES_DIR /workspace-pnpm/package.json" << 'EOF '
166+ {
167+ "name": "pnpm-workspace",
168+ "version": "1.0.0"
169+ }
170+ EOF
171+ cat > " $FIXTURES_DIR /workspace-pnpm/packages/app/package.json" << 'EOF '
172+ {
173+ "name": "@workspace/app",
174+ "version": "1.0.0"
175+ }
176+ EOF
177+ touch " $FIXTURES_DIR /workspace-pnpm/pnpm-lock.yaml"
178+
179+ # Yarn Workspace
180+ mkdir -p " $FIXTURES_DIR /workspace-yarn/packages/app"
181+ cat > " $FIXTURES_DIR /workspace-yarn/package.json" << 'EOF '
182+ {
183+ "name": "yarn-workspace",
184+ "version": "1.0.0",
185+ "workspaces": [
186+ "packages/*"
187+ ]
188+ }
189+ EOF
190+ cat > " $FIXTURES_DIR /workspace-yarn/packages/app/package.json" << 'EOF '
191+ {
192+ "name": "@workspace/app",
193+ "version": "1.0.0"
194+ }
195+ EOF
196+ touch " $FIXTURES_DIR /workspace-yarn/yarn.lock"
197+
198+ echo " Fixtures created successfully!"
0 commit comments