প্রকল্প সম্পর্কে
AutoFFF একটি পাইথন-ভিত্তিক যোগ্যতা যা C API হেডার ফাইলের জন্য FFF (Fake Functions Framework) ফেক ফাংশন ডেফিনিশন স্বয়ংক্রিয়ভাবে তৈরি করতে ডিজাইন করা হয়েছে, যা ইম্বെডেড C ইউনিট টেস্টিং-এর একটি সাধারণ সমস্যার সমাধান করে।
এটির মূল সমস্যা হলো, হোস্ট মেশিনে ইম্বেনডেড C কোড টেস্ট করা প্রায়শই অসম্ভব, কারণ হোস্ট আর্কিটেকচার টার্গেট প্ল্যাটফর্ম থেকে ভিন্ন হয়, এবং ইম্বেনডেড পরিবেশে সাধারণত ডাইনামিক লিংকিং-এর সমর্থন থাকে না, পাশাপাশি C-তে রানটাইমে টেস্ট করা কোডকে পরিচালনা করার জন্য কোনো বিল্ট-ইন রানটাইম রিফ্লেকশন ক্ষমতা নেই। টার্গেট প্ল্যাটফর্ম API-কে ফেক ইমplementেশনের সাথে লিংক করে ফেক করা এই সমস্যার সমাধান করে, কিন্তু API ফাংশনের জন্য ম্যানুয়ালি ফেক ডেফিনিশন লেখা ক্লান্তিকর, পরিশ্রমসাধ্য এবং ত্রুটিপ্রবণ, আর ম্যানুয়ালি রক্ষণাবেক্ষণ করা টেস্ট হেডারগুলো মূল API পরিবর্তন হওয়ার সাথে সাথে "কোড রোট"-এর শিকার হয়।
AutoFFF C API হেডার ফাইল বিশ্লেষণ করে এবং FFF-সামঞ্জস্যপূর্ণ ফেক ডেফিনিশন সহ ব্যবহারপ্রস্তুত টেস্ট হেডার তৈরি করে এই প্রক্রিয়ায় স্বয়ংক্রিয়তা এনেছে। এটি "রাপিং" ফেকিং দর্শন অনুসরণ করে: জেনারেটেড টেস্ট হেডারে মূল API হেডার অন্তর্ভুক্ত থাকে যাতে সব ধরনের, চলক ও ফাংশন ডিক্লারেশন উত্তরাধিকারসূত্রে পাওয়া যায়, শুধুমাত্র প্রয়োজনীয় ফেক ডেফিনিশন যোগ করে। এই পদ্ধতি বিকল্প "ব্যানিং" কৌশলের চেয়ে অনেক বেশি রক্ষণাবেক্ষণযোগ্য, যেখানে সকল API উপাদান ম্যানুয়ালি পুনঃডিক্লেয়ার করতে হয় এবং মূল হেডারের সাথে সমন্বয় হারানোর ঝুঁকি থাকে।
যোগ্যতাটি হেডার ফাইলের ভেতরে সরাসরি সংজ্ঞায়িত ফাংশনের জন্য একটি বিল্ট-ইন কাজের জায়গা ধারণ করে, যা সাধারণত ফেক করার সময় রিডিফিনিশন ত্রুটি সৃষ্টি করত। এই কাজের জায়গা ম্যাক্রো রি-রাউটিং ব্যবহার করে, যা কোড under test-এর আগে টেস্ট ফাইলে টেস্ট হেডার অন্তর্ভুক্ত থাকলে মূল ইন-হেডার ফাংশনকে জেনারেটেড ফেকে পাঠিয়ে দেয়।
AutoFFF FreeRTOS বা CMSIS-এর মতো কঠোর ইনক্লুড নীতিমালার লাইব্রেরিগুলোর সাথে কাজ করতে কমান্ড-লাইন অপশনের মাধ্যমে প্রয়োজনীয় হেডার ইনজেক্ট বা প্যার্সিংয়ের সময় প্রিপ্রসেসর ম্যাক্রো সংজ্ঞায়িত করার সুযোগ দেয়। এটি একা কমান্ড-লাইন মডিউল হিসেবে চালাতে, কাস্টম স্ক্রিপ্টে পাইথন প্যাকেজ হিসেবে ব্যবহার করতে অথবা Make-এর মতো বিল্ড সিস্টেমে প্রদত্ত উদাহরণ Makefile-এর মাধ্যমে ইন্টিগ্রেট করতে পারে।
এটি দুটি জেনারেটর মোড সরবরাহ করে: BareFakeGenerator শুধুমাত্র র অ-ফেক ম্যাক্রো ডেফিনিশন আউটপুট দেয়, যেখানে SimpleFakeGenerator ইনক্লুড গার্ড এবং প্রয়োজনীয় ইনক্লুড সহ কমপক্ষে প্রয়োজনীয়, কম্পাইলেবল টেস্ট হেডার তৈরি করে।
AutoFFF MIT লাইসেন্সের অধীনে PyPI-এর মাধ্যমে উপলব্ধ, এবং C প্যার্সিং-এর জন্য pycparser প্রজেক্টের fake_libc_include হেডার সংগ্রহ প্রয়োজন, যা pip রিলিজে অন্তর্ভুক্ত নেই এবং pycparser রিপোজিটরি থেকে আলাদাভাবে সংগ্রহ করতে হবে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.