mirror of
https://github.com/th30d4y/OpenLearnX.git
synced 2026-05-26 11:25:49 +00:00
01f2187e36
Agent-Logs-Url: https://github.com/th30d4y/OpenLearnX/sessions/29d50a49-95d6-4192-8230-96fae71d8219 Co-authored-by: 0x5t4l1n <161853795+0x5t4l1n@users.noreply.github.com>
140 lines
3.4 KiB
Bash
Executable File
140 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# OpenLearnX v2.0.4 NPM Publishing Test Script
|
|
# This script validates the package before publishing to NPM
|
|
|
|
set -e
|
|
|
|
echo "🚀 OpenLearnX v2.0.4 - NPM Publishing Test"
|
|
echo "==========================================="
|
|
echo ""
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Helper functions
|
|
pass() {
|
|
echo -e "${GREEN}✅ $1${NC}"
|
|
}
|
|
|
|
fail() {
|
|
echo -e "${RED}❌ $1${NC}"
|
|
exit 1
|
|
}
|
|
|
|
warn() {
|
|
echo -e "${YELLOW}⚠️ $1${NC}"
|
|
}
|
|
|
|
# Test 1: Check if we're in the right directory
|
|
echo "📁 Test 1: Checking directory structure..."
|
|
if [ -f "frontend/package.json" ]; then
|
|
pass "Found frontend/package.json"
|
|
else
|
|
fail "Not in correct directory. Run from project root."
|
|
fi
|
|
|
|
# Test 2: Verify package.json structure
|
|
echo ""
|
|
echo "📦 Test 2: Validating package.json..."
|
|
cd frontend
|
|
|
|
if [ ! -f "package.json" ]; then
|
|
fail "package.json not found in frontend/"
|
|
fi
|
|
|
|
# Check for required fields
|
|
if grep -q '"name": "@th30d4y/openlearnx"' package.json; then
|
|
pass "Package name is correct: @th30d4y/openlearnx"
|
|
else
|
|
fail "Package name is incorrect or missing"
|
|
fi
|
|
|
|
if grep -q '"version": "2.0.4"' package.json; then
|
|
pass "Version is correct: 2.0.4"
|
|
else
|
|
fail "Version is not 2.0.4"
|
|
fi
|
|
|
|
if grep -q '"private": false' package.json; then
|
|
pass "Package is public (private: false)"
|
|
else
|
|
fail "Package is marked as private"
|
|
fi
|
|
|
|
if grep -q 'https://registry.npmjs.org' package.json; then
|
|
pass "Publishing to correct registry: npmjs.org"
|
|
else
|
|
fail "Publishing registry not configured correctly"
|
|
fi
|
|
|
|
# Test 3: Check for link: dependencies
|
|
echo ""
|
|
echo "🔗 Test 3: Checking for local link: dependencies..."
|
|
if grep -q 'link:' package.json; then
|
|
fail "Found link: dependencies that break NPM publishing. Package has been fixed."
|
|
else
|
|
pass "No link: dependencies found ✅"
|
|
fi
|
|
|
|
# Test 4: Validate JSON
|
|
echo ""
|
|
echo "🔍 Test 4: Validating JSON syntax..."
|
|
if node -e "JSON.parse(require('fs').readFileSync('package.json', 'utf8'))" 2>/dev/null; then
|
|
pass "package.json has valid JSON syntax"
|
|
else
|
|
fail "package.json has invalid JSON syntax"
|
|
fi
|
|
|
|
# Test 5: Check npm is installed
|
|
echo ""
|
|
echo "📋 Test 5: Checking NPM installation..."
|
|
if command -v npm &> /dev/null; then
|
|
npm_version=$(npm --version)
|
|
pass "npm is installed (version: $npm_version)"
|
|
else
|
|
fail "npm is not installed"
|
|
fi
|
|
|
|
# Test 6: Verify npm registry access
|
|
echo ""
|
|
echo "🌐 Test 6: Checking npm registry access..."
|
|
if npm ping --registry https://registry.npmjs.org 2>/dev/null; then
|
|
pass "Connected to NPM registry"
|
|
else
|
|
warn "Could not reach NPM registry (might need internet)"
|
|
fi
|
|
|
|
# Test 7: Check npm login status
|
|
echo ""
|
|
echo "🔐 Test 7: Checking npm authentication..."
|
|
if npm whoami 2>/dev/null > /dev/null; then
|
|
logged_in_user=$(npm whoami 2>/dev/null)
|
|
pass "Logged in as: $logged_in_user"
|
|
else
|
|
warn "Not logged in to npm. You'll need to run: npm login"
|
|
fi
|
|
|
|
# Test 8: Dry run of package creation
|
|
echo ""
|
|
echo "📦 Test 8: Testing package creation (dry run)..."
|
|
if npm pack --dry-run 2>&1 | grep -q "@th30d4y/openlearnx@2.0.4"; then
|
|
pass "Package would be created successfully"
|
|
else
|
|
fail "Package creation test failed"
|
|
fi
|
|
|
|
echo ""
|
|
echo "==========================================="
|
|
echo -e "${GREEN}✅ All tests passed!${NC}"
|
|
echo ""
|
|
echo "🚀 Ready to publish:"
|
|
echo " npm publish"
|
|
echo ""
|
|
echo "Or test locally first:"
|
|
echo " npm pack && tar -tzf th30d4y-openlearnx-2.0.4.tgz | head -20"
|
|
echo ""
|